分布式服务跟踪系统

Dapper的分布式跟踪

一、分布式服务跟踪系统存在的目的和意义

大型互联网公司为什么需要分布式跟踪系统?为了支撑日益增长的庞大业务量,我们会把服务进行整合、拆分,使我们的服务不仅能通过集群部署抵挡流量的冲击,又能根据业务在其上进行灵活的扩展。一次请求少则经过三四次服务调用完成,多则跨越几十个甚至是上百个服务节点。

1、如何动态展示服务的链路?
2、如何分析服务链路的瓶颈并对其进行调优?
3、如何快速进行服务链路的故障发现?

二、分布式跟踪系统的设计要点

第一点:对应用透明、低侵入。为什么说这一点最重要?因为分布式系统面对的客户是开发者,如果他们的系统需要花费较大的改造才能接入你的分布式跟踪系统,除非你是他的老板,否则他会直接和你说:No!!没人用是最惨的结果。那么怎么才能做到对业务系统最低的侵入性呢?Dapper给出的建议是在公共库和中间件上做文章。没错,分布式系统之间的通讯靠的都是RPC、MQ等中间件系统,即使是内部使用的线程池或者数据库连接池,大多也是使用经过公司包装公共库,这就给服务跟踪带来了机会,我只要对中间件和公共库进行改造,就几乎可以做到全方位跟踪,当然,这也是有难度的;

第二点:低开销、高稳定。大多数应用不愿意接入监控系统的原因是怕影响线上服务器的性能,特别是那些对性能特别敏感的应用,所以,分布式跟踪系统一定要轻量级,不能有太复杂的逻辑和外部依赖,甚至需要做到根据服务的流量来动态调整采集密度。

第三点:可扩展。随着接入的分布式系统的增多,压力也将不断增长,分布式跟踪系统是否能动态的扩展来支撑不断接入的业务系统,这也是设计时需要考虑的。

可以看出,这三点并没有什么特别,对于服务降级系统、分布式跟踪系统和业务监控系统等,这三点都是必须的。

三、参考

1、Dapper,大规模分布式系统的跟踪系统
2、原分布式跟踪系统(一):Zipkin的背景和设计
3、分布式链路追踪技术对比
4、ZIPKIN-Existing instrumentations

你可能感兴趣的:(分布式服务跟踪系统)