Config,Bus, Stream,Sleuth+Zipkin详解
Posted 一只猪的思考
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Config,Bus, Stream,Sleuth+Zipkin详解相关的知识,希望对你有一定的参考价值。
一、Config 分布式配置中心
1.概述
- Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护。
- 好处:
-
- 集中管理配置文件
-
- 不同环境不同配置,动态化的配置更新
-
- 配置信息改变时,不需要重启即可更新配置信息到服务
- 配置信息改变时,不需要重启即可更新配置信息到服务
2.config快速入门
config server:
-
使用gitee创建远程仓库,上传配置文件
-
搭建 config server 模块
application.yml配置
启动类配置
-
导入 config-server 依赖
<dependencies>
<!-- config-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
- 编写配置,设置 gitee 远程仓库地址
spring:
application:
name: config-server
# spring cloud config
cloud:
config:
server:
# git 的 远程仓库地址
git:
uri: XXX
label: master # 分支配置
- 测试访问远程配置文件
config client:
- 导入 starter-config 依赖
<dependencies>
<!--spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!--config client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
-
配置config server 地址,读取配置文件名称等信息
-
获取配置值
可以直接通过键值对的形式取出config里面的值 -
启动测试
Config 客户端刷新
- 在 config 客户端引入 actuator 依赖
<dependencies>
<!--spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
-
获取配置信息类上,添加 @RefreshScope 注解
-
添加配置
management.endpoints.web.exposure.include: refresh
-
使用curl工具发送post请求
curl -X POST http://localhost:8001/actuator/refresh
Config 集成 Eureka
二、Bus 消息总线
1.bus概述
- Spring Cloud Bus 是用轻量的消息中间件将分布式的节点连接起来,可以用于广播配置文件的
更改
或者服务
的监控管理。关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间相通信。 - Spring Cloud Bus 可选的消息中间件包括 RabbitMQ 和 Kafka 。
2.bus的快速入门
- 分别在 config-server 和 config-client中引入 bus依赖:bus-amqp
<!-- bus -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
- 分别在 config-server 和 config-client中配置 RabbitMQ
config-server
spring:
application:
name: config-server
# spring cloud config
cloud:
config:
server:
# git 的 远程仓库地址
git:
uri: https://gitee.com/itheima_cch/itheima-configs.git
label: master # 分支配置
#配置rabbitmq信息
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /
provider
# 配置config-server地址
# 配置获得配置文件的名称等信息
spring:
cloud:
config:
# 配置config-server地址
# uri: http://localhost:9527
# 配置获得配置文件的名称等信息
name: config # 文件名
profile: dev # profile指定, config-dev.yml
label: master # 分支
# 从注册中心去寻找config-server地址
discovery:
enabled: true
service-id: CONFIG-SERVER
#配置rabbitmq信息
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /
management:
endpoints:
web:
exposure:
include: '*'
-
在config-server中设置暴露监控断点:bus-refresh
-
启动测试
三、Stream 消息驱动
1.Stream概述
- Spring Cloud Stream 是一个构建消息驱动微服务应用的框架。
- Stream 解决了开发人员无感知的使用消息中间件的问题,因为Stream对消息中间件的进一步封装,可以做到代码层面对中间件的无感知,甚至于动态的切换中间件,使得微服务开发的高度解耦,服务可以关注更多自己的业务流程。
- Spring Cloud Stream目前支持两种消息中间件RabbitMQ和Kafka
2.Stream组件
-
Spring Cloud Stream 构建的应用程序与消息中间件之间是通过绑定器 Binder 相关联的。绑定器对于应用程序而言起到了隔离作用, 它使得不同消息中间件的实现细节对应用程序来说是透明的。
-
binding 是我们通过配置把应用和spring cloud stream 的 binder 绑定在一起
-
output:发送消息 Channel,内置 Source接口
-
input:接收消息 Channel,内置 Sink接口
Stream 消息消费者
- 创建消息生产者模块,引入依赖 starter-stream-rabbit
<dependencies>
<!--spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- stream -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>
- 编写配置,定义 binder,和 bingings
server:
port: 9000
spring:
cloud:
stream:
# 定义绑定器,绑定到哪个消息中间件上
binders:
itheima_binder: # 自定义的绑定器名称
type: rabbit # 绑定器类型
environment: # 指定mq的环境
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /
bindings:
input: # channel名称
binder: itheima_binder #指定使用哪一个binder
destination: itheima_exchange # 消息目的地
-
定义消息发送业务类。添加 @EnableBinding(Source.class),注入MessageChannel output ,完成消息发送
-
编写启动类,测试
Stream 消息生产者
- 创建消息消费者模块,引入依赖 starter-stream-rabbit
<dependencies>
<!--spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- stream -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>
- 编写配置,定义 binder,和 bingings
server:
port: 8000
spring:
cloud:
stream:
# 定义绑定器,绑定到哪个消息中间件上
binders:
itheima_binder: # 自定义的绑定器名称
type: rabbit # 绑定器类型
environment: # 指定mq的环境
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /
bindings:
output: # channel名称
binder: itheima_binder #指定使用哪一个binder
destination: itheima_exchange # 消息目的地
-
定义消息接收业务类。添加 @EnableBinding(Sink.class),使用@StreamListener(Sink.INPUT),完成消息接收。
-
编写启动类,测试
四、Sleuth+Zipkin 链路追踪
1.概述
- Spring Cloud Sleuth 其实是一个工具,它在整个分布式系统中能跟踪一个用户请求的过程,捕获这些跟踪数据,就能构建微服务的整个调用链的视图,这是调试和监控微服务的关键工具。
-
- 耗时分析
-
- 可视化错误
-
- 链路优化
- Zipkin 是 Twitter 的一个开源项目,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。
2.Sleuth+Zipkin 快速入门
安装启动zipkin。 java –jar zipkin.jar
访问zipkin web界面。 http://localhost:9411/
在服务提供方和消费方分别引入 sleuth 和 zipkin 依赖
<!-- sleuth-zipkin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
分别配置服务提供方和消费方。
启动,测试
以上是关于Config,Bus, Stream,Sleuth+Zipkin详解的主要内容,如果未能解决你的问题,请参考以下文章
5.SpringCloud -- 配置中心 Config消息总线 Bus链路追踪 Sleuth配置中心 Nacos
Spring Cloud系列之 ConfigBusStreamSleuth
Spring Cloud系列之 ConfigBusStreamSleuth
SpringCloud第二季之Stream,Sleuth学习笔记