文章目录
一、BUS消息总线 erlang rabbitMQ
BUS消息总线:
也就是做一个微服务来代替我们自己去自动发上面的curl refresh
安装erlang
以3355位模板整一个3366来查看广播效果:
3366controller:
3344为消息总控、3355、3366位消息客户端、设计思想为:
利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置。
具体理由很简单、因为如何以某一个客户端带动其他客户端,这就不符合客户端的职责、打破了客户端端点的一致性。
给3344、3355、3366添加消息总线支持。
具体POM YML
就不贴图了
也许有人好奇这里怎么已经9.0了!!!??(ΩДΩ)
其实是因为这是昨天晚上8点开始调试、一直到今天,现在是15:01:35
才调成。
之前发了curl请求,3355、3366一直没有反应。
原来是3355、3366本身没有注册到rabbitMQ上,具体原因无非是配置文件pom、yml的问题。
比如:
然后我的pom文件也有些问题,也是重蹈覆辙了半天才成的。
这里给大家一个我的经验就是:
Springcloud Bus动态刷新定点通知:
二、Springcloud Stream 消息驱动 分组驱动与持久化
屏蔽底层消息中间件的差异、降低切换成本、统一消息的编程模型
即构建消息驱动的微服务框架
rabbitMQ中间为exchange、kafka为topic、通过springcloud stream的binder屏蔽两种消息中间件的差异
生产者微服务8801构建:
消费者微服务8802构建:
启动8801并执行sendMessage
http://localhost:15672/#/ :
再创建一个消费者8803、也去接收8801生产者的消息
8802、8803如果是不同组,那么可以重复消费、但如果是同一组,则不能重复消费,否则会出现数据错误。
如果不分组,stream默认每个服务都是自成一组。
同组测试:
成功避免了同组重复消费的问题o( ̄︶ ̄)o
然后均衡策略是轮询,从接受顺序可以看出同组成员是轮换接受信息的。
分组的另一个优势:消息持久化
暂停8802和8803两个消费者
并删除8802的分组配置
保留8803的分组配置
然后8801生产者发送3次消息( 刷新3次8801/sendMessage )
三、Springcloud Sleuth分布式请求链路追踪 zipkin
Springcloud Sleuth分布式请求链路追踪
安装zipkin2.12.9
自springcloud F版起、使用zipkin不需要安装客户端,仅直接安装jar包调用即可
此命令窗口不要关闭、否则服务就停止了
名词解释:
Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
span:表示调用链路来源,通俗的理解span就是一次请求信息
接下来改造服务提供者8001和消费者80
四、Springcloud Alibaba Nocos特性
Springcloud Alibaba
下面是官方的对Nacos特性的解释:
Nacos 的关键特性包括:
服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.
服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
Nacos = Eureka + Bus + Config
成功进入:
nacos作为服务注册中心:
以9001为模板,新建一个和9001基本一样的9002
新建消费者order83 注册到nacos上
nacos底层集成了ribbon、所以直接是支持负载均衡的。
nacos默认为AP模式、但也支持AP/CP模式的切换。
具体通过curl命令
curl -X PUT ‘$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP’
nacos作为服务配置中心:
Nacos中的dateid的组成格式与springboot配置文件中的匹配规则:
公式:
s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}- spring.application.name−{spring.profile.active}.${spring.cloud.nacos.config.file-extension}
经过公式拼凑出配置文件名:
nacos-config-client-dev.yaml