Silky微服务框架在线文档Silky微服务框架在线文档
首页
文档
配置
源码解析
博文
github
gitee
  • 简体中文
  • English
首页
文档
配置
源码解析
博文
github
gitee
  • 简体中文
  • English
  • 简介

    • silky 框架介绍
  • 入门

    • 名词解释
    • 快速开始
    • 脚手架
    • 微服务模块化架构的最佳实践 & 约定
    • 示例
  • 主机与模块

    • 主机
    • 网关
    • 模块
    • 插件
  • 网关与 HTTP

    • Swagger 文档
    • 性能分析(MiniProfiler)
    • 跨域(CORS)
    • 审计日志
  • 服务与 RPC

    • 应用服务和服务条目
    • rpc通信
    • websocket通信
    •  服务注册中心
    • 服务治理
  • 数据与缓存

    • EFCore 数据访问
    • 缓存
    • 分布式锁
  • 安全与认证

    • 身份认证与授权
    • 分布式事务
  • 基础设施

    • 依赖注入
    • 对象到对象的映射
    • 参数验证
    • 链路跟踪
    • 日志(Serilog)
    • 健康检查
    • 消息总线(MassTransit)
    • 单元测试与集成测试

链路跟踪的概念

在分布式微服务系统中,一次外部请求往往需要经过多个服务、多个中间件的协同才能完成。链路追踪的目的是将一次分布式请求还原成完整的调用链路,集中展示各服务节点的耗时、请求状态、机器信息等,帮助开发者快速定位性能瓶颈和故障原因。

silky 框架通过集成 SkyAPM 实现链路追踪,支持以下维度的追踪:

追踪维度说明
HTTP 请求网关接收到的外部 HTTP 请求
RPC 调用微服务之间的内部 RPC 通信
TCC 分布式事务各阶段(Try/Confirm/Cancel)的执行链路
EFCore 数据访问数据库查询链路(需引入 EFCore 诊断包)

搭建 SkyWalking 服务

SkyWalking 服务由三个组件构成:

  • Elasticsearch:存储链路数据
  • skywalking-oap-server:SkyWalking 分析服务
  • skywalking-ui:可视化 UI 界面

silky 提供了现成的 docker-compose 编排文件,进入 samples/docker-compose/infrastr 目录执行:

docker-compose -f docker-compose.skywalking.yml up -d

服务启动后:

  • OAP gRPC 端口:11800(用于 Agent 上报数据)
  • SkyWalking UI 地址:http://127.0.0.1:8080

在 silky 应用中启用链路追踪

步骤一:注入 SkyAPM 服务

在每个微服务应用中(Web 主机、通用主机均适用),通过 IConfigureService 注册 SkyAPM 服务:

public class ConfigureService : IConfigureService
{
    public void ConfigureServices(IServiceCollection services, IConfiguration configuration)
    {
        services.AddSilkySkyApm(); // 启用 SkyAPM 链路追踪
    }
}

步骤二:添加 SkyAPM 配置文件

在项目根目录添加 skyapm.json 配置文件,并设置复制到输出目录:

{
  "SkyWalking": {
    "ServiceName": "DemoHost",
    "Namespace": "",
    "HeaderVersions": ["sw8"],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Information",
      "FilePath": "logs/skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "127.0.0.1:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000
      }
    }
  }
}

关键配置项说明:

配置项说明
ServiceName当前服务在 SkyWalking UI 中显示的名称,建议与服务主机名一致
Transport.gRPC.ServersSkyWalking OAP 服务地址,格式为 host:port
Sampling.SamplePer3Secs每 3 秒采样次数,-1 表示全量采样
Sampling.Percentage采样百分比,-1.0 表示 100% 采样

步骤三:在 SkyWalking UI 中查看调用链路

发起 HTTP 请求后(例如调用 /api/test),打开 SkyWalking UI:http://127.0.0.1:8080,通过 普通服务 → 追踪(Trace) 即可查看完整的调用链路。

skywalking1.png


完整配置示例

以下是一个包含链路追踪的微服务完整配置示例(appsettings.yaml + skyapm.json):

appsettings.yaml:

rpc:
  token: ypjdYOzNd4FwENJiEARMLWwK0v7QUHPW
  port: 2200

registryCenter:
  type: Nacos
  connectionStrings: http://127.0.0.1:8848

distributedCache:
  redis:
    isEnabled: true
    configuration: 127.0.0.1:6379,defaultDatabase=0

skyapm.json:

{
  "SkyWalking": {
    "ServiceName": "OrderService",
    "Transport": {
      "gRPC": {
        "Servers": "127.0.0.1:11800"
      }
    }
  }
}

建议

在生产环境中,可以根据流量情况调整 SamplePer3Secs 或 Percentage 来控制采样率,避免链路数据过多影响存储和查询性能。

编辑当前页
Prev
参数验证
Next
日志(Serilog)