对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的阶段,传统的日志监控等方式无法很好达到跟踪调用、排查问题等需求,可以想象,如果你的服务节点达到有很多很多(两位数以上吧),而没有一个自动跟踪系统,那查找一个问题将成为噩梦。

那么,服务之间调用的问题是:

  • 如何快速发现问题?

  • 如何判断故障影响范围?

  • 如何梳理服务依赖以及依赖的合理性?

  • 如何分析链路性能问题以及实时容量规划?

  • 如何在分布式服务进行日志监控呢?

首先大家会想到分布式链路追踪系统,说到这,就得讲 OpenTracing 规范,OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。详细介绍见 《opentracing文档中文版》。在谷歌论文《Dapper, 大规模分布式系统的跟踪系统》的指导下,许多优秀的APM应运而生,分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。虽然目前市面许多优秀的APM系统,但是作为我们.NET程序员的选择却就少之又少了(甚至没得选),几乎各大分布式追踪系统均提供java版的支持,而.NET上却只有SkyWalking的SkyAPM-dotnet一直在默默的支持着,辛苦了,大佬们。

好吧,既然不能做到技术选型,那么我们就开始工作吧。SkyWalking和Elasticsearch的安装,网上一抓一大把,这里不在重复的介绍“如何安装”和“如何使用”。

从SkyAPM-dotnet中,我们可以拿到团队的官方示例,https://github.com/SkyAPM/SkyAPM-dotnet/tree/master/sample,她分为请求端,前置端和后端(当然,你喜欢怎么叫都行),我稍微修改一下,做了一些数据和请求数上的调整,本篇代码不是重点(SkyAPM-dotne已经达到开箱即用的强大优势),希望得到的数据像下面这样:

解释一下这个数据是怎么来的(或者这个实验的服务架设):

  1. 后端:提供数据库的查询,队列的接口等一系列数据操作的地方;

  2. 前置:提供接口的过滤和处理,可以把他理解为一个逻辑后端,或者一个API网关;

  3. 请求:提供请求,或者模拟串行或并行请求;

这样从逻辑上理解就是1->2->3->2->1,其实一个请求从头到尾然后在返回到前端也都是这样的,你可以把他想象成我们常见的三层模型、等等。

启动三个节点后,通过SkyWalking可以看到,Service数量是3,正是我们创建的三个服务节点,Endpoint表示所有连接的数量,DB和Cache作为数据库(或缓存)的数量,MQ的数量、平均吞吐量、网络拓扑图等等。

整个界面一目了然,更多详细介绍可查看官网解释。

在.NET的生态圈中,曾经有ButterFly这样的原生.NET框架来实现我们整个系统的链路追踪,只是作者表示已不在维护,ButterFly放弃的原因之一也是因为.NET开源项目的参与者太少了,光靠一人之力是没法做出一个稳定高效可用于生产的APM。作者转而投入到了Skyapm-dotnet 所以,在.NET上,我们优先选择有良好支持的skyapm-dotnet!

原文地址:https://www.cnblogs.com/SteveLee/p/10463200.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享相关推荐

  1. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统

    前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的问题: 从APM上说,知道某个节点出现异常,或延迟过过高,却不能及时知道日志反馈情况,总不可能去相应的节点 ...

  2. .NET Core微服务之路:文章系列和内容索引汇总 (v0.52)

    原文:.NET Core微服务之路:文章系列和内容索引汇总 (v0.52) 微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架 ...

  3. .NET Core微服务之路:文章系列和内容索引汇总 (v0.53)

    微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑,包含微服务核心组件如 1. Eureka:实现服务注册与发现. 2. ...

  4. .NET Core微服务之路:不断更新中的目录 (v0.42)

    原文:.NET Core微服务之路:不断更新中的目录 (v0.42) 微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑, ...

  5. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  6. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)

    原文:.NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一) Consul介绍 Consul是HashiCorp公司推出的开源工具[开源地址:https://github.c ...

  7. 微服务链路追踪_.NET Core微服务:分布式链路追踪系统分享

    (给DotNet加星标,提升.Net技能) 转自:另一个老李 cnblogs.com/SteveLee/p/10463200.html 对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过e ...

  8. .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

    前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...

  9. 从零开始使用Skywalking分布式链路追踪系统

    当我们用很多服务时,各个服务间的调用关系是怎么样的?各个服务单调用的顺序\时间性能怎么样?服务出错了,到底是哪个服务引起的?这些问题我们用什么方案解决呢,以前的方式是各个系统自己单独做日志,出了问题从 ...

最新文章

  1. 单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器
  2. 《理解 OpenStack + Ceph》---来自-[爱.知识]-推荐
  3. ​炸了!程序员现在没有这点技能都还不能就业了?
  4. iOS开发之第三方框架Masonry
  5. C语言中的fopen函数
  6. 性能优化篇(3):避免空的图片src
  7. 反向算法_10分钟带你了解神经网络基础:反向传播算法详解
  8. 解决h264bitstream的一个bug
  9. js 递归查询所有的叶子结点_浅谈mysql的查询过程
  10. 第四章表单与文件-笔记-验证
  11. Pytorch和caffe对maxpool模式ceil比较
  12. 实战分析PHP大马隐藏后门——案例二
  13. Javascript实现视频文件播放功能
  14. 杭州电子科技大学计算机考研复试分数线,杭州电子科技大学2020年考研复试分数线...
  15. 201771010112罗松《面向对象程序设计(java)》第十七周学习总结
  16. 股票杠杆哪个平台好?具备的资质是怎么样的?
  17. 英国几个有名的英语考试总结
  18. oracle 查看用户日志,Oracle查看用户操作sql语句以及数据库日志
  19. C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配。
  20. 一个专家级软件架构师的自白书

热门文章

  1. 如何使用wink框架_如何解决Wink Hub的Z-Wave连接问题
  2. Start DWM manually on Windows 7 and vista
  3. chrome插件网站
  4. Log4Net的WebApplication使用
  5. Linux命令大总结(早期学习时的笔记)
  6. 获取本地IP和mac等信息
  7. 谈谈关于MVP模式中V-P交互问题
  8. [导入]php 安全基础 附录B. 函数
  9. 【翻译】C#表达式中的动态查询
  10. 关于Asp.net core配置信息读取的源码分析梳理