精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本一区高清在线视频| 精品国精品国产尤物美女| 亚洲自拍偷拍九九九| 成人看片在线| 国产又大又黄又粗| 99久久99久久精品国产片桃花| 日韩一区二区在线看| 国产毛片视频网站| 中文字幕在线视频区| 国产盗摄精品一区二区三区在线| 97视频在线观看免费| 国产精品69久久久久孕妇欧美| 网站一区二区| 在线观看精品一区| 大西瓜av在线| 麻豆影院在线观看| www久久精品| 91丝袜脚交足在线播放| 国产成人av免费| 在线成人黄色| 精品国产一区二区三区久久| 中文字幕无码人妻少妇免费| 亚洲成a人片777777久久| 黄色精品一区二区| 8x8x华人在线| 91在线直播| 91亚洲永久精品| 147欧美人体大胆444| 国产精品尤物视频| 宅男噜噜噜66一区二区| 九九九久久久久久| 男人的天堂官网 | 日本精品久久久久久久| 久草视频手机在线观看| 99久久亚洲精品| 亚洲天堂男人的天堂| 精品国产av色一区二区深夜久久 | 在线日韩一区二区| 免费一级特黄特色毛片久久看| av毛片在线免费| 一区二区中文视频| 一区二区三区四区五区视频| 超碰国产在线| 国产日产精品一区| 欧洲一区二区日韩在线视频观看免费| 欧美 日韩 国产 成人 在线 91 | 国产熟妇搡bbbb搡bbbb| 久久综合五月婷婷| 欧美日韩国产一二三| 三级在线视频观看| 九七电影院97理论片久久tvb| 色哟哟日韩精品| 国产精品wwwww| 英国三级经典在线观看| 精品久久香蕉国产线看观看gif| 妺妺窝人体色www看人体| 污污在线观看| 亚洲国产欧美在线人成| 国产成a人亚洲精v品在线观看| 午夜伦理在线视频| 亚洲成人午夜影院| 国产精品333| 欧美伦理91| 色综合欧美在线视频区| 成人免费视频久久| 欧美特黄色片| 日韩一级黄色片| 日本人妻一区二区三区| 久久a爱视频| 日韩hd视频在线观看| 爱爱的免费视频| 深爱激情久久| xvideos亚洲| 免费人成年激情视频在线观看| 欧美日本不卡| 欧美专区中文字幕| 中文字幕 自拍偷拍| 久久99国产精品免费| 91久久国产自产拍夜夜嗨| 午夜精品无码一区二区三区| 成人av资源在线观看| 蜜桃传媒一区二区| av福利在线播放| 亚洲男同性视频| 中文字幕无码精品亚洲资源网久久| 97人澡人人添人人爽欧美| 色悠久久久久综合欧美99| 欧美美女一级片| 国产suv精品一区| 国产视频一区在线| 中文字幕第69页| 欧美在线精品一区| 欧洲成人在线观看| 国产免费一区二区三区最新不卡| 国产不卡一区视频| 欧美国产视频在线观看| 欧美69xxxx| 亚洲二区在线视频| 污污网站免费看| 91在线一区| 日韩精品在线观| 成人无码精品1区2区3区免费看 | 久久精品一区蜜桃臀影院| 亚洲精品国产精品国自产| 中文字幕在线观看播放| 欧美午夜女人视频在线| 91亚洲一区二区| 天堂日韩电影| 久久国产精品久久久久久久久久| www.国产成人| 狠狠色丁香婷婷综合| 九色91视频| 黄色av免费在线| 日本道色综合久久| av在线天堂网| 欧美独立站高清久久| 91精品国产91久久久久| 国产精品视频第一页| 久久久另类综合| 久久艹国产精品| 91麻豆精品国产综合久久久 | 青青草手机视频在线观看| 亚洲专区在线| 超碰97在线资源| 最新电影电视剧在线观看免费观看| 午夜免费久久看| 亚洲制服在线观看| 97视频精品| 国产精品高清在线观看| 欧美熟女一区二区| 亚洲日本一区二区三区| 污污视频网站免费观看| 欧美久久精品| 欧美激情综合亚洲一二区| 亚洲图片中文字幕| 国产欧美日产一区| 欧美三级午夜理伦三级| 久久精品色播| 高清视频欧美一级| 亚洲第一第二区| 26uuu精品一区二区| 国产偷国产偷亚洲高清人白洁| 欧美精品一区二区三区在线四季 | 韩日精品中文字幕| 精品国产九九九| 中文字幕一区二区三区精华液 | 搜索黄色一级片| 免费看日韩精品| 日韩欧美激情一区二区| 日韩成人动漫| 国产亚洲激情视频在线| 欧美精品一二三四区| 91麻豆免费看片| www国产精品内射老熟女| 久久久久97| 91sa在线看| 你懂的在线网址| 色激情天天射综合网| 久久久视频6r| 奇米一区二区三区| 午夜欧美性电影| aaaa欧美| 久久在线免费视频| 国产精品欧美久久久久天天影视| 一区精品在线播放| 免费欧美一级片| 韩国一区二区三区在线观看| 国产美女在线精品免费观看| 老司机深夜福利在线观看| 日韩精品一区二区三区第95| 久久精品五月天| 国产精品另类一区| 久久久久99人妻一区二区三区| 激情亚洲成人| 欧美日韩亚洲综合一区二区三区激情在线 | 97在线免费视频观看| 999久久精品| 91精品国产色综合| 国产高清一区在线观看| 91精品国产福利| 一级aaa毛片| 国产亚洲精品中文字幕| 在线视频一二区| 亚洲欧洲另类| 日韩欧美亚洲v片| 精品欧美视频| 5566成人精品视频免费| 夜级特黄日本大片_在线| 日韩欧美国产高清| 久久久久久少妇| 国产精品白丝在线| 手机免费看av片| 日韩高清在线一区| 国产激情片在线观看| 久久99国产精一区二区三区| 91精品国产综合久久香蕉922| 牛牛在线精品视频| 一区二区亚洲欧洲国产日韩| jlzzjlzz亚洲女人18| 高跟丝袜欧美一区| 国产传媒免费在线观看| 99久久国产综合精品麻豆| 亚洲久久中文字幕| 亚洲调教视频在线观看| 神马影院午夜我不卡影院| 大奶在线精品| 国产欧美在线播放| 天堂中文在线播放| 久久69精品久久久久久国产越南| 欧洲成人av| 日韩欧美三级在线| 在线视频播放大全| 欧美午夜宅男影院在线观看| 天天看片中文字幕| 亚洲国产精品激情在线观看| 亚洲无人区码一码二码三码| 秋霞午夜鲁丝一区二区老狼| www在线观看免费| 亚洲在线久久| 日韩在线导航| 亚洲丝袜美腿一区| 国产精品亚洲综合| 日本精品在线观看| 国产在线久久久| 欧美日韩不卡| 日本亚洲欧洲色| 国产亚洲成av人片在线观看 | 欧美一级久久久| wwwwww在线观看| 欧美视频第一页| 国产精品 欧美 日韩| 亚洲日穴在线视频| 婷婷社区五月天| 国产精品欧美极品| 蜜桃av乱码一区二区三区| 91在线看国产| 国产日韩视频一区| 国产精品自拍毛片| 美女被艹视频网站| 国产在线麻豆精品观看| 欧美丝袜在线观看| 久久国产乱子精品免费女| 性欧美极品xxxx欧美一区二区| 亚久久调教视频| 午夜精品久久久久久久无码| 极品中文字幕一区| 日韩国产欧美亚洲| 先锋亚洲精品| 久久久精品在线视频| 亚洲一区亚洲| 国产在线青青草| 久久成人免费| 国产精品秘入口18禁麻豆免会员| 在线综合亚洲| 日本在线视频www| 久久国产精品久久w女人spa| 青青草原av在线播放| 亚洲一区日韩在线| 97公开免费视频| 欧美a级一区二区| 污版视频在线观看| 国内精品久久久久影院色| 亚洲三级在线观看视频| 国产一区二区0| 国产精品19p| 成人久久久精品乱码一区二区三区 | 日本在线播放一区| 欧美午夜精彩| 宅男av一区二区三区| 伊人成综合网| 日本人体一区二区| 乱码第一页成人| 国产理论在线播放| 国产原创一区二区| 韩国三级视频在线观看| www久久久久| 肉色超薄丝袜脚交69xx图片| 亚洲免费观看高清在线观看| 国产一级在线免费观看| 欧美视频第一页| 国产又粗又长视频| 亚洲第一精品福利| 成年网站在线| 欧美日韩国产91| 粉嫩一区二区| 91色中文字幕| 香蕉久久夜色精品国产使用方法| 视频在线一区二区三区| 欧美日本二区| 成人免费观看视频在线观看| 久久99久久99小草精品免视看| 人妻激情偷乱视频一区二区三区| 99久久精品国产一区二区三区| 亚洲天堂岛国片| 亚洲一二三区视频在线观看| 精品人妻一区二区三区免费看| 欧美日本在线视频| 天天爱天天干天天操| 最近2019年日本中文免费字幕 | 国产探花在线精品| www.-级毛片线天内射视视| 亚洲作爱视频| 久久久久久综合网| 久久无码av三级| 欧美日韩在线视频免费播放| 色网站国产精品| 精品国产伦一区二区三| 一区二区三区四区视频| 毛片大全在线观看| 成人精品福利视频| 精品免费av| 美女日批免费视频| 国产精品性做久久久久久| 国产探花视频在线播放| 五月天欧美精品| 成人av手机在线| 日韩在线观看免费高清完整版| 亚洲美女炮图| 91天堂在线视频| 欧美影院三区| 欧美v在线观看| av中文字幕一区| 欧美日韩国产精品综合| 欧美日韩一区二区三区四区五区| 日韩在线免费播放| 欧美精品福利在线| 国产专区精品| 伊人久久大香线蕉成人综合网| 久久夜色精品| av网页在线观看| 夜夜嗨av一区二区三区网页| 97成人在线观看| 上原亚衣av一区二区三区| 欧美日韩大片| 美女被啪啪一区二区| aa国产精品| 91丝袜在线观看| 亚洲国产欧美在线| 午夜精品小视频| 欧美国产日韩一区二区在线观看| 欧美片网站免费| 中文字幕久久一区| 美腿丝袜亚洲三区| 日本黄色小视频在线观看| 色综合久久综合中文综合网| 手机福利小视频在线播放| 91精品国产91久久久久久不卡| 成人动态视频| 欧美又粗又长又爽做受| 国产91富婆露脸刺激对白| 日本老熟俱乐部h0930| 欧美一区二区观看视频| av在线影院| 99在线观看视频| 亚洲网址在线| 亚洲成av人片在线观看无| 五月综合激情婷婷六月色窝| 四虎精品在线| 国产成人精品在线视频| re久久精品视频| 日本xxxx黄色| 亚洲少妇中出一区| 精品人妻人人做人人爽夜夜爽| 一本综合久久| 欧美一区二区免费在线观看| 亚洲国产美国国产综合一区二区| 亚洲精品97久久中文字幕无码 | 亚洲天堂网一区二区| 欧美性猛交xxxxx免费看| 免费成人av电影| 国产精品成人久久久久| 日韩精品欧美激情一区二区| 在线观看免费视频高清游戏推荐 | 青青草在线观看视频| 日韩精品一区二区三区四区视频| 国精一区二区三区| 久久久久久久免费| 免费成人美女在线观看.| 亚洲伦理一区二区三区| 欧美成人免费网站| 国产ktv在线视频| 日韩一本精品| 国产成人精品一区二区三区四区| 日本一区二区三区免费视频| 精品亚洲一区二区三区在线播放| 亚洲成人短视频| 四虎影院一区二区| 99国产精品国产精品久久| 欧美婷婷久久五月精品三区| 中文字幕日韩av综合精品| 欧美日韩伦理一区二区| 波多野结衣 作品| 99久久综合99久久综合网站| 亚洲黄网在线观看| 精品国偷自产在线| 欧美aaaaa级| 亚洲精品久久久久久久久久久 | 日韩电影中文字幕在线观看| 韩国成人在线| 高清无码一区二区在线观看吞精|