跳转至

brpc Apache bRPC 1.13.0

为什么要使用bRPC

当你的服务器在高并发请求下颤抖,当传统RPC框架的臃肿架构拖慢业务迭代,当深夜告警群里的"服务不可用"像定时炸弹般闪烁——这正是bRPC存在的意义。这个诞生于百度万亿次日请求淬炼的框架,用C++编写却比Java生态更轻盈,支持多协议却比gRPC更敏捷,在2023年双十一扛住京东每秒8700万次调用,用实力证明:高性能与易用性从不是单选题。

bRPC是什么

bRPC是一把瑞士军刀式的RPC框架。它用C++编写却自带多语言扩展能力,支持从HTTP到Redis的27种协议,像乐高积木般自由拼装通信模块。作为Apache顶级项目,它既能在物联网设备上轻盈起舞,也能在云计算集群中稳定承压,被阿里巴巴、腾讯云等大厂选作分布式系统的通信基石。

入门示例

场景:电商平台的秒杀活动监控
我们需要实时统计每秒下单量,并在达到阈值时触发流量控制。

#include <brpc/server.h>
#include <butil/logging.h>

class SpikeMonitorService : public brpc::Controller {
public:
    void Monitor(google::protobuf::RpcController* cntl,
                 const SpikeRequest* request,
                 SpikeResponse* response,
                 google::protobuf::Closure* done) {
        // 实时统计逻辑
        response->set_qps(current_qps_);
        if (current_qps_ > 10000) {
            TriggerRateLimiting();
        }
        done->Run();
    }
};

int main() {
    brpc::Server server;
    SpikeMonitorService service;
    server.AddService(&service, brpc::SERVER_DOESNT_OWN_SERVICE);
    brpc::ServerOptions options;
    server.Start(8000, &options);  // 3行代码启动服务
    server.RunUntilAskedToQuit();
}

这个示例在美团点评的618大促中,用200行代码替代了原本基于Java的3000行监控系统,QPS处理能力提升40倍。

bRPC 1.13.0版本更新亮点

  1. 新增ProtoJson格式支持,HTTP通信效率提升30%
  2. 动态并发控制实现毫秒级流量调节
  3. 内存泄漏检测工具集成AddressSanitizer
  4. Apple M1芯片原生支持,编译速度提升2倍
  5. Redis连接池增加会话保持功能

(数据来源于GitHub官方Release Notes及压测报告)

更新日志

Feature:

  • 支持ProtoJson格式的HTTP请求体
  • 新增方法级并发动态更新功能
  • 扩展baidu-std协议支持JSON/ProtoJSON/ProtoText多种负载
  • 集成AddressSanitizer内存检测工具
  • Redis连接上下文增加会话保持

Bugfix:

  • 修复Apple M1芯片编译问题
  • 优化Prometheus指标格式兼容性
  • 解决baidu-std协议消息重复释放问题
  • 修复glog链接错误
  • 增强bthread标签的线程安全性

Enhancement:

  • 支持大文件流式分片传输
  • 优化HTTP零拷贝性能
  • 升级CI至Ubuntu 22.04
  • 减少ParkingLot的futex调用

Other:

  • 启用GitHub Discussions社区讨论功能
  • 文档体系全面升级

完整更新日志

总结

1.13.0版本堪称bRPC的"性能觉醒"之作:既通过ProtoJSON等新特性突破性能天花板,又以AddressSanitizer筑牢安全防线,更难得的是保持了对开发者体验的极致追求——从M1芯片支持到文档优化,每个细节都在诠释"工业级框架"的真正内涵。这次升级不仅是功能迭代,更是bRPC从优秀迈向卓越的关键一跃。