java B2B2C電子商務平臺分析之十一------配置中心和訊息匯流排
Spring Cloud Bus
Spring cloud bus透過輕量訊息代理連線各個分佈的節點。這會用在廣播狀態的變化(例如配置變化)或者其他的訊息指令。Spring bus的一個核心思想是透過分散式的啟動器對spring boot應用進行擴充套件,也可以用來建立一個多個應用之間的通訊頻道。目前唯一實現的方式是用AMQP訊息代理作為通道,同樣特性的設定(有些取決於通道的設定)在更多通道的文件中。願意瞭解原始碼的朋友直接求求交流分享技術:二一四七七七五六三三
Spring cloud bus被國內很多都翻譯為訊息匯流排,也挺形象的。大家可以將它理解為管理和傳播所有分散式專案中的訊息既可,其實本質是利用了MQ的廣播機制在分散式的系統中傳播訊息,目前常用的有Kafka和RabbitMQ。利用bus的機制可以做很多的事情,其中配置中心客戶端重新整理就是典型的應用場景之一,我們用一張圖來描述bus在配置中心使用的機制。
根據此圖我們可以看出利用Spring Cloud Bus做配置更新的步驟:
1、提交程式碼觸發post給客戶端A傳送bus/refresh
2、客戶端A接收到請求從Server端更新配置並且傳送給Spring Cloud Bus
3、Spring Cloud bus接到訊息並通知給其它客戶端
4、其它客戶端接收到通知,請求Server端獲取最新配置
5、全部客戶端均獲取到最新的配置
專案示例
客戶端spring-cloud-config-client改造
1、新增依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
需要多引入spring-cloud-starter-bus-amqp包,增加對訊息匯流排的支援
2、配置檔案
## 重新整理時,關閉安全驗證 management.security.enabled=false ## 開啟訊息跟蹤 spring.cloud.bus.trace.enabled=true spring.rabbitmq.host=192.168.9.89 spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=123456
配置檔案需要增加RebbitMq的相關配置,這樣客戶端程式碼就改造完成了。
3、測試
依次啟動spring-cloud-eureka、spring-cloud-config-server、spring-cloud-config-client專案,在啟動spring-cloud-config-client專案的時候我們會發現啟動日誌會輸出這樣的一條記錄。
2017-05-26 17:05:38.568 INFO 21924 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/bus/refresh],methods=[POST]}" onto public void org.springframework.cloud.bus.endpoint.RefreshBusEndpoint.refresh(java.lang.String)
說明客戶端已經具備了訊息匯流排通知的能力了,為了更好的模擬訊息匯流排的效果,我們更改客戶端spring-cloud-config-client專案的埠為8003、8004依次啟動,這樣測試環境就準備好了。啟動後eureka後臺效果圖如下:
我們先分別測試一下服務端和客戶端是否正確執行,訪問:http://localhost:8001/neo-config/dev,返回資訊:
{ "name": "neo-config", "profiles": [ "dev" ], "label": null, "version": null, "state": null, "propertySources": [ { "name": "https://github.com/ityouknow/spring-cloud-starter/config-repo/neo-config-dev.properties", "source": { "neo.hello": "hello im dev" } } ] }
說明server端都正常讀取到了配置資訊。
依次訪問:、、,返回:hello im dev。說明客戶端都已經讀取到了server端的內容。
現在我們更新neo-config-dev.properties 中neo.hello的值為hello im dev update並提交到程式碼庫中,訪問: 依然返回hello im dev。我們對埠為8002的客戶端傳送一個/bus/refresh的post請求。在win下使用下面命令來模擬webhook.
curl -X POST
執行完成後,依次訪問:、、,返回:hello im dev update。說明三個客戶端均已經拿到了最新配置檔案的資訊,這樣我們就實現了圖一中的示例。
技術架構圖如下:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31539957/viewspace-2222430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java B2B2C電子商務平臺分析之八--配置中心svn示例和refreshJava
- java B2B2C電子商務平臺分析之九--配置中心服務化和高可用Java
- java B2B2C電子商務平臺分析之十四-----註冊中心 ConsulJava
- java B2B2C原始碼電子商務平臺-配置中心svn示例和refreshJava原始碼
- springcloud(九):配置中心和訊息匯流排(配置中心終結版)SpringGCCloud
- java B2B2C springmvc mybatis電子商務平臺原始碼-訊息佇列之RocketMQJavaSpringMVCMyBatis原始碼佇列MQ
- java B2B2C電子商務平臺分析之十------服務閘道器zuulJavaZuul
- (四)spring cloud微服務分散式雲架構-配置中心和訊息匯流排(配置中心終結版)SpringCloud微服務分散式架構
- java B2B2C原始碼電子商務平臺 ---搭建Eureka註冊中心Java原始碼
- java B2B2C原始碼電子商務平臺Java原始碼
- java B2B2C電子商務平臺分析之七-Spring Cloud ConfigJavaSpringCloud
- java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現Java
- java B2B2C Springcloud電子商務平臺原始碼-eureka叢集整合config配置中心JavaSpringGCCloud原始碼
- JAVA 多使用者商城系統b2b2c---配置中心和訊息匯流排Java
- java B2B2C Springcloud電子商務平臺原始碼JavaSpringGCCloud原始碼
- 電子商務平臺 java b2b2c o2oJava
- java B2B2C springmvc mybatis電子商務平臺原始碼-Hystrix 基本配置JavaSpringMVCMyBatis原始碼
- java B2B2C電子商務平臺分析之十六----Zuul的容錯回退與高可用JavaZuul
- java B2B2C電子商務平臺------服務閘道器zuulJavaZuul
- java B2B2C springmvc mybatis電子商務平臺原始碼JavaSpringMVCMyBatis原始碼
- java B2B2C Springcloud電子商務平臺原始碼-RIBBON 核心設計和原理分析JavaSpringGCCloud原始碼
- spring cloud構建java版 b2b2c電子商務雲商平臺SpringCloudJava
- java B2B2C原始碼電子商務平臺 -commonservice-config配置服務搭建Java原始碼
- java原始碼 b2b2c o2o 電子商務平臺Java原始碼
- spring cloud構建網際網路分散式微服務雲平臺-訊息匯流排SpringCloud分散式微服務
- java B2B2C Springcloud電子商務平臺原始碼 -Feign之原始碼解析JavaSpringGCCloud原始碼
- 電子商務平臺b2b2c Springmvc+mybatisSpringMVCMyBatis
- java B2B2C原始碼電子商務平臺---大話Spring CloudJava原始碼SpringCloud
- 手寫訊息匯流排LiveDataBusLiveData
- SpringCloud(六)Bus訊息匯流排SpringGCCloud
- (十四)JAVA springboot微服務b2b2c電子商務系統- Spring Cloud構建分散式電子商務平臺JavaSpring Boot微服務Cloud分散式
- 電子商務平臺 javaWeb b2b2c o2oJavaWeb
- 電子商務平臺 javaweb b2b2c o2oJavaWeb
- java B2B2C Springcloud電子商務平臺原始碼-Ribbon 基本使用JavaSpringGCCloud原始碼
- SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(十)高可用的服務註冊中心SpringGCCloud微服務架構
- SpringCloud微服務雲架構構建B2B2C電子商務平臺分析之-服務消費(Ribbon)SpringGCCloud微服務架構
- java B2B2C 仿淘寶電子商城系統-Spring Cloud構建分散式電子商務平臺JavaSpringCloud分散式
- 微服務雲架構電子商務平臺微服務架構