驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
SpringBootAdmin Server端原理
/  

SpringBootAdmin Server端原理

前言

项目需要通过代理对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的事情了!

骐骥一跃,不能十步。驽马十驾,功在不舍。