Sentinel与控制台通信原理
我们学习了如何为项目整合Sentinel,并搭建了Sentinel的可视化控制台,介绍及演示了各种Sentinel所支持的规则配置方式。本文则对Sentinel进行更进一步的介绍。
首先我们来了解控制台是如何获取到微服务的监控信息的:
image微服务集成Sentinel需要添加
spring-cloud-starter-alibaba-sentinel
依赖,该依赖中包含了sentinel-transport-simple-http模块。集成了该模块后,微服务就会通过配置文件中所配置的连接地址,将自身注册到Sentinel控制台上,并通过心跳机制告知存活状态,由此可知Sentinel是实现了一套服务发现机制的。
通过该机制,从Sentinel控制台的机器列表中就可以查看到Sentinel客户端(即微服务)的通信地址及端口号:
image如此一来,Sentinel控制台就可以实现与微服务通信了,当需要获取微服务的监控信息时,Sentinel控制台会定时调用微服务所暴露出来的监控API,这样就可以实现实时获取微服务的监控信息。
另外一个问题就是使用控制台配置规则时,控制台是如何将规则发送到各个微服务的呢?同理,想要将配置的规则推送给微服务,只需要调用微服务上接收推送规则的API即可。
我们可以通过访问http://{微服务注册的ip地址}:8720/api接口查看微服务暴露给Sentinel控制台调用的API,如下:
image相关源码:
注册/心跳机制:com.alibaba.csp.sentinel.transport.heartbeat.SimpleHttpHeartbeatSender
通信API:com.alibaba.csp.sentinel.command.CommandHandler
的实现类
网友评论