链路追踪
微服务架构下,所有的服务都分散在不同的地方,一旦某个服务出现问题,排查起来很费时费力。所以在微服务的演进下,需要一个全链路追踪系统来分析服务的运行状态。
go-micro的trace插件
Micro通过Wrapper实现了三种trace接口,aswxray,opencensus,opentracing。第一个是亚马逊AWS的。没有尝试。
opentracing是一个开源的标准。提供对厂商中立的 API,用来向应用程序添加追踪功能并将追踪数据发送到分布式的追踪系统。已经快成功行业的标准了。
opencensus是谷歌开源的数据收集和分布式跟踪框架。OpenCensus也是实现了opentracing标准。OpenCensus 不仅提供规范,还提供开发语言的实现,和连接协议,而且它不仅只做追踪,还引入了额外的度量指标,这些一般不在分布式追踪系统的职责范围。opencensus也支持把数据导出到别的系统做分析。比如zipkin和Prometheus等
我们本次实验通过两种组合来实现go-micro场景下的链路追踪。
opencensus+zipkin
opentracing+zipkin
opentracing+Jaeger
注:zipkin 是 twitter 开源的分布式跟踪系统,并且具有UI界面来显示每个跟踪请求的状态。
Prometheus是当前热门的监控方案,也是用go+Grafana开发的,据说是未来云原生应用下的监控解决方案。我们下一节详细讲这个。
运行zipkin
docker run -d -p 9411:9411 openzipkin/zipkin