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

基礎概念、架構和新版的升級-Kafka知識體系(一)

開發 架構 Kafka
Kafka 是一種高吞吐量、分布式、基于發布/訂閱的消息系統,最初由 LinkedIn 公司開發,使用 Scala (JAVA)語言編寫,目前是Apache 的開源項目。

[[408780]]

概念

  • Kafka 是一種高吞吐量、分布式、基于發布/訂閱的消息系統,最初由 LinkedIn 公司開發,使用 Scala (JAVA)語言編寫,目前是Apache 的開源項目。
  • 主要解決應用解耦、異步消息、流量削峰等問題。
  • Kafka實際上也是一個主從架構,有一個Controller角色即控制器,協調管理整個集群。

關鍵術語

broker

Kafka 服務器,負責消息存儲和轉發。

topic

消息類別,Kafka 按照topic 來分類消息;似于關系型數據庫的表。

partition

topic 的分區,一個 topic 可以包含多個 partition ,topic 消息保存在各個 partition 上。

offset

消息在日志中的位置,可以理解是消息在partition 上的偏移量,也是代表該消息的唯一序號。

Producer

消息生產者,將消息push到Kafka集群中的Broker。

Consumer

消息消費者,從Kafka集群中pull消息,消費消息。

Consumer Group

消費者分組,每個Consumer 必須屬于一個group

Zookeeper

保存著集群broker、topic、partition 等meta 數據;另外,還負責broker 故 障發現,partition leader 選舉,負載均衡等功能。

從抽象到具體理解Kafka架構設計

從宏觀的層面來理解,它就是一個存儲系統。

細分一下,又有多個生產者,多個消費者,Broker 集群和Kafka 組成。

再次細分,broker有一個controller角色,每一個broker 可能存多個Topic的不同partion,每個partion 都有 leader 和follower 。這些信息都會注冊到zk上。

集群架構的理解及新版優化

控制器 controller

我們熟知一個規律:在大數據分布式文件系統里面,95%的都是主從式的架構,個別是對等式的架構,比如ElasticSearch。

kafka也是主從式的架構,主節點就叫controller,其余的為從節點,controller是需要和zookeeper進行配合管理整個kafka集群。

作用

協調與管理整個集群。

職責

  • 主題增刪改
  • 分區重分配
  • leader選舉
  • 元數據管理
  • broker成員管理,宕機或加入

控制器選舉

基于zookeeper實現,利用了zookeeper的znode模型與監聽機制。

控制器故障轉移

存在單點故障,但是每個broker節點都可以成為controller;

故障轉移即failover也是基于zookeeper實現的,znode模型與監聽機制,/controller節點。

kafka和zookeeper如何配合工作

  1. kafka嚴重依賴于zookeeper集群。
  2. 所有的broker在啟動的時候都會往zookeeper進行注冊,目的就是選舉出一個controller
  3. 選舉過程非常簡單粗暴,就是一個誰先誰當的過程,不涉及什么算法問題。
  4. 成為controller之后,它會監聽zookeeper里面的多個目錄.
  5. 注冊時各個節點必定會暴露自己的主機名,端口號等等的信息,此時controller就要去讀取注冊上來的從節點的數據(通過監聽機制),生成集群的元數據信息,之后把這些信息都分發給其他的服務器,讓其他服務器能感知到集群中其它成員的存在。

新版Kafka將要拋棄ZooKeeper!!!!!!

2021年3月30日,Kafka背后的企業Confluent發布博客表示,在即將發布的 2.8 版本里,用戶可在完全不需要 ZooKeeper 的情況下運行 Kafka,該版本將依賴于 ZooKeeper 的控制器改造成了基于 Kafka Raft 的 Quorm 控制器。

在之前的版本中,如果沒有 ZooKeeper,Kafka 將無法運行。但管理部署兩個不同的系統不僅讓運維復雜度翻倍,還讓 Kafka 變得沉重,進而限制了 Kafka 在輕量環境下的應用,同時 ZooKeeper 的分區特性也限制了 Kafka 的承載能力。

第一次,用戶可以在沒有 ZooKeeper 的情況下運行 Kafka。

這是一次架構上的重大升級,讓一向“重量級”的 Kafka 從此變得簡單了起來。輕量級的單進程部署可以作為 ActiveMQ 或 RabbitMQ 等的替代方案,同時也適合于邊緣場景和使用輕量級硬件的場景。

為什么要拋棄使用了十年的 ZooKeeper?

zk的缺點:

  • zookeeper 的一個缺點就是 同步數據不能太大。
  • zookeeper集群中leader和follower同步數據的極限值是500M,這500M的數據,加載到內存中,大約占用3個G的內存。
  • 數據過大,在每次選舉之后,需要從server同步到follower,容易造成下面2個問題:
  1. 觸發重新選舉
  2. io 太久

ZooKeeper 充當 Kafka 的領導者,以更新集群中的拓撲更改;根據 ZooKeeper 提供的通知,生產者和消費者發現整個 Kafka 集群中是否存在任何新 Broker 或 Broker 失敗。大多數的運維操作,比如說擴容、分區遷移等等,都需要和 ZooKeeper 交互。

也就是說,Kafka 代碼庫中有很大一部分是負責實現在集群中多個 Broker 之間分配分區(即日志)、分配領導權、處理故障等分布式系統的功能。而早已經過業界廣泛使用和驗證過的 ZooKeeper 是分布式代碼工作的關鍵部分。

假設沒有 ZooKeeper 的話,Kafka 甚至無法啟動進程,但嚴重依賴 ZooKeeper,也給 Kafka 帶來了掣肘。

不過目前大部分用的還是和zk結合版本的kafka。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-07-09 07:15:48

RocketMQ數據結構kafka

2012-03-08 11:13:23

企業架構

2021-07-07 07:06:31

Brokerkafka架構

2021-07-16 18:44:42

RocketMQ知識

2021-07-05 06:26:08

生產者kafka架構

2021-07-08 05:52:34

Kafka架構主從架構

2015-07-28 17:52:36

IOS知識體系

2017-06-22 13:07:21

2017-02-27 16:42:23

Spark識體系

2017-04-03 15:35:13

知識體系架構

2021-07-08 07:16:24

RocketMQ數據結構Message

2017-01-23 13:40:43

2021-07-14 17:18:14

RocketMQ消息分布式

2021-07-07 15:29:52

存儲RocketMQ體系

2021-07-13 11:52:47

順序消息RocketMQkafka

2015-07-16 10:15:44

web前端知識體系

2020-07-30 07:50:56

數據分析

2020-10-26 08:34:18

知識體系普適性

2020-09-09 09:15:58

Nginx體系進程

2020-03-09 10:31:58

vue前端開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区中文字幕 | 色网在线看 | 国产美女特级嫩嫩嫩bbb片 | 国产一级免费视频 | 欧美成人精品二区三区99精品 | 免费v片| 成人在线视频一区 | 在线观看精品视频网站 | 精品久久久久久 | 日韩一区二区视频 | a精品视频 | 一区二区在线 | 国产一区二区三区 | 男女羞羞视频免费看 | 国产成人免费视频网站视频社区 | 天天躁日日躁狠狠的躁天龙影院 | 国产精品久久久久久久久久久久久久 | 国产乱码精品一区二区三区五月婷 | 亚洲成人综合在线 | 欧美在线视频不卡 | 国产精品一二区 | 四季久久免费一区二区三区四区 | 国产午夜三级一区二区三 | 亚洲在线观看视频 | 亚州综合在线 | 99福利在线观看 | 亚洲国产精品成人无久久精品 | 色婷综合网| 国产伦精品一区二区三区高清 | 午夜视频大全 | 国产乱码精品一区二区三区中文 | 国产在线精品免费 | 人人干97 | 欧美日韩三级 | 久久久久久国产一区二区三区 | 中文字幕第一页在线 | 中文字幕在线观看视频一区 | 成人h视频 | 在线天堂免费中文字幕视频 | 国产精品久久久久久吹潮日韩动画 | 亚洲国产成人在线观看 |