精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Kafka如何修改分區Leader

開發 架構 Kafka
需要Controller 重選舉, 頻繁的選舉肯定是對生產環境有影響的;Controller承擔了非常多的責任,比如分區副本重分配、刪除topic、Leader選舉 等等還有很多都是它在干!

前幾天有個群友問我: kafka如何修改優先副本? 他們有個需求是, 想指定某個分區中的其中一個副本為Leader

在這里插入圖片描述

需求分析

對于這么一個問題,在我們生產環境還是挺常見的,經常有需要修改某個Topic中某分區的Leader

比如 topic1-0這個分區有3個副本[0,1,2], 按照「優先副本」的規則

那么 0 號副本肯定就是Leader了 我們都知道分區中的只有Leader副本才會提供讀寫副本

其他副本作為備份 假如在某些情況下,「0」 號副本性能資源不夠,或者網絡不太好,或者IO壓力比較大

那么肯定對Topic的整體讀寫性能有很大影響, 這個時候切換一臺壓力較小副本作為Leader就顯得很重要;

優先副本: 分區中的AR(所有副本)信息, 優先選擇排在第一位的副本作為Leader

Leader機制: 分區中只有一個Leader來承擔讀寫,其他副本只是作為備份

那么如何實現這樣一個需求呢?

解決方案

知道了原理之后,我們就能想到對應的解決方案了 只要將 分區的 AR 中的第一個位置,替換成你指定副本就行了;AR = { 0,1,2 } ==> AR = {2,1,0}

一般能夠達到這個目的有兩種方案,下面我們來分析一下

方案一: 分區副本重分配

之前關于分區副本重分配 我已經寫過很多文章了,如果想詳細了解 分區副本重分配、數據遷移、副本擴縮容 可以看看鏈接的文章, 這里我就簡單說一下;

一般分區副本重分配主要有三個流程

  • 生成推薦的遷移Json文件
  • 執行遷移Json文件
  • 驗證遷移流程是否完成

這里我們主要看第2步驟, 來看看遷移文件一般是什么樣子的

  1.  "version": 1, 
  2.  "partitions": [{ 
  3.   "topic""topic1"
  4.   "partition": 0, 
  5.   "replicas": [0,1,2] 
  6.  }] 

這個遷移Json意思是, 把topic1的「0」號分區的副本分配成[0,1,2] ,也就是說 topic1-0號分區最終有3個副本分別在 {brokerId-0,brokerId-1,brokerId-2} ;

如果你有看過我之前寫的 分區副本重分配原理源碼分析 ,那么肯定就知道

不管你之前的分配方式是什么樣子的, 最終副本分配都是 [0,1,2] , 之前副本多的,會被刪掉,少的會被新增;

那么我們想要實現 我們的需求 是不是把這個Json文件 中的 "replicas": [0,1,2] 改一下就行了

比如改成 "replicas": [2,1,0] 改完Json后執行,執行execute, 正式開始重分配流程! 遷移完成之后, 就會發現,Leader已經變成上面的第一個位置的副本「2」 了

優缺點

優點: 實現了需求, 并且主動切換了Leader

缺點: 操作比較復雜容易出錯,需要先獲取原先的分區分配數據,然后手動修改Json文件,這里比較容易出錯,影響會比較大,當然這些都可以通過校驗接口來做好限制, 最重要的一點是 副本重分配當前只能有一個任務 ! 假如你當前有一個「副本重分配」的任務在,那么這里就不能夠執行了, 「副本重分配」是一個比較「重」 了的操作,出錯對集群的影響比較大

方案二: 手動修改AR順序

首先,我們知道分區副本的分配數據是保存在zookeeper中的節點brokers/topics/{topicName} 中; 我們看個Topic1的節點數據例子;

  1.  "version": 2, 
  2.  "partitions": { 
  3.   "2": [3, 2, 1], 
  4.   "1": [2, 1, 3], 
  5.   "4": [2, 3, 1], 
  6.   "0": [1, 3, 2], 
  7.   "3": [1, 2, 3] 
  8.  }, 
  9.  "adding_replicas": {}, 
  10.  "removing_replicas": {} 

數據解釋:version:版本信息, 現在有 「1」、「2」 兩個版本

removing_replicas:需要刪除的副本數據, 在進行分區副本重分配過程中, 多余的副本會在數據遷移快完成的時候被刪除掉,刪除成功這里的數據會被清除

adding_replicas:需要新增的副本數據,在進行分區副本重分配過程中, 新增加的副本將會被新增,新增完成這里的數據會清除;

partitions:Topic的所有分區副本分配方式; 上面表示總共有5個分區,以及對應的副本位置;

知道了這些之后,想要修改優先副本,是不是可以通過直接修改zookeeper中的節點數據就行了; 比如 我們把 「1」號分區的副本位置改成 [2,1,3]

改成這樣之后, 還需要 執行 重新進行優先副本選舉操作 ,例如通過kafka的命令執行

  1. sh bin/kafka-leader-election.sh --bootstrap-server xxxx:9090 --topic Topic1--election-type PREFERRED --partition 1 

--election-type : PREFERRED 這個表示的以優先副本的方式進行重新選舉

那么做完這兩步之后, 我們的修改優先副本的目的就達成了.........嗎 ?

實則并沒有, 因為這里僅僅只是修改了 zookeeper節點的數據

而bin/kafka-leader-election.sh 重選舉的操作是Controller來進行的; 如果你對Controller的作用和源碼足夠了解

肯定知道Controller里面保存了每個Topic的分區副本信息, 是保存在JVM內存中的, 然后我們手動修改Zookeeper中的節點,并沒有觸發 Controller更新自身的內存

也就是說 就算我們執行了kafka-leader-election.sh, 它也不會有任何變化,因為優先副本沒有被感知到修改了;

解決這個問題也很簡單,讓Controller感知到數據的變更就行了 最簡單的方法, 讓Controller發生重新選舉, 數據重新加載!

手動修改zookeeper中的「AR」順序

Controller 重新選舉

執行 分區副本重選舉操作(優先副本策略)

簡單代碼

當然上面功能,肯定是要集成到LogiKM中的咯; 簡單代碼如下

  1. // 這里轉換成HashMap類型,切勿自定義類型,以防kafka節點數據后續新增數據節點,導致數據丟失 
  2. HashMap partitionMap = zkConfig.get(ZkPathUtil.getBrokerTopicRoot(topicName), HashMap.class); 
  3. JSONObject partitionJson = (JSONObject)partitionMap.get("partitions"); 
  4. JSONArray partitions = (JSONArray)partitionJson.get(partition); 
  5.  
  6. //部分代碼省略 
  7.  
  8. //調換序列 優先副本 
  9. Integer first = partitions.getInteger(0); 
  10. partitions.set(0,targetBroker); 
  11. partitions.set(index,first);             
  12.  
  13. zkUtils = ZookeeperUtils.getKafkaZkUtils(clusterDO.getZookeeper()); 
  14. String json = JSON.toJSONString(partitionMap); 
  15.  
  16. zkUtils.updatePersistentPath(ZkPathUtil.getBrokerTopicRoot(topicName), json,null); 
  17.  
  18. //寫入成功之后觸發一下 異步去優先副本選舉 
  19. new Thread(()->{ 
  20.     try { 
  21.         // 1. 先讓Controller重新選舉 (不然上面修改的還沒有生效)  (TODO.. 待優化  -> 頻繁的Controller重選舉對集群性能會有影響) 
  22.         zkConfig.deletePath(ZkPathUtil.CONTROLLER_ROOT_NODE); 
  23.         // 等待 Controller 選舉一下 
  24.         Thread.sleep(1000); 
  25.         //2. 然后再發起副本重新選舉 
  26.         preferredReplicalElectCommand.preferredReplicaElection(clusterId,topicName,partition,""); 
  27.     } catch (ConfigException | InterruptedException e) { 
  28.         LOGGER.error("重新選舉異常.e:{}",e); 
  29.         e.printStackTrace(); 
  30.     } 
  31.  
  32. }).start(); 

優缺點

優點: 實現了目標需求, 簡單, 操作方便

缺點: 頻繁的Controller重選舉對生產環境來說會有一些影響;

優化與改進

第二種方案中,需要Controller 重選舉, 頻繁的選舉肯定是對生產環境有影響的;Controller承擔了非常多的責任,比如分區副本重分配、刪除topic、Leader選舉 等等還有很多都是它在干!

那么如何不進行Controller的重選舉,也能達到我們的需求呢?

我們的需求是,當我們 修改了zookeeper中的節點數據的時候,能夠迅速的讓Controller感知到,并更新自己的內存數據就行了;

對于這個問題,我會在下一期文章中介紹

問題

看完這篇文章,提幾個相關的問題給大家思考一下;

如果我在修改zk中的「AR」信息時候不僅僅是調換順序,而是有新增或者刪除副本會發生什么情況呢?

如果手動修改brokers/topics/{topicName}/partitions/{分區號}/state 節點里面的leader信息,能不能直接更新Leader?

副本選舉的整個流程是什么樣子的?

大家可以思考一下, 問題答案我會在后面的文章中一一講解!

責任編輯:武曉燕 來源: 石臻臻的雜貨鋪
相關推薦

2023-05-30 08:19:07

kafka集群leader

2024-10-22 15:25:20

2024-10-11 15:04:35

KafkaLeader選舉

2022-09-23 11:00:27

KafkaZookeeper機制

2021-01-19 09:59:02

招聘管理團隊

2020-08-04 08:37:23

Kafka分區數

2024-10-10 17:17:57

2018-05-15 15:33:07

Leader前端團隊

2024-09-27 11:29:32

2021-01-25 08:00:20

團隊管理阿里

2024-09-04 09:18:03

分區策略

2022-05-05 10:00:53

Kafka分區分配Linux

2020-06-01 20:57:27

Leader技術工作

2019-10-12 09:28:50

技術業務危機

2020-11-02 08:24:34

Leader技術團隊

2015-06-11 10:03:02

程序員

2022-10-10 08:35:17

kafka工作機制消息發送

2019-07-29 08:59:14

主管阿里專家Leader

2019-04-24 18:00:57

Linuxsgdisk命令管理分區

2022-01-04 08:33:33

Kafka消息發送
點贊
收藏

51CTO技術棧公眾號

成人黄色在线| 亚洲黄色av片| 神马午夜精品95| 在线欧美三区| 亚洲精品视频免费| 老头吃奶性行交视频| 岛国最新视频免费在线观看| 日韩二区在线观看| 日韩中文字幕精品| 少妇伦子伦精品无吗| 色戒汤唯在线| 国产精品美女久久福利网站| 国产一区二区视频在线观看| 午夜偷拍福利视频| 成人看的羞羞网站| 欧美大片一区二区| 国产精品亚洲αv天堂无码| 国产原创av在线| 国产乱一区二区| 欧美黄网免费在线观看| 人妻aⅴ无码一区二区三区| 四虎国产精品成人免费影视| 一区二区日韩电影| 日本在线观看一区| 欧美一级淫片aaaaaa| 日韩精品乱码av一区二区| 欧美精品一本久久男人的天堂| 最新在线黄色网址| 国产一区二区三区免费观看在线| 精品久久久中文| 亚洲成人精品电影在线观看| 亚洲第一色网站| 免费在线成人网| 亚洲3p在线观看| 天海翼在线视频| 精品中文一区| 亚洲福利视频网站| 天天操夜夜操很很操| 欧美大片免费观看网址| 亚洲国产精品综合小说图片区| 新呦u视频一区二区| 香蕉av在线播放| 另类小说视频一区二区| 欧洲亚洲免费在线| 四虎成人精品永久免费av| 亚洲欧美网站在线观看| 在线午夜精品自拍| 制服 丝袜 综合 日韩 欧美| 欧美h版在线观看| 欧美色手机在线观看| 激情六月丁香婷婷| 国产激情在线播放| 亚洲你懂的在线视频| 日韩高清av电影| 涩爱av在线播放一区二区| 国产91精品免费| 92国产精品视频| 91 中文字幕| 蜜臀av国产精品久久久久| 日本视频久久久| 可以免费在线观看的av| 日韩视频久久| 97热在线精品视频在线观看| 久久久精品视频免费| 欧美日韩精品一本二本三本| 久久影院在线观看| 在线免费看av网站| 香蕉综合视频| 久久亚洲成人精品| 国产精品国产精品88| 影视一区二区| 欧美大片免费看| 久久香蕉精品视频| 亚洲精品人人| 欧美亚洲另类视频| 一级黄色在线视频| 日本视频在线一区| 国产欧美在线看| 国产美女三级无套内谢| 91影院成人| 欲色天天网综合久久| 欧美人与禽zoz0善交| 日韩免费看片| 久久久国产一区二区| 暗呦丨小u女国产精品| 欧美精品播放| 亚洲91精品在线观看| 国产午夜免费福利| 日本欧洲一区二区| 91久久久久久国产精品| 亚洲男女视频在线观看| 久久免费的精品国产v∧| 视频在线精品一区| 91亚洲天堂| 亚洲成人www| 99精品免费在线观看| 视频精品导航| 日韩一区二区影院| 久久亚洲AV成人无码国产野外 | 国产精品一在线观看| 亚洲网站在线观看| 欧美做爰啪啪xxxⅹ性| 国内在线观看一区二区三区| 日本精品性网站在线观看| 亚洲系列在线观看| 成人黄色一级视频| 无遮挡亚洲一区| 四虎影院观看视频在线观看| 精品色蜜蜜精品视频在线观看| 十八禁视频网站在线观看| 成人自拍视频| 精品视频偷偷看在线观看 | 国产精品嫩草影院com| 亚洲国产精品影视| 蜜臀久久精品| 欧美高清dvd| 偷偷色噜狠狠狠狠的777米奇| 欧美日韩在线二区| 久久全国免费视频| 一级黄色短视频| 99热国产精品| 天堂v在线视频| 成人免费看黄| 精品欧美一区二区久久| 女人裸体性做爰全过| 亚洲视频成人| 亚洲999一在线观看www| 狠狠色伊人亚洲综合网站l| 亚洲一区二区美女| 午夜精品中文字幕| 天天操综合520| 九九精品在线观看| 一区二区精品视频在线观看| 久久蜜桃一区二区| 黄色大片中文字幕| 色播一区二区| 日韩亚洲欧美中文在线| 国产91国语对白在线| 成人免费的视频| 欧美 另类 交| 精品久久福利| 一区二区av在线| 好看的av在线| av动漫一区二区| 久久亚洲国产成人精品无码区| 日本免费成人| 中文字幕免费精品一区高清| 亚洲国产成人精品女人久久| 91农村精品一区二区在线| 伊人网在线免费| 97精品资源在线观看| 在线播放日韩精品| 午夜视频网站在线观看| 2021国产精品久久精品| 国产极品尤物在线| 精品亚洲免a| 国语对白做受69| 丰满肉肉bbwwbbww| 亚洲午夜国产一区99re久久| 丰满人妻一区二区三区大胸| 亚洲一区二区三区| 91九色精品视频| 男人天堂久久久| 欧美精品99久久久**| 国产精品视频看看| 狠狠色丁香婷婷综合| 中文字幕在线中文字幕日亚韩一区| 国产黄色精品| 精品国产一区久久久| 国产乱淫片视频| 亚洲欧美日韩电影| 中文写幕一区二区三区免费观成熟| 欧美在线网址| 福利视频一区二区三区| 91www在线| 日韩的一区二区| 国产suv精品一区二区33| 国产人久久人人人人爽| 狠狠操狠狠干视频| 欧美国产先锋| 国产乱码精品一区二区三区卡 | 成人免费直播| 一本大道亚洲视频| 91尤物国产福利在线观看| 亚洲女人****多毛耸耸8| 美女露出粉嫩尿囗让男人桶| 一本色道久久| 亚洲欧美日本国产有色| 99精品视频在线免费播放| 欧美黄色片视频| 嫩草研究院在线| 欧美日韩黄色一区二区| 无码人妻精品一区二区三区夜夜嗨| 成人在线视频一区| 日韩网址在线观看| 欧美xxxx中国| 成人在线观看av| 久久91导航| 久久成年人免费电影| 五月婷婷激情在线| 精品视频一区 二区 三区| 欧美成人精品欧美一| 久久久亚洲精品一区二区三区 | 欧美.www| 久久久久久久有限公司| 韩国成人在线| 久久久久久久成人| 成人在线免费公开观看视频| 日韩美一区二区三区| caoporn国产| 亚洲乱码精品一二三四区日韩在线| 污污内射在线观看一区二区少妇| 喷白浆一区二区| 免费人成自慰网站| 欧美色就是色| 国产亚洲欧美另类一区二区三区| 久久91超碰青草在哪里看| 久久99精品视频一区97| 二区在线观看| 日韩精品视频在线| av网站免费播放| 欧美综合亚洲图片综合区| 国产亚洲欧美久久久久| 国产精品久久三| 人妻丰满熟妇av无码久久洗澡| 经典三级在线一区| 日本在线视频www| 激情欧美日韩一区| 黄色一级片网址| 极品美女一区二区三区| 国产一区福利视频| 日韩视频在线直播| 成人免费大片黄在线播放| 国产精品伦理| 国产做受高潮69| 黄色成人在线观看| 中文字幕欧美日韩在线| 三级在线视频| 亚洲成色777777女色窝| 国产三级视频在线播放| 欧美日韩国产综合一区二区 | 在线精品亚洲一区二区不卡| 日本少妇激情舌吻| 亚洲愉拍自拍另类高清精品| 天天色影综合网| 国产精品女主播在线观看| 国产一二三四五区| 久久久亚洲高清| 日韩免费高清一区二区| 成人午夜又粗又硬又大| 美女被爆操网站| 国产精品一区二区不卡| 亚洲黄色片免费| 久草精品在线观看| 奇米影视四色在线| 另类调教123区| 丰满少妇在线观看| 日本不卡视频一二三区| 国产av人人夜夜澡人人爽| 肉丝袜脚交视频一区二区| 超碰影院在线观看| 日韩不卡一区二区三区| 久久综合伊人77777麻豆最新章节| 久久人人精品| 国产熟人av一二三区| 日本在线不卡一区| 日韩免费高清在线| 免费成人av在线| 久久国产精品国产精品| 久久91精品国产91久久小草| 欧美大片久久久| 国产裸体歌舞团一区二区| wwwxxx色| av在线综合网| 欧美 日韩 国产 成人 在线观看| 国产欧美一区二区精品性色超碰| 国产精品视频在| 亚洲欧洲成人自拍| 欧美日韩精品在线观看视频| 亚洲h在线观看| 完美搭档在线观看| 99国内精品久久| 久久久亚洲av波多野结衣| 国产香蕉久久精品综合网| 女人裸体性做爰全过| 亚洲一区二区三区三| 久久人妻免费视频| 91精品视频网| 色欲久久久天天天综合网| 亚洲欧美国产一本综合首页| av电影在线观看一区二区三区| 久久精品夜夜夜夜夜久久| 黄色影院在线看| 国产91露脸中文字幕在线| 色综合久久久| 国产欧美亚洲日本| sdde在线播放一区二区| 欧美一级爱爱视频| 久久香蕉精品| 丰满人妻一区二区三区大胸| 久久人人超碰精品| 国产精品免费人成网站酒店| 岛国视频午夜一区免费在线观看| 亚洲一级特黄毛片| 精品国产免费视频| 成人三级黄色免费网站| 欧美激情按摩在线| 日韩毛片一区| 99在线观看视频| 欧美艳星介绍134位艳星| 妞干网在线播放| 日本sm残虐另类| 亚洲一级Av无码毛片久久精品| 久久久久久久久伊人| 久草免费新视频| 欧美亚洲国产一区二区三区 | 亚洲国产成人在线播放| 91在线导航| 午夜精品www| 成人自拍视频| 欧美一区二区三区电影在线观看| 牛牛国产精品| 精品999在线| 99re成人在线| 黄色一级视频免费| 欧美日韩国产电影| 蜜桃视频在线观看网站| 欧美激情中文字幕乱码免费| 国产激情久久| 久久综合一区二区三区| 欧美黄色aaaa| 激情黄色小视频| 久久影院午夜片一区| 久久久夜色精品| 91精品国产色综合久久不卡电影 | 黄色网址在线免费播放| 国产精品视频99| 欧美男同视频网| 日韩国产一级片| 国产**成人网毛片九色| 国产高潮流白浆| 欧美久久一二区| 天堂资源在线中文| 国产精品久久久久av| 精品在线99| 国产91对白刺激露脸在线观看| 国产成a人亚洲| 男女做暖暖视频| 91.com视频| 黄色在线免费看| 91免费福利视频| 天天射综合网视频| 国产乱叫456| 亚洲免费观看在线观看| 国产精品视频无码| 久久成人一区二区| 日本免费精品| 51xx午夜影福利| 国产精品夜夜嗨| 久久国产精品二区| 精品少妇一区二区三区视频免付费| h片在线免费观看| 91精品国产91久久久久青草| 亚洲欧美色图| 日本一区二区免费视频| 性欧美大战久久久久久久久| 天堂在线观看av| 5566成人精品视频免费| 国产精品美女久久久久久不卡 | 5566中文字幕一区二区| 欧美精品日韩| 精品熟女一区二区三区| 五月婷婷激情综合| 九色在线播放| 国产精品视频网站| 国产精品久久久久无码av| aaaaaaaa毛片| 亚洲第一综合色| 青青草娱乐在线| 国产精品日韩欧美| 久久久久久美女精品| 中文字幕99页| 色综合欧美在线视频区| av在线首页| 99re在线视频观看| 国产精品五区| 婷婷丁香综合网| 日韩免费成人网| 中老年在线免费视频| 亚洲午夜精品久久久中文影院av| 国产乱色国产精品免费视频| 成人精品免费在线观看| 日韩一区二区福利| 国产精品毛片视频| www.日日操| 亚洲欧美偷拍三级| 午夜在线视频观看| 成人网中文字幕| 国产一区二区三区久久| 91免费在线看片|