Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

592 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PulseRPC

NuGet License .NET

基于现代 .NET 平台的高性能 RPC 框架,支持 TCP 和 KCP 传输协议,面向 Unity 游戏和微服务架构设计。

项目仍在积极开发中,部分接口可能发生变化。首次上手只参考经过 CI 端到端验证的三项目 samples/HelloRPC 黄金路径。

🚀 核心特性

  • 多传输协议:TCP(可靠)与 KCP(低延迟)传输实现
  • 集群发现IDiscoveryProvider / IClusterMembership 抽象,提供静态成员以及 Consul、Etcd、Kubernetes 后端
  • 客户端负载均衡:支持随机、轮询、最少连接、平滑加权轮询与一致性哈希;动态权重通过 IConnectionWeightProvider 提供,一致性哈希调用必须提供稳定的 ServiceProxyOptions.StickyKey,非法输入会明确失败
  • 健康检查与故障转移:客户端连接健康检查与服务端 IPulseServiceHealthCheck 支持
  • 连接管理:连接生命周期管理,支持自动重连
  • 有界消息执行:服务端使用固定数量的 worker shard;连接在其生命周期内绑定一个 shard,每个 shard 使用有界队列,队列满时立即拒绝新消息;有效调优入口为 PulseServerOptions.MessageWorkerShardCountMessageQueueCapacityPerShard
  • 代码生成:基于 Source Generator 的客户端/服务端代理,客户端避免使用反射(兼容 Unity)
  • 多节点 Actor / Gateway:内置节点 TCP 数据面、wire v2 claims 与 lease fencing、Redis CAS + TTL 租约及严格授权路由(部署边界见专项指南)
  • 高性能序列化:优先使用 MemoryPack
  • 可观测性基础:服务端通过 EngineStatisticsRuntimeQueueMetrics 暴露消息处理和有界队列事实;当前未发布独立 PulseRPC.Monitoring / PulseRPC.Tracing

📦 项目结构

PulseRPC/
├── src/                          # 核心源代码
│   ├── PulseRPC.Abstractions/    # 抽象接口和基础类型
│   ├── PulseRPC.Client/          # 客户端实现
│   ├── PulseRPC.Server/          # 服务端实现
│   ├── PulseRPC.Client.Unity/    # Unity 客户端支持
│   ├── PulseRPC.Shared/          # 共享组件(压缩、网络缓冲池等)
│   ├── PulseRPC.Infrastructure/  # 核心基础设施实现
│   └── PulseRPC.Infrastructure.*/# 特定基础设施实现(Consul、Etcd、K8s 等)
├── perf/                         # 性能测试和基准测试
│   ├── BenchmarkApp/             # 系统级性能基准测试框架
│   ├── Microbenchmark/           # 方法级微基准测试
│   └── SourceGeneratorPerf/      # 源生成器性能测试
├── samples/                      # 示例应用(见 samples/README.md)
├── tests/                        # 单元测试和集成测试
└── docs/                         # 中文项目文档

🛠️ 环境要求

  • .NET 10 SDK(版本以 global.json 为准)
  • Visual Studio 2022JetBrains Rider(推荐)
  • Unity 2022.3.12f1+ LTS(Roslyn 4.3,用于 Unity 集成;客户端兼容 netstandard2.1

⚡ 快速开始

构建和测试

# 恢复依赖(使用集中化包管理)
dotnet restore

# 构建整个解决方案
dotnet build

# 运行所有测试
dotnet test

# 构建发布版本
dotnet build -c Release

唯一黄金路径:HelloRPC

HelloRPC 的 Contracts、Server、Client 三个项目是 README、Quickstart 与 NuGet 包说明共用的唯一首次上手路径:

dotnet build samples/HelloRPC/HelloRPC.sln

# 终端 1
dotnet run --project samples/HelloRPC/HelloRPC.Server

# 终端 2
dotnet run --project samples/HelloRPC/HelloRPC.Client

成功时客户端输出 Hello, PulseRPC!。完整源码和说明见 samples/HelloRPC;逐步说明见快速开始

📊 性能基准测试

perf/BenchmarkApp 提供端到端的性能基准测试框架,支持延迟、吞吐量、流式传输等场景,并可导出 HTML/JSON/CSV 报告。使用方法请参阅 perf/BenchmarkApp/README.md

📖 文档

所有面向用户的文档均位于 docs/ 目录,入口见 文档索引

历史设计、阶段总结和旧路线图已归档到 docs/archive/

🧪 示例项目

首次上手只使用 HelloRPC;专项功能和历史参考的完整清单见 samples/README.md,它们不作为 Quickstart 的替代入口。

🔧 开发约定

  • 启用 nullable reference types(Nullable 警告视为错误)
  • 使用 PublicAPI.Shipped.txtPublicAPI.Unshipped.txt 进行 API 兼容性管理
  • 遵循异步编程模式,使用 CancellationToken
  • 客户端实现避免使用反射,通过 Source Generator 进行代码生成
  • 集中化包管理:Directory.Packages.propsDirectory.Build.propsglobal.json

🤝 贡献指南

欢迎社区贡献!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证

🏆 致谢

感谢所有贡献者和社区成员的支持!

特别感谢:

  • MemoryPack 提供高性能序列化
  • Microsoft 提供 .NET 平台
  • Unity Technologies 提供游戏引擎支持

如果这个项目对你有帮助,请给我们一个星标!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages