實戰(zhàn)1|分布式消息中間件Kafka業(yè)務遷移
分布式消息服務Kafka遷移指將生產(chǎn)與消費消息的客戶端切換成連接新Kafka,部分還涉及將持久化的消息文件遷移到新的Kafka。主要涉及到以下2類場景:
業(yè)務上云且不希望業(yè)務有中斷。
在上云過程中,連續(xù)性要求高的業(yè)務,需要平滑遷移,不能有長時間的中斷。
遷移準備
1、配置網(wǎng)絡環(huán)境
Kafka實例分內(nèi)網(wǎng)地址以及公網(wǎng)地址兩種網(wǎng)絡連接方式。如果使用公網(wǎng)地址,則消息生成與消費客戶端需要有公網(wǎng)訪問權限,并配置如下安全組。
2、創(chuàng)建Kafka實例
Kafka的規(guī)格不能低于原業(yè)務使用的Kafka規(guī)格。具體請參考創(chuàng)建Kafka實例。
3、創(chuàng)建Topic
在新的Kafka實例上創(chuàng)建與原Kafka實例相同配置的Topic,包括Topic名稱、副本數(shù)、分區(qū)數(shù)、消息老化時間,以及是否同步復制和落盤等。具體請參考創(chuàng)建Topic。
實施步驟(方案一:先遷生產(chǎn),再遷消費)
指先將生產(chǎn)消息的業(yè)務遷移到新的Kafka,原Kafka不會有新的消息生產(chǎn)。待原有Kafka實例的消息全部消費完成后,再將消費消息業(yè)務遷移到新的Kafka,開始消費新Kafka實例的消息。
1、將生產(chǎn)客戶端的Kafka連接地址修改為新Kafka實例的連接地址。
2、重啟生產(chǎn)業(yè)務,使得生產(chǎn)者將新的消息發(fā)送到新Kafka實例中。
3、觀察各消費組在原Kafka的消費進度,直到原Kafka中數(shù)據(jù)都已經(jīng)被消費完畢。
4、將消費客戶端的Kafka連接地址修改為新Kafka實例的連接地址。
5、重啟消費業(yè)務,使得消費者從新Kafka實例中消費消息。
6、觀察消費者是否能正常從新Kafka實例中獲取數(shù)據(jù)。
7、遷移結束。
本方案為業(yè)界通用的遷移方案,操作步驟簡單,遷移過程由業(yè)務側自主控制,整個過程中消息不會存在亂序問題,適用于對消息順序有要求的場景。但是該方案中需要等待消費者業(yè)務直至消費完畢,存在一個時間差的問題,部分數(shù)據(jù)可能存在較大的端到端時延。
實施步驟(方案二:同時消費,后遷生產(chǎn))
指消費者業(yè)務啟用多個消費客戶端,分別向原Kafka和新Kafka實例消費消息,然后將生產(chǎn)業(yè)務切到新Kafka實例,這樣能確保所有消息都被及時消費。
1、啟動新的消費客戶端,配置Kafka連接地址為新Kafka實例的連接地址,消費新Kafka實例中的數(shù)據(jù)。
說明:原有消費客戶端需繼續(xù)運行,消費業(yè)務同時消費原Kafka與新Kafka實例的消息。
2、修改生產(chǎn)客戶端,Kafka連接地址改為新Kafka實例的連接地址。3、重啟生產(chǎn)客戶端,將生產(chǎn)業(yè)務遷移到新Kafka實例中。
4、生產(chǎn)業(yè)務遷移后,觀察連接新Kafka實例的消費業(yè)務是否正常。
5、等待原Kafka中數(shù)據(jù)消費完畢,關閉原有消費業(yè)務客戶端。
6、遷移結束。
遷移過程由業(yè)務自主控制。本方案中消費業(yè)務會在一段時間內(nèi)同時消費原Kafka和新Kafka實例。由于在遷移生產(chǎn)業(yè)務之前,已經(jīng)有消費業(yè)務運行在新Kafka實例上,因此不會存在端到端時延的問題。但在遷移生產(chǎn)的開始階段,同時消費原Kafka與新Kafka實例,會導致部分消息之間的生產(chǎn)順序無法保證,存在消息亂序的問題。此場景適用于對端到端時延有要求,卻對消息順序不敏感的業(yè)務。
Kafka業(yè)務遷移詳情:點擊此處前往
實戰(zhàn)2|分布式消息中間件RabbitMQ業(yè)務遷移
RabbitMQ業(yè)務遷移是指將線下單機或集群實例遷移到華為云RabbitMQ實例。
方案架構
提供如下兩種方案:
方案一:不遷移數(shù)據(jù),先切換生產(chǎn),再切換消費。
方案二:先遷移數(shù)據(jù),然后同時切換生產(chǎn)和消費。
實施步驟(方案一:不遷移數(shù)據(jù),先切換生產(chǎn),再切換消費)
針對線下單機或集群實例,在不遷移數(shù)據(jù)的情況下,首先將消息生產(chǎn)切換到線上實例,不再生產(chǎn)消息到線下實例,消費方同時消費線下以及線上實例。當線下實例消息全部消費完后,將消息消費切換到線上實例,完成整個遷移過程。
通過以下方法,確認線下實例是否消費完成:
1、在RabbitMQ WebUI頁面查看,Overview視圖中,可消費消息數(shù)(Ready)以及未確認的消息數(shù)(Unacked)都為0時,說明消費完成。
2、調(diào)用API查看。
3、回顯信息中“messages_ready”和“messages_unacknowledged”都為0時,說明消費完成。
實施步驟(方案二:先遷移數(shù)據(jù),然后同時切換生產(chǎn)和消費)
1、在線下實例和線上實例都開啟shovel插件,線上實例開啟的方法請參見開啟shovel插件。然后,在線下實例的RabbitMQ WebUI頁面中配置shovel插件信息:Source為線下實例信息,Destination為線上實例信息,并在Source和Destination中設置需要同步的隊列。
2、調(diào)用API查看。
3、回顯信息中“messages_ready”和“messages_unacknowledged”都為0時,說明遷移完成。
RabbitMQ業(yè)務遷移詳情:點擊此處前往
實戰(zhàn)3|分布式消息中間件RocketMQ業(yè)務遷移
RocketMQ業(yè)務遷移是指將其他廠商或者自建的RocketMQ遷移到華為云分布式消息服務RocketMQ版。
前提條件
1、配置網(wǎng)絡環(huán)境
分布式消息服務RocketMQ版實例分內(nèi)網(wǎng)地址以及公網(wǎng)地址兩種網(wǎng)絡連接方式。如果使用公網(wǎng)地址,則消息生產(chǎn)與消費客戶端需要有公網(wǎng)訪問權限,并配置如下安全組。
2、購買分布式消息服務RocketMQ版實例,具體請參考購買RocketMQ實例。
實施步驟
1、遷移元數(shù)據(jù)至分布式消息服務RocketMQ版實例。
獲取其他廠商或自建RocketMQ實例的元數(shù)據(jù)。
進入RocketMQ實例的安裝目錄,執(zhí)行以下命令,查詢集群名稱。
執(zhí)行以下命令,導出元數(shù)據(jù)。
在控制臺遷移元數(shù)據(jù)。
-登錄分布式消息服務RocketMQ版控制臺。
-單擊RocketMQ實例的名稱,進入實例詳情頁面。
-在左側導航欄,選擇“元數(shù)據(jù)遷移”,進入遷移任務列表頁面。
-單擊“創(chuàng)建遷移任務”,彈出“創(chuàng)建遷移任務”對話框。單擊“確定”。
-遷移完成后,在遷移任務列表頁面查看“任務狀態(tài)”。
-當“任務狀態(tài)”為“遷移完成”,表示所有元數(shù)據(jù)都已成功遷移。
-當“任務狀態(tài)”為“遷移失敗”,表示元數(shù)據(jù)中部分或全部元數(shù)據(jù)遷移失敗。單擊遷移任務名稱,進入遷移任務詳情頁,在“遷移結果”中查看遷移失敗的Topic/消費組名稱,以及失敗原因。
2、遷移生產(chǎn)消息至分布式消息服務RocketMQ版實例。
將生產(chǎn)客戶端的元數(shù)據(jù)連接地址改為分布式消息服務RocketMQ版實例的元數(shù)據(jù)連接地址,重啟生產(chǎn)業(yè)務,使得生產(chǎn)者將新的消息發(fā)送到分布式消息服務RocketMQ版實例中。
3、遷移消費消息至分布式消息服務RocketMQ版實例。
4、待消費組中的消息消費完之后,將消費客戶端的元數(shù)據(jù)連接地址改為分布式消息服務RocketMQ版實例的元數(shù)據(jù)連接地址,重啟消費業(yè)務,使得消費者從分布式消息服務RocketMQ版實例中消費消息。
5、如果有多個RocketMQ實例需要遷移到同一個分布式消息服務RocketMQ版實例中,請依次進行遷移。
RocketMQ業(yè)務遷移詳情:點擊此處前往
分布式消息中間件的應用場景
分布式消息中間件是在分布式系統(tǒng)中,支持各個模塊/組件之間通信的中間件(軟件),這個中間件本身也是一個分布式系統(tǒng)。分布式消息中間件應用場景有業(yè)務解耦、系統(tǒng)流控和事件驅動等。
業(yè)務解耦:系統(tǒng)中的各個服務之間不需要有對方的存在,只需要發(fā)布消息即可——總會有合適的“人”來處理這個消息的。
系統(tǒng)流控:如果上游服務的吞吐能力高于下游服務,上游洪峰可能會沖垮下游,此時消息中間件可以緩沖洪峰、堆積消息,在峰值過去后,再由下游服務慢慢消費堆積的消息。
事件驅動:系統(tǒng)中各個服務之間可以通過消息傳遞的形式驅動業(yè)務,以流式的模型處理。
分布式消息中間件教程視頻
分布式消息服務DMS
04:57
分布式消息服務DMS
04:46
分布式消息服務DMS
03:08
分布式消息中間件精選推薦
1對1咨詢專屬顧問
華為云咨詢電話:950808或4000-955-988 轉1
華為云咨詢電話:950808或4000-955-988 轉1