实用指南:(七——下)复习(分布式链路追踪/Rabiit MQ使用/Api Gateway)
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
四、分布式链路追踪
- Serilog:只是为了定位哪一行代码出现了异常
- Jaeger+openTelemetry:追踪一个请求在分布式系统中经过的所有服务/组件,例如 比如:一次下单请求 → API 网关 → 订单服务 → 支付服务 → 消息队列 → 库存服务 → 邮件服务。
4.1 创建分布式追踪服务
1. 需要的包
2. 注册Trance服务
- 在Common模块的Infrastructure里配置
- 不同微服务传入的服务名称需要不一样,以便于trace不同的微服务
- 添加采集的指标,例如.net core, http, efcore 等
- 单独需要配置MassTransit的
- 将Trace数据导出,可以用到不同的监控平台

3. 微服务名称传入
- 在单独的文件夹里,配置当前微服务的 名称

- 在Program.cs传入微服务的名称

4. 在Logging的Pipeline behavior里添加
- 在之前的Logging的AOP日志中,添加openTelemetry的trace tag

- 从自己的AOP中,获取到模块和request的名称,并且添加到openTelemetry的trace中,这样就给opentelemetry实现了具体的requests级别的Trace

- 从请求类型的全名(Namespace.ClassName)里解析出模块名,比如 Order.Application.Commands.CreateOrderCommand → Order。
- 拿到请求类的名字,例如 CreateOrderCommand,作为请求的名字。
浙公网安备 33010602011771号