RocketMQ最佳實(shí)踐之NameServer

在Apache RocketMQ中,名稱(chēng)服務(wù)器用于協(xié)調(diào)分布式系統(tǒng)的每個(gè)組件,主要通過(guò)管理主題路由信息來(lái)實(shí)現(xiàn)協(xié)調(diào)。

管理由兩部分組成:

  • Brokers 定期更新保存在每個(gè)名稱(chēng)服務(wù)器中的元數(shù)據(jù)。
  • 名稱(chēng)服務(wù)器是為客戶端提供最新的路由信息服務(wù)的,包括生產(chǎn)者、消費(fèi)者和命令行客戶端。

因此,在啟動(dòng) brokers 和 clients 之前,我們需要告訴他們?nèi)绾瓮ㄟ^(guò)給他們提供的一個(gè)名稱(chēng)服務(wù)器地址列表來(lái)訪問(wèn)名稱(chēng)服務(wù)器。在Apache RocketMQ中,可以用四種方式完成。

編程的方式

對(duì)于 brokers,我們可以在 broker 的配置文件中指定 namesrvAddr=name-server-ip1:port;name-server-ip2:port

對(duì)于生產(chǎn)者和消費(fèi)者,我們可以給他們提供姓名服務(wù)器地址列表如下:

DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
producer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
consumer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");

如果您從shell中使用管理命令行,您也可以這樣指定:

sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION

一個(gè)簡(jiǎn)單的例子是 sh mqadmin -n localhost:9876 clusterList 指定在名稱(chēng)服務(wù)器節(jié)點(diǎn)上查詢集群信息。

如果您將管理工具集成到您自己的儀表板中,您可以:

DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name");
defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");

Java 參數(shù)

還可以通過(guò)指定后續(xù)的java參數(shù) rocketmq.namesrvv.addr 來(lái)對(duì)您的應(yīng)用程序提供名稱(chēng)服務(wù)器地址列表。

環(huán)境變量

您可以設(shè)置NAMESRV_ADDR環(huán)境變量。如果設(shè)置了,Broker和clients將檢查并使用其值。

HTTP端點(diǎn)(HTTP Endpoint)

如果您沒(méi)有使用前面提到的方法指定名稱(chēng)服務(wù)器地址列表,Apache RocketMQ將以每2分鐘訪問(wèn)以下HTTP端點(diǎn)以獲取和更新名稱(chēng)服務(wù)器地址列表,初始延遲10秒。

默認(rèn)情況下,終點(diǎn)是:

http://jmenv.tbsite.net:8080/rocketmq/nsaddr

你可以使用這個(gè)Java選項(xiàng):rocketmq.namesrv.domain 覆蓋 jmenv.tbsite.net ,你也可以使用這個(gè)Java選項(xiàng) rocketmq.namesrv.domain.subgroup 覆蓋 nsaddr 部分

如果在生產(chǎn)環(huán)境中運(yùn)行Apache RocketMQ,建議使用此方法,因?yàn)樗峁┝俗畲蟮撵`活性——您可以動(dòng)態(tài)地添加或刪除名稱(chēng)服務(wù)器節(jié)點(diǎn),而無(wú)需根據(jù)您的名稱(chēng)服務(wù)器的系統(tǒng)負(fù)載重新啟動(dòng)代理和客戶端。

優(yōu)先級(jí)

首先介紹的方法優(yōu)先于后一種方法:

編程方式 > Java選項(xiàng) > 環(huán)境變量 > HTTP端點(diǎn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容