消息总线之集成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

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

  • 消息总线之kafka

    继上一篇消息总线之zookeeper之后,终于到部署 kafka 了,如果不记得上一篇描述的目录结构,那... 怪...

  • 消息总线之zookeeper

    实际上 spring cloud 的消息总线用的是 kafka,但是 kafka 依赖 zookeeper 进行集...

  • SpringCloud之消息总线

    【前面的话】书接上文SpringCloud之Config[https://eelve.com/archives/S...

  • Android实现消息总线的几种方式,你都会吗?

    Android中消息总线的几种实现方式 前言 消息总线又叫事件总线,为什么我们需要一个消息总线呢?是因为随着项目变...

  • 高级框架第十三天Config:分布式配置中心

    第一部分 Bus:消息总线 主要内容 1.消息总线简介 2.基于消息总线实现全局热刷新 一.消息总线简介 1.什么...

  • 消息总线

    SpringCloudBus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring C...

  • Spark消息总线实现

    消息总线概述 消息总线是Spark内部进行消息传递,触发事件的框架,消息总线的核心是由三个抽象的对象组成: Eve...

  • 微服务之消息总线

    简介 在上篇文章《微服务之配置中心》中写到,客户端可从服务端获取配置信息,当Git仓库中的配置文件修改后,为了让客...

  • Spring Cloud 之消息总线

    客户端获取到最新的配置信息需要执行refresh,可以利用webhook的机制每次提交代码发送请求来刷新客户端,当...

网友评论

    本文标题:消息总线之集成sc

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