消息总线之集成sc

作者: itfinally | 来源:发表于2017-06-29 11:59 被阅读0次

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

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

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

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

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

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

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

    然后加下下面配置:

    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 加一样的菜:

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

    其实配置也和配置中心一样的,不过我这里的 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

        本文链接:https://www.haomeiwen.com/subject/jqwucxtx.html