【spring cloud】(六)消息總線——springcloud Bus

在這里插入圖片描述

??各位小伙伴們大家好,歡迎來到這個小扎扎的spring cloud專欄,在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結,鑒于 看到就是學到、學到就是賺到 精神,這波依然是血賺 ┗|`O′|┛

💡Bus知識點速覽

  • 🍹 springcloud Bus
    • 🍸 什么是springcloud Bus?
      • 🍷 什么是消息總線?
      • 🍷 Bus實現自動刷新的原理
  • 🍹 RabbitMQ的下載配置
    • 🍸 Erlang
    • 🍸 RabbitMQ
  • 🍹 Bus動態刷新
    • 🍸 全局廣播通知代碼實現
    • 🍸 定點通知代碼實現

🍹 springcloud Bus

🍸 什么是springcloud Bus?

??上一章的springcloud Bus是對分布式微服務的遠程配置,但是有一個遺留的問題就是,Config客戶端對遠程配置的刷新需要手動使用post請求來完成,這就使得Config客戶端動態刷新變得十分麻煩。于是消息總線springcloud Bus就是來解決這個問題的

🍷 什么是消息總線?

??在微服務架構的系統中,通常會使用輕量級的消息代理來構建一個共用的消息主題,并讓系統中所有微服務實例都鏈接上來。由于該主題中產生的消息都會被所有實例監聽和消費,所以稱它為消息總線。

🍷 Bus實現自動刷新的原理

??所有的Config客戶端都監聽MQ中同一個topic(默認是SpringCloudBus)。當一個服務刷新數據的時候,它會把這個信息放入到Topic中,這樣其他監聽同一Topic的服務就能得到通知,然后去更新自身的配置。
??由于springcloud Bus支持兩種消息的代理(RabbitMQ和kafka),于是接下來的demo選擇使用RabbitMQ 3.7.14,其他的消息中間件Bus暫不支持

🍹 RabbitMQ的下載配置

🍸 Erlang

??第一步: 下載安裝Erlang,地址:http://erlang.org/download/otp_win64_21.3.exe,安裝除了自定義安裝路徑外,一路next即可
??第二步: 配置環境變量,新建一個環境變量命名為ERLANG_HOME,值為Erlang的安裝路徑在這里插入圖片描述
path環境中添加 %ERLANG_HOME%\bin
在這里插入圖片描述
??第三步: win + R 輸入cmd回車,鍵入命令erl測試配置是否成功在這里插入圖片描述

🍸 RabbitMQ

??第一步: 這里以RabbitMQ 3.7.14為例,地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.14,頁面的最下方有下載的地方,安裝除了自定義安裝路徑外,一路next即可在這里插入圖片描述
??第二步: 配置環境變量,新建一個環境變量命名為RABBITMQ_SERVER,值為RabbitMQ的安裝路徑在這里插入圖片描述
path環境中添加 %RABBITMQ_SERVER%\sbin在這里插入圖片描述
??第三步: 安裝管理工具RabbitMQ-Plugins,win + R 輸入cmd回車,鍵入命令

rabbitmq-plugins enable rabbitmq_management

在這里插入圖片描述
??第四步: 第三部安裝的管理工具會安裝幾個RabbitMQ的管理快捷方式,可以點擊win鍵查看,點擊即可執行對應操作在這里插入圖片描述
??第五步: 測試是否安裝成功,瀏覽器http://localhost:15672(默認賬號:guest,密碼:guest),登入RabbitMQ的管理頁就表示已經安裝成功

🍹 Bus動態刷新

??Bus動態刷新有兩種設計思想,第一種利用消息總線觸發一個客戶端的bus/refresh,從而刷新這條總線上的所有客戶端配置;第二種利用消息總線觸發一個服務端ConfigServer的bus/refresh,從而刷新這個配置中心(服務端)上注冊的所有客戶端配置。
??以上兩種思想并不是都有應用,而是選擇了第二種,因為第一種設計思想會使得被選中的服務端節點在配置獲取職責之外新增配置刷新的職責,這會打破微服務的職責單一性和各節點之間的對等性。且一旦被選中的節點失效,配置刷新也將會隨之失效,這條總線上的服務端依舊無法實時獲取到最新的配置。

🍸 全局廣播通知代碼實現

??此時配置相關微服務一共有三個,它們是配置中心服務端3344、客戶端3355、客戶端3366,全局廣播的代碼實現需要對三個微服務都進行配置
??配置中心3344: pom文件和配置文件

<!--添加消息總線RabbitMQ支持-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
spring:#rabbitmq相關配置rabbitmq:host: localhostport: 5672username: guestpassword: guest##rabbitmq相關配置,暴露bus刷新配置的端點 SpringCloud Bus動態刷新全局廣播
management:endpoints: #暴露bus刷新配置的端點web:exposure:include: 'bus-refresh'

??客戶端3355、3366: pom文件和配置文件

<!--添加消息總線RabbitMQ支持-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
spring:#rabbitmq相關配置rabbitmq:host: localhostport: 5672username: guestpassword: guest

以3366為例,配置文件的縮進如下

server:port: 3366spring:application:name: config-clientcloud:config:uri: http://localhost:3344  #配置中心的地址label: master  #分支名稱name: config  #配置文件名稱profile: dev  #讀取后綴名稱   上述三個綜合http://localhost:3344/master/config-dev.yml#rabbitmq相關配置rabbitmq:host: localhostport: 5672username: guestpassword: guest
#服務注冊到eureka地址
eureka:client:service-url:#設置與eureka server交互的地址查詢服務和注冊服務都需要依賴這個地址defaultZone: http://localhost:7001/eureka #單機版# 暴露監控端點 否則 curl -X POST "http://localhost:3355/actuator/refresh" 不可使用
management:endpoints:web:exposure:include: "*"

??🚩值得注意的是,之前rabbitmq的web訪問端口是15672,但是在代碼中連接rabbitmq使用的端口是5672,這里很容易踩坑

??完成前面的配置,使用以下鏈接訪問配置中心服務端3344、客戶端3355、客戶端3366的配置信息

http://localhost:3344/master/config-dev.yml
http://localhost:3355/configInfo
http://localhost:3366/configInfo

??然后修改gitee上的遠程配置,仍然使用上面鏈接訪問,會發現只有配置中心服務端獲取的配置是最新的,但是配置客戶端的配置還是修改前的,需要使用win+R輸入命令刷新,再訪問的話配置客戶端就是最新的配置了

curl -X POST "http://localhost:3344/actuator/bus-refresh"

在這里插入圖片描述

🍸 定點通知代碼實現

??bus除了可以一個命令刷新總線上的所有微服務之外,還可以支持定點刷新,命令如下

定點通知一個

curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"

定點通知多個

curl -X POST "http://localhost:3344/actuator/bus-refresh/{config-client:3355,config-client:3366}"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534965.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python快速排序代碼_Python實現快速排序算法

原標題&#xff1a;Python實現快速排序算法 Python實現快速排序算法 快速排序算法是一種基于交換的高效的排序算法&#xff0c;由C.R.A.Hoare于1962年提出&#xff0c;是一種劃分交換排序。它采用了一種分治的策略&#xff0c;通常稱其為分治法(Divide and conquer algorithm)。…

docker mysql 生產環境_如何部署Docker MySQL生產環境?

1 前言Docker容器原則上是短暫的&#xff0c;如果容器被刪除或損毀&#xff0c;數據或配置將丟失&#xff0c;所以上個章節部署的MySQL只適合于測試環境&#xff0c;由于生產的需求&#xff0c;本章將使用Docker卷機制持久保存Docker容器中創建的數據。2 最佳實踐2.1 環境配置2…

kali 切換root權限_Ubuntu 被曝嚴重漏洞:切換系統語言 + 輸入幾行命令,就能獲取 root 權限...

公眾號關注 “GitHubDaily”設為 “星標”&#xff0c;帶你了解技術圈內新鮮事&#xff01;來自量子位無需系統密碼&#xff0c;就能添加新的 sudo 用戶、獲取 root 權限&#xff0c;事后還能刪除不留痕跡。這是 GitHub 安全研究員 Kevin Backhouse 發現的一個 Ubuntu 系統大漏…

oracle定義變量sql賦值_ORACLE獲取SQL綁定變量值的方法總結

本文總結一下ORACLE數據庫中如何獲取SQL綁定變量值的方法&#xff0c;在SQL優化調優過程中&#xff0c;經常會用到這方面的知識點。在此梳理、總結一下這方面的知識點&#xff0c;方面日后查找、翻閱。方法1&#xff1a;查詢V$SQLV$SQL視圖中的BIND_DATA字段用來存儲綁定變量的…

transition css_Transition 過渡

1&#xff1a;基本概念在一定時間內平滑的過渡&#xff0c;也就是圓滑的以動畫效果改變css的屬性值。它的過渡可以由鼠標點擊、焦點獲取或者失去、被點擊事件或對元素的改變中觸發&#xff1b;不能主動觸發&#xff0c;只能被動觸發。常用的基本屬性有&#xff1a;Transition-d…

jdbc mysql分頁_JDBC【數據庫連接池、DbUtils框架、分頁】

1.數據庫連接池什么是數據庫連接池簡單來說&#xff1a;數據庫連接池就是提供連接的。。。為什么我們要使用數據庫連接池數據庫的連接的建立和關閉是非常消耗資源的頻繁地打開、關閉連接造成系統性能低下編寫連接池編寫連接池需實現java.sql.DataSource接口創建批量的Connectio…

python讀寫文件操作_詳解Python文件讀寫操作

讀文件 打開文件&#xff08;文件需要存在&#xff09;#打開文件 f open("data.txt","r") #設置文件對象 print(f)#文件句柄 f.close() #關閉文件 #為了方便&#xff0c;避免忘記close掉這個文件對象&#xff0c;可以用下面這種方式替代 with open(data.t…

keyloadtool_phoenix 利用CsvBulkLoadTool 批量帶入數據并自動創建索引

需要先創建表&#xff1a;CREATE TABLE IF NOT EXISTS population (state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINTCONSTRAINT my_pk PRIMARY KEY (state, city));在phoenix 目錄下執行hadoop jar /home/phoenix-4.6.0-HBase-1.0-bin/phoenix-4.6.0-HBase-…

【cloud Alibaba】(三)流量控制、熔斷降級(下)——Sentinel

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Sen…

python gui入門的例子_Python GUI編程之Tkinter入門之道

相信剛學習使用Python進行GUI編程的時候&#xff0c;肯定都會聽過Tkinter&#xff0c;畢竟是standard Python interface to the Tk GUI toolkit.用來寫一些小程序還是很方便的。但如果是剛接觸GUI編程的話肯定是被官方文檔搞的有些懵&#xff0c;畢竟還沒弄清楚套路。之前使用過…

@async 默認線程池_SpringBoot 線程池的使用

Java大聯盟幫助萬千Java學習者持續成長關注作者&#xff5c;Musclehengblog.csdn.net/Muscleheng/article/details/81409672前言最近在做訂單模塊&#xff0c;用戶購買服務類產品之后&#xff0c;需要進行預約&#xff0c;預約成功之后分別給商家和用戶發送提醒短信。考慮發短信…

mysql 橫向擴展 中間件_mysql-proxy數據庫中間件架構 | 架構師之路

一、mysql-proxy簡介mysql-proxy是mysql官方提供的mysql中間件服務&#xff0c;上游可接入若干個mysql-client&#xff0c;后端可連接若干個mysql-server。它使用mysql協議&#xff0c;任何使用mysql-client的上游無需修改任何代碼&#xff0c;即可遷移至mysql-proxy上。mysql-…

python selenium對象怎么序列化_python selenium爬取斗魚

不加延遲報錯selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”xpath”,”selector”:”.//span[class”DyListCover-hot”]”}(Session info: chrome80.0.3987.122)最開始以為是版本問題&#xff0c;不…

神經網絡的全連接層_深度神經網絡全連接層

一、概念全連接層一般在網絡的最后部分做分類輸出&#xff0c;全連接層的有m個輸入和n個輸出&#xff0c;每一個輸出都和所有的輸入相連&#xff0c;相連的權重w都是不一樣的&#xff0c;同時每一個輸出還有一個bias。二、前向全連接假設輸入是4&#xff0c;輸出是4&#xff0c…

vs 選定內容沒有屬性頁_從智能單品,到全屋智能:2019中國智能家居發展白皮書【附82頁PPT】...

2019年&#xff0c;智能家居行業在技術、市場和行業的變革中迎接新的挑戰和機遇。一方面&#xff0c;AI、IoT、邊緣計算全面賦能智能家居&#xff1b;另一方面&#xff0c;中國的房地產行業正在從上半場的“增量開發”&#xff0c;切換到下半場的“存量經營”、“樓盤精裝化”政…

python決策樹的應用_機器學習-決策樹實戰應用

1.下載2.安裝&#xff1a;雙擊3.創建桌面快捷方式安裝目錄\bin文件夾\&#xff1a;找到gvedit.exe文件右鍵 發送到桌面快捷方式&#xff0c;如下圖&#xff1a;4.配置環境變量將graphviz安裝目錄下的bin文件夾添加到Path環境變量中&#xff1a;5.驗證是否安裝并配置成功進入win…

【SSM面向CRUD編程專欄 3】關于黑馬程序員最全SSM框架教程視頻,P37集老師跳過的模塊創建以及tomcat下載安裝配置和運行等諸多問題

寫在前面&#xff1a;? 本人是在學習B站黑馬程序員SSM框架教程視頻的時候在P37集遇到了問題&#xff0c;如果不解決還沒辦法往下接著聽&#xff0c;老師跳過的模塊創建以及tomcat下載安裝配置和運行等諸多問題&#xff0c;全在這篇博客中得到了解決 &#x1f622;解決上…

python人臉識別源碼_Python 抖音機器人,讓你找到漂亮小姐姐

本項目作者沉迷于抖音無法自拔&#xff0c;常常花好幾個小時在抖音漂亮小姐姐身上。本著高效、直接地找到漂亮小姐姐的核心思想&#xff0c;我用 Python ADB 做了一個 Python 抖音機器人 Douyin-Bot。特性自動翻頁顏值檢測人臉識別自動點贊自動關注隨機防 Ban自動評論原理打開…

thinkphp josn mysql_ThinkPHP:JSON字段類型的使用(ORM)

ThinkPHP5.1版本正式發布已經有一段時間了&#xff0c;我會陸續給大家介紹其中的新特性。今天要給大家介紹的是一個可能很多用戶還不了解的一個特性&#xff1a;JSON字段數據支持。不過首先注意一點&#xff0c;本篇內容中描述的JSON字段數據的支持是從V5.1.4版本引入的。由于包…