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

基于kafka實現(xiàn)Spring Cloud Bus消息總線

 更新時間:2022年04月28日 10:32:37   作者:暮曉引流軟件  
消息總線是一種通信工具,可以在機器之間互相傳輸消息、文件等,這篇文章主要介紹了如何利用kafka實現(xiàn)SpringCloud Bus消息總線,感興趣的可以學習一下

一、什么是消息總線

相信大多數(shù)讀者之前都使用過各種各樣的消息隊列,例如RabbitMQ、kafka等等,消息總線和他的概念差不多,在微服務系統(tǒng)的架構中,我們通常會使用輕量級的消息代理來 構建一個共用的消息主題讓系統(tǒng)中所有的微服務都連接上來,由于該主題中產生的消息會被所有實例監(jiān)聽和消費,所以 我們稱他們?yōu)橄⒖偩€。在總線上的各個實例都可以方便的廣播一些需要讓其他連接到該主題上的實例都知道的消息,例如配置的變更或者其他一些管理操作等。

二、整合消息總線實現(xiàn)配置自動刷新

在上一篇博客中spring cloud config 中我們實現(xiàn)了微服務架構中的分布式配置中心,但是存在一個問題就是,當我們在git上修改了配置以后,需要我們手動通知每一個服務實例,這樣的操作在實例較多的項目中是會死人的,這樣的問題sping cloud 家族肯定也是會考慮到并且給出解決方案的,下面我們就來搞一下。

2.1 面向客戶端基本架構

當我們系統(tǒng)按照上圖啟動以后,圖中的 serviceA的三個實例會請求Config Server以獲取配置,Config Server根據應用配置的規(guī)則從Git倉庫中獲取配置信息并返回。

此時,如果我們想要修改serviceA的配置。首先,去git服務器上修改對應的參數(shù)值,但是這樣并不會觸發(fā)serviceA實例的屬性更新。此時我們向實例3發(fā)送post請求,此時,實例3就會將刷新請求發(fā)送到消息總線中,該消息事件會被serviceA的實例1和實例2從總線中獲取到,并重新從config server中獲取他們的配置信息,從而實現(xiàn)配置信息的動態(tài)更新。

2.2 面向服務端的架構

在之前的架構中,服務的配置更新需要通過具體服務中的某個實例發(fā)送請求,再觸發(fā)對整個服務集群的配置更新。雖然能 傷心啊功能,但是 這樣的結果是,我們指定的應用實例會不同于集群中的其他應用 實例,這樣會增加集群內容的復雜度,不利于將來的運維工作。

三、利用kafka實現(xiàn)消息總線

3.1 Spring Boot 整合kafka

可以參考這篇文章

如果 spring boot 版本采用 2.2.5,則kafka版本使用2.4.0.RELEASE。

3.2 實現(xiàn)動態(tài) 刷新

我們利用上一篇博客中的config 的兩個工程來進行改造。

3.2.1 服務端改造

增加依賴:

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-bus</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

增加配置:

spring.kafka.bootstrap-servers=211.159.167.180:9092
spring.kafka.consumer.group-id=test-consumer-group
spring.cloud.bus.enabled=true
management.endpoints.web.exposure.include= *

關于management.endpoints.web.exposure.include= * 的配置需要注意

注意:

  • __如果是yum的話 ‘’ 需要加 ‘ ’ 單引號*
  • include: ‘*’ http://localhost:8769/actuator/bus-refresh 刷新所有微服務
  • include: ‘refresh’ http://localhost:8769/actuator/bus-refresh 不能訪問

3.2.2 客戶端改造

增加依賴:

<dependency>
? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>
? ? ? ? ? ? <artifactId>spring-cloud-starter-bus-kafka</artifactId>
? ? ? ? </dependency>

? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>
? ? ? ? ? ? <artifactId>spring-cloud-bus</artifactId>
? ? ? ? </dependency>

增加配置:

management.endpoints.web.exposure.include= *
spring.kafka.bootstrap-servers=211.159.167.180:9092
spring.cloud.bus.enabled=true

這樣就ok 了,啟動項目以后,當配置修改以后,我們 給服務端發(fā)發(fā)送POST請求:http://localhost:7071/actuator/bus-refresh

就可以實現(xiàn)動態(tài)刷新:

完整項目地址:https://github.com/zhenghaoxiao/spring-cloud-in-action/tree/bus bus 分支

3.3 指定刷新范圍

在上面的例子中,我們通過向服務端請求/actuator/bus-refresh接口,從而觸發(fā)總線上所有服務實例刷新,但是在一些特殊場景下,我們希望可以刷新服務中某個具體實例的配置,Spring Cloud Bus 對這種場景也有很好的支持,/actuator/bus-refreshdestination=customers:9000 提供了一個destination參數(shù),用來定位具體要刷新的應用程序。當我們調用帶有destination參數(shù)的 接口時,此時總線上的個應用實例會根據destination屬性的值來判斷是否為自己的實例名,若符合才進行配置刷新,若不符合就忽略該 消息。

到此這篇關于基于kafka實現(xiàn)Spring Cloud Bus消息總線的文章就介紹到這了,更多相關kafka消息總線Spring Cloud Bus內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring boot實現(xiàn)熱部署的兩種方式詳解

    Spring boot實現(xiàn)熱部署的兩種方式詳解

    這篇文章主要介紹了Spring boot實現(xiàn)熱部署的兩種方式,這兩種方法分別是使用 Spring Loaded和使用spring-boot-devtools進行熱部署,文中給出了詳細示例代碼和介紹,需要的朋友可以參考學習,下面來一起看看吧。
    2017-04-04
  • Java對文件的隨機讀寫以及壓縮處理操作

    Java對文件的隨機讀寫以及壓縮處理操作

    這篇文章主要介紹了Java對文件的隨機讀寫以及壓縮處理操作,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2015-10-10
  • Java中Date,Calendar,Timestamp的區(qū)別以及相互轉換與使用

    Java中Date,Calendar,Timestamp的區(qū)別以及相互轉換與使用

    以下是對Java中Date,Calendar,Timestamp的區(qū)別以及相互轉換與使用進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • java實現(xiàn)高效的枚舉元素集合示例

    java實現(xiàn)高效的枚舉元素集合示例

    Set是Java集合類的重要組成部分,它用來存儲不能重復的對象。枚舉類型也要求其枚舉元素各不相同。看起來枚舉類型和集合是很相似的。然而枚舉類型中的元素不能隨意的增加、刪除,作為集合而言,枚舉類型非常不實用。EnumSet是專門為enum實現(xiàn)的集合類,本實例將演示其用法
    2014-03-03
  • MyBatis-Plus邏輯刪除和字段自動填充的實現(xiàn)

    MyBatis-Plus邏輯刪除和字段自動填充的實現(xiàn)

    本文主要介紹了MyBatis-Plus邏輯刪除和字段自動填充的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 關于后綴表達式的java實現(xiàn)過程

    關于后綴表達式的java實現(xiàn)過程

    這篇文章主要介紹了關于后綴表達式的java實現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • IntelliJ IDEA導入Gradle項目的方法

    IntelliJ IDEA導入Gradle項目的方法

    這篇文章主要介紹了IntelliJ IDEA導入Gradle項目的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • idea使用Mybatis逆向工程插件詳情

    idea使用Mybatis逆向工程插件詳情

    這篇文章主要介紹了idea使用Mybatis逆向工程插件詳情,首先使用mybatis連接數(shù)據庫接著添加連接的mysql的信息,測試鏈接等過程,更多過程了解請參考下面文章的詳細內容
    2022-01-01
  • Java中的private、protected、public和default的區(qū)別(詳解)

    Java中的private、protected、public和default的區(qū)別(詳解)

    下面小編就為大家?guī)硪黄狫ava中的private、protected、public和default的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Linux如何尋找Java安裝路徑

    Linux如何尋找Java安裝路徑

    這篇文章主要介紹了Linux如何尋找Java安裝路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

即墨市| 芒康县| 白城市| 碌曲县| 云浮市| 潜江市| 龙口市| 怀远县| 遵化市| 岐山县| 平定县| 铜川市| 鹤庆县| 上饶县| 高阳县| 江孜县| 郸城县| 西丰县| 安龙县| 绥棱县| 石泉县| 乌鲁木齐市| 吉林省| 西盟| 麻城市| 永济市| 清镇市| 榆树市| 普宁市| 阿勒泰市| 光山县| 古浪县| 阳谷县| 聂荣县| 宁晋县| 监利县| 阿坝县| 深水埗区| 洞口县| 施秉县| 平罗县|