用于分布式系统开发的 Go 框架,涵盖 RPC、服务发现、消息、存储与配置,并支持智能体与工作流。
sogou/srpc
基于 Sogou C++ Workflow 的 C++ RPC 框架,支持 SRPC、bRPC、Thrift、tRPC 协议。
- Star
- 2,142
- Fork
- 410
- 未关闭 Issue
- 34
- 最近提交
- 14天前
这是什么?
SRPC 是一个用 C++ 编写的 RPC 框架,构建在 Sogou Workflow 异步库之上。它支持 SRPC、bRPC、Thrift、tRPC 等多种协议,可使用 Protobuf 或 Thrift IDL 定义接口并生成客户端与服务端代码。
框架支持 JSON、Protobuf、Thrift Binary 等数据格式,以及 gzip、zlib、snappy、lz4 压缩,传输层可用 tcp、udp、sctp 或 TCP SSL。通过 HTTP+JSON,任意语言的客户端都可以直接调用服务。请求还能与 Workflow 的串并联任务结合使用,并内置 AOP 模块,可将链路追踪上报到 OpenTelemetry,将指标上报到 OpenTelemetry 或 Prometheus。
核心功能
- 01支持 SRPC、bRPC、Thrift、tRPC 四种协议。
- 02支持 Protobuf 与 Thrift IDL,并生成客户端和服务端代码。
- 03提供 HTTP+JSON 接口,任意语言均可调用服务。
- 04支持 gzip、zlib、snappy、lz4 等压缩格式。
- 05可将链路追踪上报至 OpenTelemetry,将指标上报至 Prometheus。
适用场景
- 用 C++ 构建高吞吐的内部微服务。
- 让 bRPC 或 tRPC 服务与基于 Workflow 的代码互通。
- 通过 HTTP+JSON 为其他语言的客户端提供 RPC 服务。
- 为 C++ 服务接入 OpenTelemetry 链路追踪和 Prometheus 指标。
快速上手
- 1
按照安装指南从源码或系统软件包安装 srpc
- 2
从 example.proto 生成 C++ 代码
protoc example.proto --cpp_out=./ --proto_path=./ - 3
编译服务端(Linux)
g++ -o server server.cc example.pb.cc -std=c++11 -lsrpc - 4
启动服务端,并在另一个终端运行客户端
./server
使用前须知
- 快速开始中的编译命令仅适用于 Linux,其他系统需要参照教程中的 cmake 配置。
- README 没有提供包管理器安装命令,需要从源码编译或使用系统软件包。
收录于专题
标签
常见问题
- srpc 是什么?
- 基于 Sogou C++ Workflow 的 C++ RPC 框架,支持 SRPC、bRPC、Thrift、tRPC 协议。 SRPC 是一个用 C++ 编写的 RPC 框架,构建在 Sogou Workflow 异步库之上。它支持 SRPC、bRPC、Thrift、tRPC 等多种协议,可使用 Protobuf 或 Thrift IDL 定义接口并生成客户端与服务端代码。
- srpc 可以免费使用吗?用的什么许可证?
- srpc 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- srpc 还在维护吗?
- 活跃维护中。srpc 最近一次提交是在 2026年10月24日。
- srpc 适合用来做什么?
- 用 C++ 构建高吞吐的内部微服务。 让 bRPC 或 tRPC 服务与基于 Workflow 的代码互通。 通过 HTTP+JSON 为其他语言的客户端提供 RPC 服务。 为 C++ 服务接入 OpenTelemetry 链路追踪和 Prometheus 指标。
- srpc 怎么安装和运行?
- 按照安装指南从源码或系统软件包安装 srpc 从 example.proto 生成 C++ 代码: protoc example.proto --cpp_out=./ --proto_path=./ 编译服务端(Linux): g++ -o server server.cc example.pb.cc -std=c++11 -lsrpc 启动服务端,并在另一个终端运行客户端: ./server
- 在哪里获取 srpc?
- 源代码和安装说明在 GitHub 上:https://github.com/sogou/srpc
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
搜狗开源的 C++ 并行计算与异步网络框架,用于构建基于 DAG 的任务流。
Google 推出的跨语言、跨平台结构化数据序列化格式,附带 protoc 编译器和多语言运行时。
一种声明式模式语言,可由同一份 .skir 文件生成 TypeScript、Python、Java、Go、C++ 等多语言的类型安全数据模型与 RPC 代码。
一个轻量的 Go 微服务框架,提供统一的 HTTP/gRPC 传输层、中间件和基于 Protobuf 的代码生成。
Apache Dubbo 的 Java 实现,一个用于构建 RPC 通信与微服务的框架。