本源码来自于skywalking-agent 8.9.0版本
本节主要讲解skywalking-agent的轻量级队列内核,该实现在datacarrier模块主要用于进行数据发送OAP服务端的实现,主要采用缓存批量异步发送的方式进行发送。
注:本篇文章主要是作为自己看书后的总结,内容有可能会存在一些个人理解上的偏差,如果有网友找出问题欢迎提出,感谢!!!如果我理解上的错误误导了您,在此表示抱歉!!!
本篇主要讲述探针插件开发应该从哪几个方面入手。
框架拦截器
对于面向协议实现的跨进程调用的框架而言,都会给使用者拦截器或者是过滤器的实现扩展。框架拦截器的拦截器设计,通常会用于在不破坏业务逻辑的前提下对业务逻辑的执行进行扩展。这样的设计很符合无侵入的扩展需求。通过对拦截器的增强,当框架接收或者发送流量时实现链路数据的传递。当满足拦截后就会进入增强代码块执行增强的逻辑。
核心执行方法
对于任何的框架总会有几个核心的处理方法,而我们就是要找到所需要的核心方法对它进行探针插件的设计。
链路数据绑定
在涉及到跨线程和跨进程时需要对父线程、上层服务的数据进行传递。这里skywalking提供了 ContextSnapshot、ContextCarrier 进行处理。