消息总线之集成sc

前戏做了那么多,终于到主题了。
如果还没感觉,请先回顾一下zk部署和kafka部署,不然直接来主题会感觉很干涸的(认真脸.jpg 。

anyway,之前说了那么多就是为了建立一个消息平台( ),Config Server 是必备的,还有 Client 也是必备的,所以这里要用到之前搭起的配置中心 (二)。

在之前搭建的配置中心,是很麻烦的,如果 git 的配置有更新,假如有 N
个节点,那是不是要分别在各个节点上调用 N 次 /refresh 接口呢?所以这里引入消息总线,只需要在某个节点调用一次 /bus/refresh 接口即可实现所有节点更新。

然而这也有一个问题,假如有一个属性是横跨多个服务的,那是不是又要去多个服务里面的一个节点内调用一次 /bus/refresh 接口呢?

所以这里直接把 Config Server 也加入消息总线,无论是什么服务,所有节点的配置有问题,找配置中心。

不逼逼,先给配置中心的 pom.xml 加菜:



  org.springframework.cloud
  spring-cloud-starter-bus-kafka

然后加下下面配置:

spring.cloud.stream.kafka.binder.brokers = kafka-node1
spring.cloud.stream.kafka.binder.defaultBrokerPort = 4100
spring.cloud.stream.kafka.binder.zkNodes = zk-node0:3010,zk-node1:3110,zk-node2:3210

这是我这里配置的情况,具体情况要看你自己。

  • spring.cloud.stream.kafka.binder.brokers ---> kafka 实例名称
  • spring.cloud.stream.kafka.binder.defaultBrokerPort ---> kafka 实例端口
  • spring.cloud.stream.kafka.binder.zkNodes ---> zk实例地址

再强调一次,记得加 management.security.enabled = false

接下来到客户端,给 pom.xml 加一样的菜:



  org.springframework.cloud
  spring-cloud-starter-bus-kafka

其实配置也和配置中心一样的,不过我这里的 kafka 用了不同的实例:

spring.cloud.stream.kafka.binder.brokers = kafka-node2
spring.cloud.stream.kafka.binder.defaultBrokerPort = 4200
spring.cloud.stream.kafka.binder.zkNodes = zk-node0:3010,zk-node1:3110,zk-node2:3210

然后,跑起来吧。
现在刷新不需要再去某个服务的某个节点了。只需要对配置中心调用 /bus/refresh 接口即可实现所有服务所有节点刷新。

当然,这是不合逻辑的,比如灰度发布的时候怎么可以全服务更新?

这个接口还有参数,完整的请求是 /bus/refresh?destination=application-name:port

其中 application-name 指定你要更新的服务名称,如果指定更新该服务下所有节点,port 写 **,即/bus/refresh?destination=customers:**

好啦,到这里你已经搭建起一个小而完整的 spring cloud 消息总线了。

你可能感兴趣的:(消息总线之集成sc)