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

    • silky 框架介绍
  • 入门

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

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

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

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

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

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

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

什么是 silky?

silky 是一个基于 .NET 平台构建的开源微服务开发框架,专注于 RPC 通信与微服务治理两大核心能力。它遵循 .NET 生态的主流编程模型,以最小侵入的方式将普通的 .NET 主机应用转变为具有服务注册、服务发现、远程调用、分布式事务等能力的微服务应用。

silky 的核心理念是:

接口即服务 — 一个标注了 [ServiceRoute] 的普通 C# 接口,就是一个完整的微服务端点,框架自动生成 HTTP WebAPI 和 RPC 端点,无需手写路由、无需额外配置。

silky微服务框架


核心架构

┌──────────────────────────────────────────────────────────┐
│               HTTP / WebSocket 客户端                     │
└─────────────────────────┬────────────────────────────────┘
                          │ HTTPS
            ┌─────────────▼─────────────┐
            │       Silky API 网关       │
            │  Swagger · JWT · 限流      │
            │  CORS  · 审计 · Profiler   │
            └─────────────┬─────────────┘
                          │ DotNetty TCP RPC
       ┌──────────────────┼──────────────────┐
       │                  │                  │
 ┌─────▼─────┐      ┌─────▼─────┐     ┌─────▼─────┐
 │  服务 A   │ ←──► │  服务 B   │ ←──►│  服务 C   │
 │  (Host)   │  RPC │  (Host)   │  RPC│  (Host)   │
 └─────┬─────┘      └─────┬─────┘     └─────┬─────┘
       └──────────────────┼──────────────────┘
                          │
         ┌────────────────┼────────────────┐
   ┌─────▼──────┐  ┌──────▼─────┐  ┌──────▼──────┐
   │  Consul /  │  │   Redis /  │  │  MySQL / PG │
   │  Nacos /   │  │  分布式缓存 │  │  SQL Server │
   │  Zookeeper │  │            │  │  (EF Core)  │
   └────────────┘  └────────────┘  └─────────────┘

silky 的整体架构由以下几个层次组成:

1. 服务引擎与模块化系统

silky 基于模块化设计,每个功能单元都封装为独立的 SilkyModule,通过 [DependsOn] 特性声明依赖关系,框架在启动时按依赖顺序完成服务注册和初始化。

  • 开发者无需手动管理复杂的服务注册顺序
  • 可以通过自定义模块扩展框架能力,也可以通过插件方式动态加载模块
  • 支持在模块的 Initialize / Shutdown 生命周期钩子中执行自定义逻辑(如数据库迁移)

2. RPC 通信层

silky 使用 DotNetty 作为底层传输框架,基于 TCP 长连接实现高性能 RPC 通信:

  • 接口代理:通过 Autofac 动态代理,依赖注入接口即可透明调用远程服务
  • 多种编解码:支持 JSON(默认)、MessagePack、ProtoBuf 等序列化格式
  • 心跳检测:长连接支持心跳包,自动检测并移除不健康的服务实例
  • RPC 安全:通过 rpc.token 保护内部 RPC 通道,外部无法绕过网关直接访问

3. 微服务治理层

治理能力说明
服务注册与发现支持 Zookeeper / Nacos / Consul,实例上下线实时感知(发布-订阅或心跳轮询)
负载均衡轮询(Polling)、随机(Random)、哈希一致性(HashAlgorithm),可按接口方法级别覆盖
超时控制全局或方法级别配置 RPC 超时时间,开发环境可设置为 0(不超时)
故障转移IO 异常、通信异常时自动选择其他实例重试,可配置重试次数和间隔
熔断保护连续非业务异常 n 次后触发断路器,在配置时间内拒绝调用,基于 Polly
RPC 限流实例级别最大并发数控制,超出后自动路由到其他实例
HTTP 限流集成 AspNetCoreRateLimit,支持按 IP 或客户端 ID 限流
服务降级通过 [Fallback] 特性指定回退接口,RPC 失败时自动执行降级逻辑
缓存拦截RPC 调用时从 Redis 读取缓存,命中则直接返回,不发起真正的网络请求

4. 主机类型

silky 提供四种主机类型,满足不同部署场景:

主机类型构建方法对外 HTTPRPC 服务WebSocket
通用主机ConfigureSilkyGeneralHostDefaults❌✅❌
Web 主机ConfigureSilkyWebHostDefaults✅✅❌
WebSocket 主机ConfigureSilkyWebSocketDefaults❌✅✅
网关主机ConfigureSilkyGatewayDefaults✅❌❌

5. 安全体系

  • 网关统一认证:JWT Token 在网关层统一校验,各业务微服务无需重复实现认证逻辑
  • RPC Token 保护:集群内所有服务共享同一 rpc.token,外部无法直接访问 RPC 端口
  • 接口级权限控制:[Authorize] / [AllowAnonymous] / [Governance(ProhibitExtranet = true)] 精细控制访问权限
  • SSL 支持:RPC 通信支持 SSL/TLS 加密

6. 可观测性

  • 链路追踪:集成 SkyAPM,追踪 HTTP 请求、RPC 调用、TCC 分布式事务、EFCore 数据访问的完整链路
  • 日志:内置 Serilog 支持,结构化日志,可输出到控制台、文件、Elasticsearch 等
  • Dashboard:内置集群管理控制台,可视化查看所有服务实例的状态、服务条目配置、实时性能指标

生态集成

silky 完全兼容 ASP.NET Core 生态,可与以下组件无缝集成:

类别支持的组件
ORM / 数据访问Entity Framework Core、FreeSql、Dapper
消息总线MassTransit、CAP(支持 RabbitMQ、Kafka 等)
对象映射AutoMapper(Silky.ObjectMapper.AutoMapper)、Mapster(Silky.ObjectMapper.Mapster)
参数验证DataAnnotations(内置)、FluentValidation(Silky.Validation.Fluent)
缓存内存缓存(默认)、Redis(Silky.Caching.StackExchangeRedis)
注册中心Zookeeper(Silky.RegistryCenter.Zookeeper)、Nacos(Silky.RegistryCenter.Nacos)、Consul(Silky.RegistryCenter.Consul)
链路追踪SkyAPM(Silky.SkyApm.Agent)
日志Serilog(Silky.Logging.Serilog)
分布式锁DistributedLock.Redis(Silky.DistributedLock.Redis)

支持的 .NET 版本

Silky 版本支持的 .NET 版本
3.x(当前稳定版).NET 6 / .NET 7 / .NET 8 / .NET 9 / .NET 10

与其他框架的对比

特性silkyDaprMassTransitgRPC
开发语言C# / .NET多语言C# / .NET多语言
RPC 方式接口代理(透明)HTTP / gRPC Sidecar消息总线代码生成(Protobuf)
服务治理内置内置(Sidecar 模式)部分需自行实现
分布式事务TCC(内置)Saga(Sidecar)Saga(Outbox)不支持
学习成本低(.NET 原生模型)中(需了解 Sidecar 架构)中中
部署复杂度低高(需部署 Dapr Runtime)低低

silky 的优势在于:对 .NET 开发者极其友好,无需学习新的编程范式,利用现有的接口、DI、中间件知识即可构建完整的微服务应用,且无需引入额外的 Sidecar 进程。


开源地址

  • GitHub:https://github.com/liuhll/silky
  • Gitee:https://gitee.com/liuhll2/silky

贡献

  • 参与 Issue 讨论,报告 Bug 或提出功能建议

  • 提交 Pull Request 贡献代码

  • 加入 QQ 群(934306776)参与框架学习和讨论

    qq-group.jpg

编辑当前页