go - 如何通过端到端的微服务链跟踪请求?
问题描述
我在 Go 中使用 OpenCensus 将跟踪数据推送到 Stackdriver 以进行涉及 2 个或更多微服务链的调用,我注意到我得到了许多跟踪,其中包含仅针对某些服务的跨度,而不是整个端到端调用。
目前,我将此归因于并非所有调用都被跟踪(仅某个样本)并且每个服务都决定是否跟踪其当前跨度这一事实。
这是它的工作方式吗?有什么方法可以确保在对跟踪进行采样时,调用链中的所有服务都会这样做?
解决方案
从架构上讲,当您开发微服务时,请确保您的 API 网关创建一个唯一的 ID,如 GUID,它会通过所有微服务传播,同样,您要确保您有日志聚合器,它将从所有服务中收集日志,最后你得到很好的请求可追溯性。
推荐阅读
- javascript - for 循环没有按照我给出的时间设置 HTML?
- powershell - Powershell通过获取批处理文件的内容在foreach-object中设置变量
- wagtail - 对于某些用户来说,Wagtail 管理页面加载速度非常慢(explorable_pages() 问题?)
- python - 在单个图中绘制多条曲线时选择列名作为图例
- python - Selenium Element 不可交互异常 - 如何克服这个问题?
- html - Bootstrap Carousel 如何使用应用的 img-fluid 类垂直对齐图像
- javascript - Nuxt js - SSR 页面重复组件
- wordpress - 如何使用 add_meta_box 保存和获取选定项目 ID 列表
- scala - 根据条件复用 Akka 源/流
- jsonschema - oneOf 嵌套在数组中