目录
一 config bus + rabbitmq 消息总线配置刷新
1 sleuth 用于产生链路跟踪日志 ,只添加依赖,零配置
spring cloud 配置中心连接rabbitmq消息服务器 ,且全程保证虚拟机rabbitmq的启动,因为要使用到它的服务解耦,流量削峰,异步调用等场景
一 config bus + rabbitmq 消息总线配置刷新
本章节结合 上面的链接继续编辑
1对BUS消息总线使用的解释:
2 BUS消息总线 配置刷新
第一步:依次启动05,09,02,03,04,06服务,查看02,03工程启动日志是否连接到rabbitmq消息服务器
第二步: 修改2/3/4/9工程,添加依赖: bus,rabbitmq,rabbitmq-binder
- 再手动添加binder-rabbitmq依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
第三步:配置rabbitmq连接
- 09工程---修改application.yml文件
rabbitmq: #rabbitmq 消息服务连接
host: 192.168.64.140 #wht6.cn
port: 5672
username: admin
password: admin
#virtual-host: vh-qt 使用老师的服务器需要在rabbitmq手动创建空间
此处,使用自己的服务器,不需要创建空间
- 2,3,4---修改config目录的三个文件都添加连接rabbitmq的配置,提交推送到远程仓库
rabbitmq: #rabbitmq 消息服务连接
host: 192.168.64.140 #wht6.cn
port: 5672
username: admin
password: admin
#virtual-host: vh-qt 使用老师的服务器需要在rabbitmq手动创建空间
第四步:09项目修改,暴露bus-refresh 刷新端点和路径:
- 添加actuator依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 09配置文件配置bus-refresh:
m.e.w.e.i=bus-refresh
第五步:重启09,等待09完全启动,再重启02,03工程,最后重启04工程,查看刷新端点
- postman 向 bus-refresh 刷新端点发送 post 请求
- 刷新指定的微服务
第六步:03工程添加刷新数据的注解,然后重启
第七步:访问7,8,9,三个用户信息,在此想添加新的用户99
第八步:config目录下user-service-dev.yml添加99用户,推送到远程仓库
- 查看rabbitmq服务,Exchanges栏BUS绑定状态
二 sleuth 链路跟踪
随着系统规模越来越大,微服务之间调用关系变得错综复杂,一条调用链路中可能调用多个微服务,任何一个微服务不可用都可能造整个调用过程失败.
spring cloud sleuth 可以跟踪调用链路,分析链路中每个节点的执行情况.
是一个监控工具,能查看服务进度.
使用工具:sleuth + zipkin.
1 sleuth 用于产生链路跟踪日志 ,只添加依赖,零配置
第一步:修改2,3,4,6 添加sleuth依赖
第二步:按2,3,4,6顺序重启这几个服务,其他服务保持打开状态,如果都是关闭状态,按照5,9,2,3,4,6顺序启动服务
第三步:访问订单服务,在06工程控制查看链路日志
三 sleuth + zipkin 链路分析
zipkin 可以收集链路跟踪数据,提供可视化的链路分析 ,解耦,削峰
链路数据抽样比例
默认 10% 的链路数据会被发送到 zipkin 服务。可以配置修改抽样比例
spring:
sleuth:
sampler:
probability: 0.1
zipkin 服务
下载 zipkin 服务器
需求:2,3,4,6产生的链路日志,要发送到zipkin进行处理
第一步:在2,3,4,6工程 pom文件中分别都添加依赖:zipkin client
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
第二步:在6中添加rabbitmq配置
- rabbitmq依赖,2,3,4都已经加过,再在6中加rabbitmq依赖即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
- rabbitmq连接配置添加到06工程的配置文件中
rabbitmq: #rabbitmq 消息服务连接 ,位置在spring下
host: 192.168.64.140 #wht6.cn
port: 5672
username: admin
password: admin
#virtual-host: vh-qt 使用老师的服务器需要在rabbitmq手动创建空间
第三步:修改yml配置,日志发送方式: rabbit
- 06修改 application.yml 添加zipkin配置连接rabbitmq
zipkin: #连接rabbitmq服务
sender:
type: rabbit
- 2,3,4修改 config文件夹的三个文件,也添加zipkin连接rabbitmq的配置然后提交推送到远程仓库
zipkin: #连接rabbitmq服务
sender:
type: rabbit
第四步:启动zipkin的jar文件,连接rabbitmq消息服务
- zipkin.jar文件目录栏下cmd进入dos窗口,输入下面命令,注意版本和ip端口号
java -jar zipkin-server-2.23.4-exec.jar --zipkin.collector.rabbitmq.uri=amqp://admin:admin@192.168.64.140:5672
第五步:访问,查看是否能访问zipkin服务
第六步:依次重启2,3,4,6服务
访问服务,调用其他服务,产生链路日志,rabbitmq接收,再发送给zipkin,刷新访问多次,链路跟踪数据中,默认只有 10% 会被收集到zipkin
可以在zipkin服务查看调用日志
四 向eureka注册正确的ip地址
以上两个并不是IP地址,只是本地的主机名或本地ip,不算是正确的网卡,给其他人无法使用!
eureka客户端向eureka注册时, 会自动选择网卡, 并可能注册主机名而不是ip地址.
下面配置可以选择正确网卡的ip向eureka进行注册. 以09工程的注册IP地址为例执行下面1和2两步骤
1 选择正确网卡
服务器有多块网卡,要选择正确网卡的ip地址向eureka进行注册
第一步:bootstrap.yml添加配置
spring:
cloud:
inetutils:
ignored-interfaces: # 忽略的网卡
- VM.* #忽略所有VM开头的网卡, .点代表任意字符,*星号代表多个
preferred-networks: # 要是用的网卡的网段
- 192\.168\.0\..+
第二步:修改09工程bootstrap.yml,如果没有就创建一个bootstrap.yml
spring:
cloud:
inetutils:
ignored-interfaces:
- VM.*
preferred-networks:
# - 192\.168\.9\..+
- 176\.8\.6\..+
2 注册ip地址,不注册主机名
注册时,有可能自动选择主机名进行注册,而不使用ip地址. 主机名在局域网内有可能不会被正确的解析,最好使用ip地址进行注册,而不注册主机名
- 修改application.yml ,使用ip注册
eureka:
instance:
prefer-ip-address: true #使用ip注册
- 重启09工程
- 再在09 工程的application.yml文件中添加配置,界面列表中显示的格式也显示ip
eureka:
instance:
prefer-ip-address: true # 使用ip进行注册
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} # 界面列表中显示的格式也显示ip
再次重启09工程,查看eureka服务中config-server的注册名是不是改为了ip地址