.NET Core微服务实践( 三 )


Zipkin:由Twitter公司开发并开源 , Java语言实现 , 侵入性相对于CAT要低一点 , 需要对web.xml之类的配置文件做修改 , 但依然对代码有侵入 , 也没有选择 。
Pinpoint:一个韩国团队开源的产品 , 运用了字节码增强技术 , 只需要在启动时添加启动参数即可 , 对代码无侵入 , 目前支持Java和PHP语言 , 底层采用HBase来存储数据 , 探针收集的数据粒度非常细 , 但性能损耗大 , 因其出现的时间较长 , 完成度也很高 , 应用的公司较多 。
SkyWalking:国人开源的产品 , 主要开发人员来自于华为 , 2019年4月17日Apache董事会批准SkyWalking成为顶级项目 , 支持Java、.Net、NodeJs等探针 , 数据存储支持Mysql、Elasticsearch等 , 跟Pinpoint一样采用字节码注入的方式实现代码的无侵入 , 探针采集数据粒度粗 , 但性能表现优秀 , 且对云原生支持 , 目前增长势头强劲 , 社区活跃 , 中文文档没有语言障碍 。
.NET Core微服务实践
文章图片
当我们用很多服务时 , 各个服务间的调用关系是怎么样的?各个服务单调用的顺序时间性能怎么样?服务出错了 , 到底是哪个服务引起的?这些问题我们用什么方案解决呢 , 以前的方式是各个系统自己单独做日志 , 出了问题从暴出问题的服务开始一个一个服务的排查 , 耗时耗力 , 有些日志不全的 , 还不一定查得出来 。 好在现在有Skywalking链路追踪系统 , 可以不用写任何代码 , 就追踪到各个服务间的调用关系和性能状态等 。
SkyWalking是分布式系统的应用程序性能监视工具 , 专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计 。 SkyWalking是观察性分析平台和应用性能管理系统 。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案 。
下面是SkyWalking6.x的架构图:
.NET Core微服务实践
文章图片
5使用携程Apollo构建分布式配置中心
.NET Core微服务实践
文章图片
Apollo(阿波罗)是携程框架部门研发的分布式配置中心 , 能够集中化管理应用不同环境、不同集群的配置 , 配置修改后能够实时推送到应用端 , 并且具备规范的权限、流程治理等特性 , 适用于微服务配置管理场景 。
服务端基于SpringBoot和SpringCloud开发 , 打包后可以直接运行 , 不需要额外安装Tomcat等应用容器 。 Java客户端不依赖任何框架 , 能够运行于所有Java运行时环境 , 同时对Spring/SpringBoot环境也有较好的支持 。 .Net客户端不依赖任何框架 , 能够运行于所有.Net运行时环境 。
6基于App.Metrics+InfluxDB+Grafana实现统一性能监控
.NET Core微服务实践
文章图片
App.Metrics是一款开源的支持.NETCore的监控插件 , 它还可以支持跑在.NETFramework上的应用程序(版本>=4.5.2) 。 采用管道注入的方式,对代码的入侵性极小 。
.NET Core微服务实践
文章图片
InfluxDB是一款开源的分布式时序、时间和指标数据库 , 使用go语言编写 , 无需外部依赖 。
.NET Core微服务实践
文章图片
Grafana是一个可视化面板(Dashboard) , 有着非常漂亮的图表和布局展示 , 功能齐全的度量仪表盘和图形编辑器 , 支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源 。
AppMetrics插件只是简单的记录了请求量 , 当前请求地址等详细信息并没记录 , 量大的话不建议使用 。