成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

帥呆了!Kafka移除了Zookeeper!

開發(fā) 架構 Kafka
普天同慶!最新版的Kafka 2.8.0,移除了對Zookeeper的依賴,通過KRaft進行自己的集群管理。很好很好,終于有點質(zhì)的改變了。

[[396651]]

本文轉(zhuǎn)載自微信公眾號「小姐姐味道」,作者小姐姐養(yǎng)的狗。轉(zhuǎn)載本文請聯(lián)系小姐姐味道公眾號。  

普天同慶!最新版的Kafka 2.8.0,移除了對Zookeeper的依賴,通過KRaft進行自己的集群管理。很好很好,終于有點質(zhì)的改變了。

一聽到KRaft,我們就想到了Raft協(xié)議。Raft協(xié)議是當今最流行的分布式協(xié)調(diào)算法,Etcd、Consul等系統(tǒng)的基礎,就來自于此?,F(xiàn)在Kafka也有了。

由于這個功能太新了,所以2.8.0版本默認還是要用ZooKeeper的,但并不妨礙我們嘗嘗鮮。另外,不要太激動了,據(jù)官方聲稱有些功能還不是太完善,所以不要把它用在線上。

1. 如何開始KRaft?

Kafka使用內(nèi)嵌的KRaft替代了ZooKeeper,是一個非常大的進步,因為像ES之類的分布式系統(tǒng),這種集群meta信息的同步,都是自循環(huán)的。

但如何使用KRaft啟動呢?很多同學直接暈菜了,這方面的資料也比較少,但使用起來非常簡單。

我們注意到,在config目錄下,多了一個叫做kraft的目錄,里面包含著一套新的配置文件,可以直接摒棄對ZK的依賴。

通過下面三行命令,即可開啟一個單機的broker,從始至終沒有ZK的參與。

  1. # ./bin/kafka-storage.sh random-uuid 
  2. # ./bin/kafka-storage.sh format -t TBYU7WMiREexuZqrjKG60g -c ./config/kraft/server.properties 
  3. # ./bin/kafka-server-start.sh ./config/kraft/server.properties 

經(jīng)過一陣噼里啪啦的運行,No ZK的Kafka已經(jīng)啟動起來了。

就是這么簡單。

2. 如何配置的?

kafka又加了一個內(nèi)部主題,叫做@metadata,用來存這些元信息。

接下來我們就要看一些關鍵的配置信息。你可以使用vimdiff config/server.properties config/kraft/server.properties看一下這些主要的區(qū)別。

首先,kraft多了一個叫做process.roles的配置。在我們的配置文件里它是這樣的。

  1. process.roles=broker,controller 

它其實有三個取值。

  • broker: 這臺機器將僅僅當作一個broker
  • controller: 作為 Raft quorum的控制器之一進行啟動
  • broker,controller: 包含兩者的功能

熟悉ES的同學可以看出,這些劃分就像是es的master和node,所以分布式的概念其實在一定程度上是相通的。

接下來是監(jiān)聽地址的變化,因為我們的server有了兩個功能,所以也就需要開啟兩個端口。

  1. listeners=PLAINTEXT://:9092,CONTROLLER://:9093 

另外,還有一個叫做node.id的東西。不同于原來的broker.id,這個nodeid是用來投票用的。

  1. node.id=1 

因為raft協(xié)議的特性,我們的投票配置就要使用上面的node.id。寫起來比較怪異是不是?但總比Zk的好看多了。所以這些配置在后面的版本是有可能改動的。

  1. controller.quorum.voters=1@localhost:9093 

這就是配置文件的主要區(qū)別。我們來看看它的集合。

  1. process.roles=broker,controller  
  2. listeners=PLAINTEXT://:9092,CONTROLLER://:9093 
  3. node.id=1    
  4. controller.quorum.voters=1@localhost:9093 

3. 為什么要干掉ZK?

Kafka作為一個消息隊列,竟然要依賴一個重量級的協(xié)調(diào)系統(tǒng)ZooKeeper,不得不說是一個笑話。同樣作為消息隊列,人家RabbitMQ早早的就實現(xiàn)了自我管理。

Zookeeper非常笨重,還要求奇數(shù)個節(jié)點的集群配置,擴容和縮容也不方便。Zk的配置方式,也和kafka的完全不一樣,要按照調(diào)優(yōu)Kafka,竟然還要兼顧另外一個系統(tǒng),這真是日了狗了。

Kafka要想往輕量級,開箱即用的方向發(fā)展,就不得不干掉Zk。

另外,由于Zk和Kafka畢竟不是在一個存儲體系里面,當Topic和Partition的數(shù)量上了規(guī)模,數(shù)據(jù)同步問題就變的顯著起來。Zk是可靠,但是它慢啊,完全不如放在Kafka的日志存儲體系里面,這對標榜速度的Kafka來說,是不得不繞過的一環(huán)。

使用過Kafka-admin的同學,應該都對緩慢的監(jiān)控數(shù)據(jù)同步歷歷在目。它需要先從zk上轉(zhuǎn)一圈,獲取一些元數(shù)據(jù)信息,然后再從Kafka的JMX接口中拉取數(shù)據(jù)。這么一轉(zhuǎn)悠,就幾乎讓大型集群死翹翹。

4. 會有哪些改變?

部署更簡單。

首先,部署變的更加簡單。對于一些不太追求高可用的系統(tǒng),甚至一個進程就能把可愛的kafka跑起來。我們也不需要再申請對zookeeper友好的SSD磁盤,也不用再關注zk的容量是不是夠用了。

監(jiān)控更便捷。

其次,由于信息的集中,從Kafka獲取監(jiān)控信息,就變得輕而易舉,不用再到zk里轉(zhuǎn)一圈了。與grafana/kibana/promethus等系統(tǒng)的集成,指日可待。

速度更快捷。

最重要的當然是速度了。Raft比ZK的ZAB協(xié)議更加易懂,也更加高效,partition的主選舉將變得更快捷,controller的調(diào)度速度將上一個檔次。

以后,再也不會有這樣的連接方式。

  1. zookeeper.connect=zookeeper:2181 

取而代之的,只會剩下bootstrap的連接方式。Kafka的節(jié)點,越來越像對等節(jié)點。

  1. bootstrap.servers=broker:9092 

kafka還提供了一個叫做kafka-metadata-shell.sh的工具,能夠看到topic和partion的分布,這些信息原來是可以通過zk獲取的,現(xiàn)在可以使用這個命令行獲取。

  1. $ ./bin/kafka-metadata-shell.sh  --snapshot /tmp/kraft-combined-logs/\@metadata-0/00000000000000000000.log 
  2. >> ls / 
  3. brokers  local  metadataQuorum  topicIds  topics 
  4. >> ls /topics 
  5. foo 
  6. >> cat /topics/foo/0/data 
  7.   "partitionId" : 0, 
  8.   "topicId" : "5zoAlv-xEh9xRANKXt1Lbg"
  9.   "replicas" : [ 1 ], 
  10.   "isr" : [ 1 ], 
  11.   "removingReplicas" : null
  12.   "addingReplicas" : null
  13.   "leader" : 1, 
  14.   "leaderEpoch" : 0, 
  15.   "partitionEpoch" : 0 
  16. >> exit 

最后,還是要提醒一下,目前不要在線上環(huán)境開啟這個功能,還是老老實實用ZK吧。功能就是原因,因為這些功能的配套設施還沒有到位,代碼也沒有達到讓人放心的程度。你要是用了,很可能會因為工具不全或者難纏的bug痛不欲生。

不過,這勇敢的第一步已經(jīng)賣出,方向也已經(jīng)指明,我們剩下的就是等待了。無論如何,干掉Zk,是件大好事。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2025-03-25 07:54:15

2021-07-26 11:27:28

TwitterFLoCGoogle

2021-06-18 12:48:03

MacOSPHPApple

2024-10-17 16:41:57

KafkaZooKeeper

2022-12-28 09:17:53

ApacheZookeeperProposals

2018-12-29 12:38:40

Google Fuchsia技術

2022-12-22 18:04:58

SpringKilburn

2024-01-11 09:53:16

Kafka中間件編程語言

2018-07-27 08:47:06

GitHub代碼開發(fā)者

2021-04-21 17:54:02

KafkaZookeeper場景

2022-07-26 17:28:33

蘋果MacBook英特爾

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2025-03-26 08:30:07

KafkaZooKeeper部署

2015-05-27 13:46:00

OS X YosemiDNS解析

2021-04-30 08:29:16

KafkaZooKeeper分布式

2021-04-21 12:29:45

KafkaZookeeper模型

2024-07-01 13:58:07

2023-06-29 07:43:20

監(jiān)控數(shù)據(jù)Java

2025-05-13 04:00:10

KafkaZooKeeper模式

2014-06-20 10:30:31

DalvikART
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久 | 欧美高清性xxxxhdvideosex | 神马久久av | 日本一区二区三区免费观看 | 一本一道久久a久久精品综合蜜臀 | 九九亚洲 | 激情五月婷婷丁香 | 在线观看亚洲精品 | 久久精品国产99国产精品 | 午夜久久久 | 国产色99精品9i | 中文字幕高清av | 粉嫩av| 国产精品theporn| 黑色丝袜三级在线播放 | 国产免费一区 | 一区在线免费视频 | 国产成人福利 | 欧美视频xxx| 亚洲一区毛片 | 一区中文字幕 | 精品欧美乱码久久久久久 | 国产精品久久久久久吹潮 | 羞羞网站在线观看 | 日韩一 | 一区二区小视频 | 中国av在线免费观看 | 伊人久久综合影院 | 特黄特色大片免费视频观看 | 中文字幕在线看第二 | 国产精品视频久久久 | 日韩精品一区二区三区视频播放 | 国内激情av片 | 久久偷人 | 精品视频久久久久久 | 国产精品免费一区二区三区四区 | 欧美一区二区三区视频在线 | 三级黄色片在线观看 | 亚洲人的av | 在线播放国产一区二区三区 | 婷婷在线视频 |