项目需要通过代理对SpringBoot进行部分监控,业界最有名的是可能是SpringBootAdmin
了,之前也有过了解,界面和作用都挺好看的,本次好奇心驱动下,探究了下源码。
分别从1.X和2.X版本来理解,本文主要是其思想,时间关系不涉及太多源码,其实其源码也很少,相信大家能够搞定。
最开始我猜测是SpringBootAdmin Client
(后续SpringBootAdmin
简称为 SBA
)的作用是定期将所有数据
上报给SBA Server
,而Server
负责存储这么多信息:Metrics
,env
等。
但是Server端源码,发现内容挺少的,没有相关Bean或者类的定义,如果是服务端进行保存,应该会有这么多信息的描述类,那么服务端又是如何做的了?
应该是服务端主动向客户端请求了这些部分的信息。
我在1.x版本中找到了zuul这个包,当时很诧异,因为zull是网关啊,SBA
拿他来干什么?
最后经过分析UI端的URL
报文,找到了思路。
SBA Server
是接收了客户端的信息,不过主要是注册
和反注册
信息。
向Metrics
这些信息并不会要求客户端主动往上报,而是服务端在需要的时候,向客户端请求。
客户端向服务端注册时候,会生成一个客户端的id和其地址信息(URL+PORT等)的映射,当服务端需要某个客户端的信息的时候,Server端会将这个请求转发到客户端进行获取。
这个原理是不是类似Zuul
或者说API网关了。
至于客户端是如何暴露这些信息的?这个就是Actuator
的事情了!