对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过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!
 

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

  1. Go微服务框架go-kratos实战05:分布式链路追踪 OpenTelemetry 使用

    一.分布式链路追踪发展简介 1.1 分布式链路追踪介绍 关于分布式链路追踪的介绍,可以查看我前面的文章 微服务架构学习与思考(09):分布式链路追踪系统-dapper论文学习(https://www. ...

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

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

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

    原文:NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统 前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的 ...

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

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

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

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

  6. .NET Core集成SkyWalking+SkyAPM-dotne实现分布式链路追踪

    .NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪 SkyWalking是一款APM(应用性能管理),其他的还有Cat.Zipkin.Pinpoint等. 随着微 ...

  7. SkyWalking+SkyApm-dotnet分布式链路追踪系统

    SkyWalking+SkyApm-dotnet分布式链路追踪系统 对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操 ...

  8. 使用Skywalking分布式链路追踪系统

    使用Skywalking分布式链路追踪系统 https://www.cnblogs.com/sunyuliang/p/11424848.html 当我们用很多服务时,各个服务间的调用关系是怎么样的?各 ...

  9. .NET Core微服务之基于Ocelot+Butterfly实现分布式追踪

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.什么是Tracing? 微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错 ...

随机推荐

  1. 图灵一代接入V1

    现在官方没有一代接入了,但是还是可用,留个方法 $.ajax({ type:"post", url:"http://www.tuling123.com/openapi/a ...

  2. 2017-11-03 Fr OCT 球体积的导数为球表面积

    上学期学立体几何时注意到这一点.去问林老师,没听明白(写完笔记后发现林老师讲得是对的,惭愧).今天下午考历史的时候突然想起来. 除了球体积的导数为球表面积外,还注意到圆体积的导数为圆周长.今天中午看w ...

  3. MQ队列堵塞无法读取经验总结

    问题现象: 1号发生本地来帐队列无法读取消息的问题,导致来帐报文均无法正常处理. 原因分析: 应用系统没有修改或上包,昨天交易和消息读取还是一切正常,mbfe的状态也是正常,mq的状态正常,以上正常可 ...

  4. Docker 简介,入门

    1.简介 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行 ...

  5. Mysql 关键字

    ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE C ...

  6. 对话框改变颜色 宽度沾满屏幕 Dialog

    首先在style.xml中定义一个对话框样式,这里可以修改颜色: //对话框沾满整个屏幕的宽度 <style name="DialogShareTheme" parent=& ...

  7. linux环境启动数据库

    1.查看数据库监听的状态: 监听状态:lsnrctl status  出现如下列截图所示数据,说明切切换账户有问题:切换账户时要家:-:  如 su - oracle 第一步:打开Oracle监听$ ...

  8. Linux vfpd锁定用户目录

    在linux ftp配置中,为了防止用户cd 到其他目录,需要锁定用户的根目录. Step1:修改配置文件 [root@ess ~]# vi /etc/vsftpd/vsftpd.conf #chro ...

  9. 考研结束,重返python

    因为考研的原因,python的学习告一段落,现在考验终于结束了,也抓眼又到了新的一年.新的一年里也要继续加油啊.python学习之路还要继续下去,但是毕竟有将近半年没有鹏编程了,首先我还是需要好好的复 ...

  10. 微信小程序之----制作视频弹幕

    1. 文件目录     使用微信, 长度单位使用 rpx 可以避免不同设备的样式调试问题     经验总结,之前一直使用px ,发现换了测试机就崩了        2. index.wxml页面设置v ...