### SkyWalking
本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。采用java探针,字节码增强的基本原理
**优点**:功能比较全,UI比较好,性能损耗较少,主流中间件和数据库的监控基本都支持
**缺点**:es强在检索能力但存储能力偏弱
### Zipkin
twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。可进行多种存储方式进行支持,并且可进行扩展开发,制定对应监控的服务链路以及采样率。采用拦截请求,发送(HTTP,mq)数据至zipkin服务。
**优点**:与`spring-cloud`项目整合非常方便,而且支持以`spring-boot`的方式部署`zipkin-collector`
**缺点**:功能比较少,而且有代码入侵(jar包和配置项)
### Pinpoint
韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。采用ava探针,字节码增强的基本原理
**优点**:功能比较全,UI比较好,而且调用链的跟踪粒度非常细,并且依靠HBase强大的存储能力适合日志量非常庞大的场景
**缺点**:由于采集信息太过详细所以对性能的损耗最大,并且HBase的维护代价有点大,需要有能力hold住一套HBase集群
### 接入方式:
|类别|Zipkin|Pinpoint|SkyWalking|
| --- | --- | --- | --- |
|接入方式|基于linkerd或者sleuth方式,引入配置即可|javaagent字节码|javaagent字节码|
|agent到collector的协议|http,MQ|thrift|gRPC|
|OpenTracing|√|×|√|
### 使用情况分析:
|类别|Zipkin|Pinpoint|SkyWalking|
| --- | --- | --- | --- |
|颗粒度|接口级|方法级|方法级|
|全局调用统计|×|√|√|
|traceid查询|√|×|√|
|报警|×|√|√|
|JVM监控|×|×|√|
### 应用展示友好度分析:
|类别|Zipkin|Pinpoint|SkyWalking|
| --- | --- | --- | --- |
|友好与详细程度|功能简单,但是清晰,可完成基本链路监视功能|功能丰富,应用清晰,链路监控能力丰富|功能比较丰富,应用清晰,完整的链路监控能力|
### 存储支持:
Zipkin:ES,mysql,Cassandra,内存
Pinpoint:Hbase
SkyWalking:ES,H2
### PinPoint和skyWalking支持的插件对比
|类别|Pinpoint|SkyWalking|
| --- | --- | --- |
|web容器|Tomcat6/7/8,Resin,Jetty,JBoss,Websphere|Tomcat7/8/9,Resin,Jetty|
|JDBC|Oracle,mysql|Oracle,mysql,Sharding-JDBC|
|消息中间件|ActiveMQ, RabbitMQ|RocketMQ 4.x,Kafka|
|日志|log4j, Logback|log4j,log4j2, Logback|
|HTTP库|Apache HTTP Client, GoogleHttpClient, OkHttpClient|Apache HTTP Client, OkHttpClient,Feign|
|Spring体系|spring,springboot|spring,springboot,eureka,hystrix|
|RPC框架|Dubbo,Thrift|Dubbo,Motan,gRPC,ServiceComb|
|NOSQL|Memcached, Redis, CASSANDRA|Memcached, Redis|
性能分析:
摘自:https://juejin.im/post/5a7a9e0af265da4e914b46f1
### 以上三种全链路监控方案需要对比的项提炼出来:
1、探针的性能
主要是agent对服务的吞吐量、CPU和内存的影响。微服务的规模和动态性使得数据收集的成本大幅度提高。
2、collector的可扩展性
能够水平扩展以便支持大规模服务器集群。
3、全面的调用链路数据分析
提供代码级别的可见性以便轻松定位失败点和瓶颈。
4、对于开发透明,容易开关
添加新功能而无需修改代码,容易启用或者禁用。
5、完整的调用链应用拓扑
自动检测应用拓扑,帮助你搞清楚应用的架构
比较关注探针的性能,毕竟APM定位还是工具,如果启用了链路监控组建后,直接导致吞吐量降低过半,那也是不能接受的。对skywalking、zipkin、pinpoint进行了压测,并与基线(未使用探针)的情况进行了对比。
选用了一个常见的基于Spring的应用程序,他包含Spring Boot, Spring MVC,redis客户端,mysql。 监控这个应用程序,每个trace,探针会抓取5个span(1 Tomcat, 1 SpringMVC, 2 Jedis, 1 Mysql)。这边基本和 skywalkingtest 的测试应用差不多。
模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合起来,一共有12种。下面看下汇总表:

从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的影响较为明显,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,对CPU和memory的影响都差不多在10%之内。
- 微服务介绍
- 软件架构设计
- 系统简介
- 运行环境
- 模块介绍
- 启动部署命令参数
- 打包说明
- 开发说明
- Java8
- 认证理论
- 有网络隔离
- 无网络隔离
- token自动续签设计
- url级权限控制
- 单点登录
- 登录
- 用户名密码(+验证码)登录
- 通过openId获取token
- 通过手机号获取token
- 第三方系统接口对接
- 第三方系统单点登录
- 通用刷新token
- 账号登出接口
- 统一异常处理
- 日志埋点工具
- 审计日志
- yml自定义配置自动提示
- Redis使用
- CacheManager集成
- 搜索中心
- 网关zuul动态路由
- swagger
- 解决开发环境的服务冲突和实例乱窜
- 多租户理论
- 多租户实现
- 分布式锁
- 分布式id生成器
- 分布式事务
- 分库分表sharding-sphere
- 消息队列
- 系统幂等性
- X 实时搜索系统设计
- Spring Cloud性能调优
- 链路跟踪
- JWT的RSA非对称密钥生成
- jdk
- Oracle
- OpenJDK
- Dragonwell
- JVM介绍
- 常见JVM内存错误及解决方案
- JVM分析工具详解
- nexus
- docker
- 安装
- docker-compose安装
- 私有仓库搭建
- 指定数据储存目录
- 添加私有仓库
- 提交拉取镜像
- X 免Dockerfile文件构建项目镜像
- 持续集成部署CI/CD
- Confluence知识管理
- JIRA事务与项目跟踪软件
- Gitlab代码仓库
- Jenkins自动化部署
- SonarQube代码检测
- Rancher容器管理平台
- nacos
- 部署
- Rancher部署nacos
- 注册中心
- 配置中心
- 多环境
- 生产部署方案
- X 通过Nginx来实现环境隔离
- Sentinel详解
- 动态规则扩展
- 在生产环境中使用 Sentinel
- 启动配置项
- X 网关流控
- ELK日志系统和慢查询SQL
- docker安装
- 普通安装
- Filebeat安装部署
- ES数据定期删除
- 没数据问题排查思路
- X Logstash的grok语法调试
- 慢查询sql
- 审计日志
- Elasticsearch性能优化
- APM监控
- SkyWalking介绍
- Zipkin,Pinpoint,SkyWalking三种服务链路监控组件分析
- 服务端部署
- 客户端部署
- 日志清理
- Metrics监控
- 二进制包部署
- docker部署
- docker安装各组件监控
- Grafana仪表盘和告警配置
- JMeter压力测试工具
- 使用说明
- 分布式事务
- TX-LCN(同步)
- X SEATA(同步)
- X RocketMQ(异步)
- 消息队列
- RocketMQ
- RocketMQ安装部署
- RocketMQ常见异常处理
- SpringCloud-Stream
- RabbitMQ
- Redis
- 单机安装
- 主从复制
- 主从复制+哨兵
- cluster集群
- 持久化方案
- MySQL
- 单机安装
- 主从复制
- 主从切换
- 主主复制
- 高可用
- 分表分库
- Canal数据库日志解析消费
- Canal安装
- 实时同步数据到ElasticSearch
- FastDFS
- docker安装
- centos安装
- 项目管理系统
- 禅道
- 111