分享好友 最新动态首页 最新动态分类 切换频道
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

数据库监控:

线程池和连接池监控

日志配置见官方文档

最新文章
SEO秘籍大揭秘,网站排名提升的神秘武器
《揭秘SEO书籍》深度剖析搜索引擎优化技巧,揭秘提升网站排名的秘密武器。书中详细讲解关键词优化、内容策略、外部链接建设等实战技巧,助你轻松驾驭搜索引擎,实现网站流量和排名的稳步提升。在互联网高速发展的今天,搜索引擎优化(SEO)
独立站建站怎么防止被刷单?别再被薅羊毛了!
刷单对于电商卖家来说,是一个非常熟悉的词。跨境卖家在第三方平台售卖商品时,往往会想尽办法去刷单。因为销量越高,消费者的信任度也会越高。不过独立站是不需要刷单的,因为不管是销量还是评论,网站后台基本上都可以自定义。 但不管是
观课云 2.3.0.5031 最新版
观课云最新版是一款专业的课堂教学评估系统,观课云官方版软件页面简洁,功能强大,能够帮助评估人便捷的实现评估的即时记录和生成评估统计结果,观课云可以让用户清晰直观的了解教学情况,更加明确教下目标,以便更好的进行教学。观课云功
谷歌SEO怎么做,才能有效提升排名?
在当今这个信息爆炸的时代,拥有一个在谷歌搜索中排名靠前的网站,对于任何企业或个人而言,都是获取流量、提升品牌影响力的关键。基于我多年的实战经验和对行业的深刻理解,我深知谷歌SEO的重要性,以及它如何成为我们连接潜在客户的桥梁
视频号直播推流教程_视频号如何推流?
视频号直播是一种通过视频号平台进行实时直播的功能。推流是指将视频数据从本地设备发送到服务器的过程。视频号直播推流方法及流程准备推流设备:需要一台具备摄像头和麦克风的设备,如手机、摄像机或电脑。获取推流地址:在视频号直播功能
纳指首过2万点!谷歌特斯拉等巨头创新高;马斯克身家超4000亿美元;国家网信办集中整治网上金融信息乱象;极越公告:裁员40%不实丨财经早参
每经记者:王琳 每经编辑:张喜威,胡玲NO.1 隔夜市场美股收盘涨跌不一,道指跌0.22%,标普500指数涨0.82%,纳指涨1.77%,首次突破20000点,再创历史新高。明星科技股节节攀升,特斯拉、谷歌、亚马逊、Meta、奈飞均刷新历史新高。其中,特斯
国家统计局城市司首席统计师王中华解读2024年11月份商品住宅销售价格变动情况统计数据
11月份一二三线城市商品住宅销售价格同比降幅收窄国家统计局城市司首席统计师王中华解读2024年11月份商品住宅销售价格变动情况统计数据2024年11月份,70个大中城市中,商品住宅销售价格环比上涨城市个数增加,一线城市商品住宅销售价格环比
进一步加强尊师惠师工作的若干措施感想体会最新汇总
进一步加强尊师惠师工作的若干措施的推行,在教育领域引发了深刻的反响。这些措施犹如春风化雨,滋润着教师们的心田。无论是从物质待遇的提升,还是职业发展路径的拓宽,亦或是社会尊重氛围的营造,都让教师们体会到自身价值的被重视。这不
在 Excel 工作簿中处理表和图表
Excel JavaScript API 以编程方式控制 Excel 工作簿中的文本、表和图表。 在本单元中,你将了解如何使用表,包括格式设置选项、如何筛选数据以及对表中的数据进行排序。 你还将了解如何向工作表添加和自定义图表。Microsoft 365开发人员平
希沃助力山东省探索“三个课堂”实践新模式
【数字视听网讯】党的二十大报告强调了教育数字化的重要性,旨在构建全民终身学习的学习型社会和学习型大国。山东省作为历史文化名省,拥有丰富的教育资源。近年来,山东省积极推动教育数字化转型,深度融合云计算、大数据、物联网、信息安
相关文章
推荐文章
发表评论
0评