最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kafka的監(jiān)聽地址配置實(shí)例詳解

 更新時(shí)間:2022年01月23日 11:51:10   作者:NYC  
這篇文章主要給大華介紹了關(guān)于Kafka監(jiān)聽地址配置的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

有時(shí)我們會(huì)碰到網(wǎng)絡(luò)是通暢的,但卻連不上Kafka,特別是在多網(wǎng)卡環(huán)境或者云環(huán)境上很容易出現(xiàn),這個(gè)其實(shí)和Kafka的監(jiān)聽配置有關(guān)系。本文介紹監(jiān)聽相關(guān)的配置,目前監(jiān)聽相關(guān)的參數(shù)主要有下面幾個(gè):

  • listeners
  • advertised.listeners
  • listener.security.protocol.map
  • inter.broker.listener.name
  • security.inter.broker.protocol
  • advertised.host.name(歷史遺留,已廢棄,勿使用)
  • advertised.port(歷史遺留,已廢棄,勿使用)
  • host.name(歷史遺留,已廢棄,勿使用)

其中最重要的就是listeners和advertised.listeners:集群?jiǎn)?dòng)時(shí)監(jiān)聽listeners配置的地址,并將advertised.listeners配置的地址寫到Zookeeper里面,作為集群元數(shù)據(jù)的一部分。我們可以將客戶端(生產(chǎn)者/消費(fèi)者)連接Kafka集群進(jìn)行操作的過程分成2步:

  • 通過listeners配置的連接信息(ip/host)連接到某個(gè)Broker(broker會(huì)定期獲取并緩存zk中的元數(shù)據(jù)信息),獲取元數(shù)據(jù)中advertised.listeners配置的地址信息。
  • 通過第1步獲取的advertised.listeners連接信息和Kafka集群通信(讀/寫)。

所以在存在內(nèi)外網(wǎng)隔離的虛擬化環(huán)境中(比如Docker、公有云),外部客戶端經(jīng)常會(huì)出現(xiàn)可以連接到Kafka(第1步),但發(fā)送/消費(fèi)數(shù)據(jù)時(shí)報(bào)連接超時(shí)(第2步),就是因?yàn)閘isteners配置的是外網(wǎng)地址,而advertised.listeners配置的卻是內(nèi)網(wǎng)地址。那這幾個(gè)參數(shù)該如何配置呢?

先看連接信息的配置格式:{listener名字}://{HOST/IP}:{PORT}。HOST/IP、PORT很清楚,主要是這個(gè)“listener名字”字段。要理解這個(gè)得了解listener.security.protocol.map這個(gè)配置項(xiàng):它的用途是配置listener名字和協(xié)議的映射(所以它是一個(gè)key-value的map),key是“listener名字”,value是“協(xié)議名稱”,其默認(rèn)值是“listener名字”和“協(xié)議名稱”一樣。有點(diǎn)繞,舉個(gè)例子,比如:PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL,冒號(hào)前面是key,即協(xié)議名字;后面是value,即協(xié)議名稱。listener名字我們可以隨便起,而協(xié)議名稱則是固定可枚舉的一個(gè)范圍。所以如果我們自定義了listener名字,那就需要顯式的設(shè)置其對(duì)應(yīng)的協(xié)議名。

inter.broker.listener.name和security.inter.broker.protocol都是用于配置Broker之間通信的,前者配置名稱(即listener.security.protocol.map中的key),后者配置協(xié)議(即listener.security.protocol.map中的value),默認(rèn)值是PLAINTEXT。這兩個(gè)配置項(xiàng)同時(shí)只能配置一個(gè)。

為什么一個(gè)連接要搞這么復(fù)雜呢?主要是為了各種不同的場(chǎng)景需求。下面舉一個(gè)復(fù)雜一點(diǎn)的應(yīng)用場(chǎng)景進(jìn)行說明。比如我們?cè)谝粋€(gè)公有云上面部署了一個(gè)Kafka集群,該環(huán)境有一個(gè)外網(wǎng)地址external_hostname和一個(gè)內(nèi)網(wǎng)地址internal_hostname;且在內(nèi)部中是無法獲取外網(wǎng)地址的(公有云大多都是這樣的)。然后想實(shí)現(xiàn)內(nèi)部客戶端訪問集群時(shí)走內(nèi)部地址,且不需要加密;而外部客戶端訪問時(shí)則走外部地址,且需要加密。要實(shí)現(xiàn)這個(gè)需求,可以對(duì)集群進(jìn)行如下配置:

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SSL
listeners=INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092
advertised.listeners=INTERNAL://{internal_hostname}:19092,EXTERNAL://{external_hostname}:9092
inter.broker.listener.name=INTERNALlistener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SSL

其實(shí)更進(jìn)一步,我們還可以通過可選的control.plane.listener.name參數(shù)單獨(dú)定制集群Controller節(jié)點(diǎn)與其他Broker節(jié)點(diǎn)的連接,那配置信息就變?yōu)椋?/p>

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SSL,CONTROL:SSL
listeners=INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092
advertised.listeners=INTERNAL://{internal_hostname}:19092,EXTERNAL://{external_hostname}:9092,CONTROL://{control_ip}:9094
inter.broker.listener.name=INTERNAL
control.plane.listener.name=CONTROL

最后給出這些配置項(xiàng)的默認(rèn)值和一些注意事項(xiàng):

  • listeners如果不顯式的配置,那會(huì)監(jiān)聽所有網(wǎng)卡,相當(dāng)于配置了0.0.0.0。該配置項(xiàng)里面listeners名字和端口都必須是唯一的,不能重復(fù)。
  • advertised.listeners如果不配置,默認(rèn)使用listeners配置的值。如果listeners也沒有顯式配置,則使用java.net.InetAddress.getCanonicalHostName()獲取的IP地址。如果listeners配置的是0.0.0.0,則必須顯式的配置advertised.listeners,因?yàn)檫@個(gè)配置項(xiàng)必須是一個(gè)具體的地址,不允許是0.0.0.0(因?yàn)榭蛻舳藷o法根據(jù)這個(gè)地址連接到Broker)。另外,advertised.listeners中的端口允許重復(fù)。
  • 對(duì)于listeners和advertised.listeners,有多個(gè)地址的時(shí)候,每一個(gè)地址都必須按照{(diào)listener名字}://{HOST/IP}:{PORT}格式進(jìn)行配置,多個(gè)地址用英文逗號(hào)分隔。
  • 如果集群所有節(jié)點(diǎn)的hostname在客戶端和服務(wù)端各節(jié)點(diǎn)之間可以正確解析,優(yōu)先使用hostname,而不是IP。因?yàn)榇a里面使用了java.net.InetAddress.getCanonicalHostName(),有時(shí)使用IP會(huì)出現(xiàn)訪問不通的情況。

總結(jié):

listeners地址是用于首次連接的;advertised.listeners的地址是會(huì)寫到zk里面,客戶端通過listeners地址建立連接獲取該地址信息,然后通過該地址和集群交互。所以對(duì)于客戶端,這2個(gè)地址必須都是可以訪問的才可以。

到此這篇關(guān)于Kafka監(jiān)聽地址配置的文章就介紹到這了,更多相關(guān)Kafka監(jiān)聽地址配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)徹底理解關(guān)于KMP算法

    Java數(shù)據(jù)結(jié)構(gòu)徹底理解關(guān)于KMP算法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)關(guān)于KMP算法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)

    Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • 基于Java和XxlCrawler獲取各城市月度天氣情況實(shí)踐分享

    基于Java和XxlCrawler獲取各城市月度天氣情況實(shí)踐分享

    本文主要講解使用Java開發(fā)語言,使用XxlCrawler框架進(jìn)行智能的某城市月度天氣抓取實(shí)踐開發(fā),文章首先介紹目標(biāo)網(wǎng)站的相關(guān)頁面及目標(biāo)數(shù)據(jù)的元素,然后講解在信息獲取過程的一些參數(shù)配置以及問題應(yīng)對(duì),需要的朋友可以參考下
    2024-05-05
  • java中functional interface的分類和使用詳解

    java中functional interface的分類和使用詳解

    這篇文章主要介紹了java中functional interface的分類和使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot?項(xiàng)目瘦身maven/gradle詳解

    SpringBoot?項(xiàng)目瘦身maven/gradle詳解

    這篇文章主要介紹了SpringBoot項(xiàng)目瘦身(maven/gradle),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 基于java中兩個(gè)對(duì)象屬性的比較

    基于java中兩個(gè)對(duì)象屬性的比較

    下面小編就為大家?guī)硪黄趈ava中兩個(gè)對(duì)象屬性的比較。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 基于java中泛型的總結(jié)分析

    基于java中泛型的總結(jié)分析

    本篇文章介紹了,在java中泛型的總結(jié)分析。需要的朋友參考下
    2013-05-05
  • Java深入了解數(shù)據(jù)結(jié)構(gòu)之哈希表篇

    Java深入了解數(shù)據(jù)結(jié)構(gòu)之哈希表篇

    哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關(guān)鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典
    2022-01-01
  • idea神級(jí)插件及如何安裝Bito插件【Bito-ChatGPT】

    idea神級(jí)插件及如何安裝Bito插件【Bito-ChatGPT】

    這篇文章主要介紹了介紹一款idea神級(jí)插件【Bito-ChatGPT】,Bito插件的強(qiáng)大之處在于它可以幫助開發(fā)人員更快地提交代碼,同時(shí)還提供了一些有用的功能,如自動(dòng)補(bǔ)全提交信息、快速查看歷史記錄等,需要的朋友可以參考下
    2023-04-04
  • Java泛型之類型擦除實(shí)例詳解

    Java泛型之類型擦除實(shí)例詳解

    Java泛型在使用過程有諸多的問題,如不存在List<String>.class,List<Integer>不能賦值給List<Number>(不可協(xié)變),奇怪的ClassCastException等,這篇文章主要給大家介紹了關(guān)于Java泛型之類型擦除的相關(guān)資料,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

鹤岗市| 滨海县| 寿光市| 含山县| 尤溪县| 桓台县| 武宁县| 佛坪县| 洱源县| 泸西县| 巨野县| 东兴市| 莱阳市| 大兴区| 札达县| 罗源县| 松原市| 陵水| 新闻| 德昌县| 长海县| 阿勒泰市| 旅游| 玛曲县| 沅江市| 和顺县| 开江县| 永安市| 昂仁县| 临西县| 黄浦区| 钟山县| 南木林县| 涞源县| 诏安县| 奉节县| 永清县| 高尔夫| 湄潭县| 乌兰县| 大新县|