(七——下)复习(分布式链路追踪/Rabiit MQ使用/Api Gateway)

作者:山猪打不过家猪日期:10/2/2025


文章目录

  • 项目地址
  • 四、分布式链路追踪
    • 4.1 创建分布式追踪服务
      • 1. 需要的包
        • 2. 注册Trance服务
        • 3. 微服务名称传入
        • 4. 在Logging的Pipeline behavior里添加
        • 5. 注入OpenTele的TraceId到Serilog里
          • 自定义中间件
            * 将自定义中间价添加到管道
        • 6. 注册自定义中间件
    • 4.2 Jaeger服务
      • 1. docker-compose里添加服务
        • 2. 设置openTelemetry导出trace的地址
        • 3. 测试
  • 五、Rabbit MQ
    • 5.1 基础搭建
      • 1. 创建docker 服务
        • 2. 配置连接字符串
        • 3. 让MassTransit支持mq的package
    • 5.2 配置Rabbit MQ
      • 1. 在Event bus里添加MQ的配置
        • 2. 修改Masstransit内存为rabbitMQ
        • 3. program里注册服务
    • 5.3 消息队列注册
      • 1. InfrastructureConfiguration
        • 2. 修改所有模块消费者注册
        • 3. 测试
  • 六、Api Gateway
    • 6.1 基础搭建
      • 1. 创建gateway
        • 2. 创建gateway的容器
        • 3. gateway所需要的包
    • 6.2 配置gateway
      • 1. 创建Program
          • 配置所需要的服务
            * ServiceName配置
        • 2. Gateway所需要的服务配置
        • 3. Yarp反向代理的设置
        • 4. 整体流程

项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

四、分布式链路追踪

  • Serilog:只是为了定位哪一行代码出现了异常
  • Jaeger+openTelemetry:追踪一个请求在分布式系统中经过的所有服务/组件,例如 比如:一次下单请求 → API 网关 → 订单服务 → 支付服务 → 消息队列 → 库存服务 → 邮件服务。

4.1 创建分布式追踪服务

1. 需要的包

    <PackageReference Include="Npgsql.OpenTelemetry" Version="8.0.2" />
    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" />
    <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" />
    <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.8.1" />
    <PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.0.0-beta.11" />
    <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.8.1" />
    <PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.0.0-rc9.14" />

2. 注册Trance服务

  1. 在Common模块的Infrastructure里配置
  2. 不同微服务传入的服务名称需要不一样,以便于trace不同的微服务
  3. 添加采集的指标,例如.net core, http, efcore 等
  4. 单独需要配置MassTransit的
  5. 将Trace数据导出,可以用到不同的监控平台

在这里插入图片描述

3. 微服务名称传入

  1. 在单独的文件夹里,配置当前微服务的 名称
    在这里插入图片描述
  2. 在Program.cs传入微服务的名称

在这里插入图片描述

4. 在Logging的Pipeline behavior里添加

  1. 在之前的Logging的AOP日志中,添加openTelemetry的trace tag
    在这里插入图片描述
  • 从自己的AOP中,获取到模块和request的名称,并且添加到openTelemetry的trace中,这样就给opentelemetry实现了具体的requests级别的Trace
    在这里插入图片描述
  • 从请求类型的全名(Namespace.ClassName)里解析出模块名,比如 Order.Application.Commands.CreateOrderCommand → Order。
  • 拿到请求类的名字,例如 CreateOrderCommand,作为请求的名字。

5. 注入OpenTele的


(七——下)复习(分布式链路追踪/Rabiit MQ使用/Api Gateway)》 是转载文章,点击查看原文


相关推荐


iOS 混淆与团队协作,研发、安全、运维、测试如何在加固流程中高效配合(iOS 混淆、ipa 加固、协作治理)
程序员不说人话10/1/2025

本文聚焦 iOS 混淆的团队协作问题,分析研发、安全、运维、测试常见断层,提出角色分工、协作流程与工具实践,结合实际案例说明如何避免白名单遗漏、符号丢失和功能异常,实现高效安全的混淆治理。


STM32CUBEMX + STM32L051C8T6 + RTC实时时钟 + 闹钟定时唤醒 + 周期唤醒 + STANDBY模式RTC唤醒
佛科院23电子阿浩9/30/2025

记得包含stdio string这两个头文件!测试现象我这边的方法就是锂电池焊死,太阳能供电,板子静态电流低一点就能正常工作较长时间,这样我烧录一次准确的时间戳,就能和实际生活的时间对应上而且确保闹钟正常唤醒。


maven install依赖后 另一个项目 maven reload找不到包
zzxxlty2025/10/2

如果是build报错,找不到包,则在idea设置-maven-runner里,选择delegate IDE build actions to Maven, 让maven接管build


DeepSeek Java 单例模式详解
稚辉君.清华大学马士兵P9Java2025/10/2

Java 单例模式详解 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。## 单例模式的实现方式### 1. 饿汉式(Eager Initialization)javapublic class EagerSingleton { // 类加载时就创建实例 private static final EagerSingleton instance = new EagerSingleton(); // 私有构造函数,防止外部实例化 private EagerSingleton


[创业之路-655]:人类可以直接使用的自然资源
文火冰糖的硅基工坊2025/10/3

人类可以直接使用的自然资源,是指那些无需复杂加工或仅需简单处理即可被利用的自然物质与能量。这些资源是人类生存和发展的基础,广泛应用于生活、生产、能源、交通等领域。 下面从资源类型、使用方式、分布特点与可持续性四个维度,系统梳理人类可以直接使用的自然资源。 一、按资源性质分类:六大类可直接使用的自然资源 类别是否可再生可直接使用的形式使用场景1. 水资源可再生河流、湖泊、雨水、地下水饮用、灌溉、洗涤、发电2. 太阳能可再生阳光(热能与光能)取暖、晾晒、太阳能灶、光伏发电(初级转换)3. 风


Python高校社团选择报名系统 微信小程序设计与实现
qq_31666783672025/10/4

目录 已开发项目效果实现截图技术路线核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 已开发项目效果实现截图 同行可拿货,招校园代理 本系统还支持springboot/laravel/express/nodejs/thinkphp/flask/django/ssm/springcloud 微服务分布式等框架 技术路线 开发语言:Python 框架:flask/django 开发软件:PyCharm/vscode 数据库


Java分布式缓存的负载均衡与扩展性:构建高可用系统的隐形支柱
墨夶2025/10/6

Java与分布式缓存的“生死博弈” 在某个电商平台的双十一大促凌晨,当流量洪峰冲破百万QPS时,Java工程师们发现:那些精心设计的Redis集群、Ehcache本地缓存、以及看似简单的负载均衡策略,正在以肉眼可见的速度瓦解。这个残酷的现实揭示了一个真相:Java在分布式缓存中的角色,远不止是调用API那么简单。它需要像外科医生一样精准控制资源分配,像建筑大师一样设计可扩展的架构。 一、Java分布式缓存的“三体法则”:负载均衡的本质 1.1 负载均衡:分布式系统的“心脏起搏器” /


【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
凉凉心.2025/10/7

1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册 2. 什么是服务注册与发现 Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心,而系统中的其他微服务使用Eureka的客户端连接到Eureka


Android Studio 新功能 Journey Test:借助 AI 实现基于自然语言的 UI 测试用例编写
fundroid2025/10/9

在 Android 应用开发中,大家经常使用单元测试框架进行 UI 测试。随着技术演进,Android Studio 推出的 Journey Test 功能,依托 Gemini AI,为 UI 测试带来了全新的范式转变。 核心能力:自然语言与 AI 驱动的测试 Journey Test 最大的亮点在于结合了自然语言和 Gemini AI 的能力。开发者无需再埋头于复杂的代码编写,只需用日常的自然语言描述测试步骤,比如 “在邮箱输入框中输入 [email protected]”“验证是否显示‘邮箱为


门诊场景评测深度分析报告:医生-病人-测量代理交互对诊断影响机制研究(上)
Allen_Lyb2025/10/10

引言 医疗人工智能(AI)的发展正从静态问答系统向动态交互式决策助手演进,大型语言模型(LLM)在医学领域测评中展现出显著进步,如美国医学执照考试正确率从 2021 年 9 月的 38.1% 提升至 2023 年 11 月的 90.2%,超越人类专家平均水平(87%)[1][2]。然而,临床决策的复杂、顺序性本质与多模态数据收集需求,使得依赖静态问答的传统评估方法难以准确描绘 AI 系统的真实临床能力——研究表明,动态决策环境下诊断准确率可降至静态问答的 1/10 以下[3][4]。与此同时,

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0