千家信息网

基于kafka怎么实现Spring Cloud Bus消息总线

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"基于kafka怎么实现Spring Cloud Bus消息总线"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"基于kafka怎么实现Sprin
千家信息网最后更新 2025年01月18日基于kafka怎么实现Spring Cloud Bus消息总线

这篇文章主要介绍"基于kafka怎么实现Spring Cloud Bus消息总线"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"基于kafka怎么实现Spring Cloud Bus消息总线"文章能帮助大家解决问题。

一、什么是消息总线

相信大多数读者之前都使用过各种各样的消息队列,例如RabbitMQ、kafka等等,消息总线和他的概念差不多,在微服务系统的架构中,我们通常会使用轻量级的消息代理来 构建一个共用的消息主题让系统中所有的微服务都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以 我们称他们为消息总线。在总线上的各个实例都可以方便的广播一些需要让其他连接到该主题上的实例都知道的消息,例如配置的变更或者其他一些管理操作等。

二、整合消息总线实现配置自动刷新

在上一篇博客中spring cloud config 中我们实现了微服务架构中的分布式配置中心,但是存在一个问题就是,当我们在git上修改了配置以后,需要我们手动通知每一个服务实例,这样的操作在实例较多的项目中是会死人的,这样的问题sping cloud 家族肯定也是会考虑到并且给出解决方案的,下面我们就来搞一下。

2.1 面向客户端基本架构

当我们系统按照上图启动以后,图中的 serviceA的三个实例会请求Config Server以获取配置,Config Server根据应用配置的规则从Git仓库中获取配置信息并返回。

此时,如果我们想要修改serviceA的配置。首先,去git服务器上修改对应的参数值,但是这样并不会触发serviceA实例的属性更新。此时我们向实例3发送post请求,此时,实例3就会将刷新请求发送到消息总线中,该消息事件会被serviceA的实例1和实例2从总线中获取到,并重新从config server中获取他们的配置信息,从而实现配置信息的动态更新。

2.2 面向服务端的架构

在之前的架构中,服务的配置更新需要通过具体服务中的某个实例发送请求,再触发对整个服务集群的配置更新。虽然能 伤心啊功能,但是 这样的结果是,我们指定的应用实例会不同于集群中的其他应用 实例,这样会增加集群内容的复杂度,不利于将来的运维工作。

三、利用kafka实现消息总线

3.1 Spring Boot 整合kafka

可以参考这篇文章

如果 spring boot 版本采用 2.2.5,则kafka版本使用2.4.0.RELEASE。

3.2 实现动态 刷新

我们利用上一篇博客中的config 的两个工程来进行改造。

3.2.1 服务端改造

增加依赖:

            org.springframework.cloud            spring-cloud-starter-bus-kafka                            org.springframework.cloud            spring-cloud-starter-stream-kafka                            org.springframework.cloud            spring-cloud-bus                            org.springframework.boot            spring-boot-starter-actuator        

增加配置:

spring.kafka.bootstrap-servers=211.159.167.180:9092spring.kafka.consumer.group-id=test-consumer-groupspring.cloud.bus.enabled=truemanagement.endpoints.web.exposure.include= *

关于management.endpoints.web.exposure.include= * 的配置需要注意

注意:

  • __如果是yum的话 ‘’ 需要加 ‘ ’ 单引号*

  • include: ‘*’ http://localhost:8769/actuator/bus-refresh 刷新所有微服务

  • include: ‘refresh’ http://localhost:8769/actuator/bus-refresh 不能访问

3.2.2 客户端改造

增加依赖:

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

增加配置:

management.endpoints.web.exposure.include= *spring.kafka.bootstrap-servers=211.159.167.180:9092spring.cloud.bus.enabled=true

这样就ok 了,启动项目以后,当配置修改以后,我们 给服务端发发送POST请求:http://localhost:7071/actuator/bus-refresh

就可以实现动态刷新。

3.3 指定刷新范围

在上面的例子中,我们通过向服务端请求/actuator/bus-refresh接口,从而触发总线上所有服务实例刷新,但是在一些特殊场景下,我们希望可以刷新服务中某个具体实例的配置,Spring Cloud Bus 对这种场景也有很好的支持,/actuator/bus-refreshdestination=customers:9000 提供了一个destination参数,用来定位具体要刷新的应用程序。当我们调用带有destination参数的 接口时,此时总线上的个应用实例会根据destination属性的值来判断是否为自己的实例名,若符合才进行配置刷新,若不符合就忽略该 消息。

关于"基于kafka怎么实现Spring Cloud Bus消息总线"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

实例 配置 消息 服务 总线 架构 应用 更新 主题 信息 动态 参数 知识 系统 问题 集群 改造 内容 博客 场景 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全应急响应视频课程 湖北自考游戏软件开发技术 网络安全教程网 山东济南联想服务器总代理哪里有 湖南郴州软件开发工程师培训机构 极智之光软件开发 葫芦娃黑猫警长数据库 html5连接服务器 企业应该用什么数据库服务器 天下三再战今朝服务器没玄修么 手机网络安全密钥在那儿找 深圳市科创网络技术有限公司 统计系统面临的网络安全形势 苏州德颐网络技术有限公司 丽江新华互联网科技贵不贵 数据库安全厂家排名 观看网络安全公开课心得 如果数据库中已有同名的表 福建app手机软件开发公司 新疆革命文物数据库 深圳聊天软件开发 svn服务器代码下载 er图表示的数据库模型称为 学院网络安全领导小组 河北百米生活网络技术有限公司 数据库文件的打开 app牛牛软件开发 走路领积分软件开发顺序图 软件开发基础知识的书 黑龙江数据库防护箱
0