分享好友 最新动态首页 最新动态分类 切换频道
Apache ShenYu (incubating)插件实现原理和可观测性实践
2024-12-26 22:33
  1. SkyWalking和ShenYu介绍
  2. ApacheShenYu插件实现原理
  3. 给gRPC插件增加泛化调用追踪并保持兼容
  4. ShenYu网关可观测性实践
  5. 总结

SkyWalking是一个针对微服务、分布式系统、云原生的应用性能监控(APM)和可观测性分析平台(OAP), 拥有强大的功能,提供了多维度应用性能分析手段,包含分布式拓扑图、应用性能指标、分布式链路追踪、日志关联分析和告警。同时还拥有非常丰富的生态。广泛应用于各个公司和开源项目。

Apache ShenYu (incubating)是一个高性能,多协议,易扩展,响应式的API网关。 兼容各种主流框架体系,支持热插拔,用户可以定制化开发,满足用户各种场景的现状和未来需求,经历过大规模场景的锤炼。 支持丰富的协议:、、、、、、等等。

ShenYu的异步和以往接触的异步有一点不一样,是一种全链路异步,每一个插件的执行都是异步的,并且线程切换并不是单一固定的情况(和各个插件实现有关)。 网关会发起各种协议类型的服务调用,现有的SkyWalking插件发起服务调用的时候会创建ExitSpan(同步或异步). 网关接收到请求会创建异步的EntrySpan。 异步的EntrySpan需要和同步或异步的ExitSpan串联起来,否则链路会断。 串联方案有2种:

  • 快照传递: 将创建EntrySpan之后的快照通过某种方式传递到创建ExitSpan的线程中。
    目前这种方式应用在异步的WebClient插件中,该插件能接收异步快照。ShenYu代理Http服务或SpringCloud服务便是通过快照传递实现span串联。
  • LocalSpan中转: 其它RPC类插件不像异步WebClient那样可以接收快照实现串联。尽管你可以改动其它RPC插件让其接收快照实现串联,但不推荐也没必要, 因为可以通过在创建ExitSpan的线程中,创建一个LocalSpan就可以实现和ExitSpan串联,然后将异步的EntrySpan和LocalSpan通过的方式串联。这样实现完全可以不改动原先插件的代码。

也许你会问是否可以在一个通用的插件里面创建LocalSpan,而不是ShenYu RPC插件分别创建一个? 答案是不行,因为需要保证LocalSpan和ExitSpan在同一个线程,而ShenYu是全链路异步. 在实现上创建LocalSpan的代码是复用的。

现有的SkyWalking gRPC插件只支持通过存根的方式发起的调用。而对于网关而言并没有proto文件,网关采取的是泛化调用(不通过存根),所以追踪rpc请求,你会发现链路会在网关节点断掉。 在这种情况下,需要让gRPC插件支持泛化调用,而同时需要保持兼容,不影响原先的追踪方式。实现上通过判断请求参数是否是动态消息(DynamicMessage),如果不是则走原先通过存根的追踪逻辑, 如果是则走泛化调用追踪逻辑。另外的兼容则是在gRPC新旧版本的差异,以及获取服务端IP各种情况的兼容,感兴趣的可以看看源码。

上面讲解了SkyWalking ShenYu插件的实现原理,下面部署应用看下效果。SkyWalking功能强大,除了了链路追踪需要开发插件外,其它功能强大功能开箱即用。 这里只描述链路追踪和应用性能剖析部分,如果想体验SkyWalking功能的强大,请参考SkyWalking官方文档。
版本说明:

  • skywalking-java: 源码构建。说明:shenyu插件会在8.11.0版本发布,可能会在5月或6月初步发布它。Java代理正处于常规发布阶段。
  • skywalking: V9 版本

用法说明:
SkyWalking的设计非常易用,配置和激活插件请参考官方文档。

  • SkyWalking Documentation
  • SkyWalking Java Agent Documentation

通过客户端或者其它方式向网关发起各种服务请求


正常链路:

异常链路:

点击链路节点变可以看到对应的节点信息和异常信息

服务提供者span

网关请求span

数据库监控:

线程池和连接池监控

日志配置见官方文档

最新文章
规则引擎easy-rules初步学习之使用案例(四)
定义一个业务订单的场景,根据订单类型,执行对应的业务操作。假设,订单类型为两种:普通类型、折扣类型。 普通类型订单:打印日志处理 折扣类型订单:执行折扣计算方法 下面介绍一下不引入mysql和引
经济学原理 mobi 下载 pdf 下载 pub 下载 txt 电子书 下载 2024
    以人文精神贯穿全书|将市场经济制度视为演化的结果|突出企业家在市场过程和经济发展中的作用  澄清“市场失灵”的理论误区|系统介绍奥地利学派的商业周期理论|大量本土案例,植根中国情境    海报:     《经济学原理》
抖音表演公会要求,2025年3月前必须取得营业性演出许可证
随着直播行业的迅猛发展,尤其是在抖音等热门平台上,越来越多的公会借助这一渠道获得了巨大的商业机会。为了进一步规范平台上的直播表演,抖音自2024年6月1日起,要求所有入驻平台的公会必须持有营业性演出许可证。如果公会在2025年2月28
神马搜索推广账户后台基础之广告推广计划部分如何做?
前几天我们一起评估了神马搜索的平台价值,文章一出,后台咨询简直被神马挤爆了。在归纳总结这些天的客户咨询问题后,小编发现很多想进行神马搜索推广的广告主们其实本身对于神马广告后台其实并不了解,对于这方面也很好奇,下面一起来看看
跨平台应用开发进阶(六十三):微信小程序开发
随着微信小程序越来越普及,开发人员们也在不断地寻求更高效且方便的开发方式。是一款由开发的跨平台工具,可以同时支持小程序、H5、App等多种平台的开发。那么,当使用开发微信小程序时,怎么进行调试呢?
沈抖只是百度的Plan B
文|降噪NoNoise 孙静 阡陌01 沈抖轮岗,百度无人可用?百度5月5日公布的新一轮高管轮岗,留给外界一脸错愕。最具「太子」潜力的沈抖,突然从执掌百度「钱袋子」的位置,轮岗到了智能云(ACG)。接替他成为移动生态(MEG)负责人的何俊杰,之前
微信回应切断抖音外链!原因是→
1月10日晚间,有媒体报道称,部分抖音链接在微信内既无法直接打开、也无法复制完成跳转,甚至要通过图片 OCR 识别进行文字提取的情况。该消息引发热议,一度冲上微博热搜,微信团队回应称,坚决打击给用户造成诱导、骚扰的外链。该回应并未
我们的婚姻电视剧免费观看完整版
午夜DJ在线观看完整高清HD高清,午夜是线观由英国青年导演布莱恩·史蒂文森执导的剧情片,主要讲述了一位少女在午夜小时遇到了自己的看完梦中情人的故事,双方在经历了一番孤独后,整高终于可以再次重逢的清h清感人故事。故事诙谐、午夜幽
趣提词
趣提词app官方版是一款非常不错的提词器工具,趣提词app功能强大,当你要上台主持,发表讲话时,这款软件能很好地帮你解决忘词的烦恼,用户可以根据自己的讲话速度设置字体滚动的速度以及大小,还支持多种语言,快来下载使用吧!趣提词短视
汽车轮胎全方位评测,性能、质量、耐用性排名解读
在汽车行业中,轮胎作为重要的组成部分,对于车辆的性能、操控性、安全性等方面起着至关重要的作用,随着汽车市场的不断发展,轮胎品牌与种类日益增多,消费者在选择时往往面临诸多困惑,本文将针对当前市场上热门的汽车轮胎进行排名评测,
相关文章
推荐文章
发表评论
0评