我們使用spring cloud做了b2b2c的電子商務(wù)系統(tǒng),除了架構(gòu)本身自帶的系統(tǒng)服務(wù)外,我們將b2b2c的業(yè)務(wù)服務(wù)進(jìn)行了細(xì)粒度拆分,做成了不同的業(yè)務(wù)微服務(wù)。
當(dāng)我們的業(yè)務(wù)系統(tǒng)越來(lái)越龐大復(fù)雜的時(shí)候,各種配置也會(huì)隨之增多。配置文件只要一修改,會(huì)對(duì)commonservice-config配置中心先停止服務(wù),然后再重新啟動(dòng),最后使配置生效。
如果服務(wù)少,我們可以手動(dòng)方式來(lái)啟動(dòng),但是對(duì)業(yè)務(wù)和系統(tǒng)的穩(wěn)定性肯定有一定的影響。
如果是成百上千的服務(wù)都靠手動(dòng)操作,我估計(jì)運(yùn)維人員或技術(shù)人員會(huì)瘋掉的。
針對(duì)以上問(wèn)題,commonservice-config服務(wù)端和業(yè)務(wù)微服務(wù)分別做了相關(guān)的配置,服務(wù)端負(fù)責(zé)將git(svn或本地文件系統(tǒng))中存儲(chǔ)的配置文件進(jìn)行配置化,業(yè)務(wù)微服務(wù)通過(guò)配置從服務(wù)端配置中心獲取相關(guān)配置,如果配置文件變動(dòng)了,通過(guò)刷新業(yè)務(wù)微服務(wù)的方式,將最新的配置信息獲取。
spring cloud Bus通過(guò)一個(gè)輕量級(jí)消息代理連接分布式系統(tǒng)的節(jié)點(diǎn)。這可以用于廣播狀態(tài)更改(如配置更改)或其他管理指令。
接下來(lái),我們就來(lái)實(shí)施通過(guò)spring cloud Bus方案,動(dòng)態(tài)刷新服務(wù)端配置:
1 新建項(xiàng)目microservice-config-client-refresh-cloud-bus
2 為項(xiàng)目添加spring-cloud-starter-bus-amqp依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
</dependencies>
修改bootstrap.yml內(nèi)容
spring:
application:
name: microservice-foo # 對(duì)應(yīng)config server所獲取的配置文件的{application}
cloud:
config:
uri:http://localhost:8080/
profile: dev # profile對(duì)應(yīng)config server所獲取的配置文件中的{profile}
label: master # 指定Git倉(cāng)庫(kù)的分支,對(duì)應(yīng)config server所獲取的配置文件的{label}
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
電子商務(wù)社交平臺(tái)源碼請(qǐng)加企鵝求求:三五三六二四七二五九