分布式日志,调用链的监控设计思想
分布式日志的设计:参照分布式事物的设计思想
A 独立的第三方服务:一但进入客户端设置好的切面,进入拦截器,校验有没有此注解,有的话向日志服务端发送需要记录的日志
客户端
1,切面
2,注解 (可以是现成的@controller,@service注解)
服务端 (也可以引入消息中间件异步处理请求)
3,需要记日志的时候,自己做的第三方服务,根据拦截的注解,记录请求,相应的日志
B 每个系统中集成kafka,需要记录日志的时候通过kafka发送消息,当然也需要专门接收日志消息的服务,持久化消息日志---即专门用一个消息服务器异步记录每个系统需要记录的日志
分布式系统调用链的设计:
A 独立的第三方服务:一但进入客户端设置好的切面,进入拦截器,校验有没有此注解,有的话向日志服务端发送需要记录的日志
客户端
1,切面
2,注解
服务端(也可以引入消息中间件异步处理请求)
3,在拦截到了相应的注解的时候,第一次生成一个id(没有id就生成,有就传递),后面调用下级的时候传递,将请求方的invoker元数据(ip 端口 类 方法 参数)+id记录入库
,将接受请求的下级的invoker元数据+id(上游传过来的id)入库,后面页面展现调用链的时候就按照id组织
B 每个系统中集成消息插件,在调用下游之前通过消息服务记录这一级的invoker数据+id(一般为了减轻业务系统的压力,会采用异步的机制,将需要记录的
元数据通过消息发送给专门记录调用链的消息接收服务),下游也是记录传入的id+元数据,由消息服务器异步记录
java的两个特色就是1,反射;2,注解