跳转至

brpc Apache bRPC 1.11.0

为什么要使用brpc

在当今这个快速发展的技术时代,开发者面临着越来越多的挑战。如何在保证高性能的同时,确保系统的稳定性和可扩展性,成为了一个亟待解决的矛盾。brpc(百度RPC)正是为了解决这一难题而生。它不仅提供了高效的远程过程调用(RPC)框架,还具备灵活的扩展性和丰富的功能,帮助开发者在复杂的分布式系统中游刃有余。选择brpc,意味着选择了一条通向高效、稳定和可扩展的开发之路。

brpc是什么

brpc(百度RPC)是一个高性能的远程过程调用框架,旨在简化分布式系统中的服务间通信。它支持多种传输协议和序列化方式,能够在不同的编程语言和平台之间无缝对接。brpc的设计理念是高效、灵活和易用,使得开发者能够快速构建和部署分布式应用。

入门示例

想象一下,你正在开发一个电商平台,需要处理用户的订单请求。使用brpc,你可以轻松地创建一个订单服务,并通过RPC调用来处理订单。以下是一个简单的示例:

#include <brpc/server.h>

class OrderServiceImpl : public OrderService {
public:
    void PlaceOrder(google::protobuf::RpcController* controller,
                    const PlaceOrderRequest* request,
                    PlaceOrderResponse* response,
                    google::protobuf::Closure* done) {
        // 处理订单逻辑
        response->set_order_id("12345");
        done->Run();
    }
};

int main(int argc, char* argv[]) {
    brpc::Server server;
    OrderServiceImpl order_service;
    server.AddService(&order_service, brpc::SERVER_OWNS_SERVICE);
    server.Start(8080, nullptr);
    server.Run();
    return 0;
}

在这个例子中,我们定义了一个订单服务,并实现了一个处理订单的接口。通过brpc,服务可以轻松地与其他服务进行通信,确保订单处理的高效性。

brpc Apache bRPC 1.11.0版本更新了什么

在1.11.0版本中,brpc引入了多个重要更新,包括支持pthread互斥锁死锁检测、bzlmod、Wireshark解析多个RPC、jemalloc分析器和统计打印等功能。此外,还增强了RPC protobuf消息工厂接口和流的批量创建与接收能力,修复了多个bug,提升了整体性能和稳定性。

更新日志

特性:

  • 支持pthread互斥锁死锁检测。
  • 支持bzlmod。
  • 支持在Wireshark解析器中解析baidu_std协议的多个RPC。
  • 支持jemalloc分析器和统计打印。
  • 支持RPC protobuf消息工厂接口。
  • 支持arena RPC pb消息工厂。
  • 支持备份请求策略。
  • 支持bthread的信号量和读写锁。
  • 支持批量创建和接收流。
  • 支持快速/挂钩pthread和bthread::Mutex的定时锁。

Bug修复:

  • 修复由竞争分析器引起的malloc死锁。
  • 修复rdma编译错误。
  • 修复百度主服务泄漏。
  • 修复TCP连接中断。
  • 修复butil::ObjectPoolAllocator中的内存泄漏。
  • 修复rdma移除消费者错误。
  • 修复SerializedResponse的编译错误。
  • 修复unittest在cmake中的问题。
  • 修复Stream的无效fd检查失败。

增强:

  • 在macOS上添加openSSL_ROOT_DIR检查。
  • 为bthread互斥锁实现主动自旋和队列旧bthread。
  • 使periodic_task.h成为自包含的头文件。
  • 支持不可复制的同步对象。
  • 使用ManualConstructor(AlignedMemory)替代已在C++23中弃用的std::aligned_storage。
  • 当身份验证失败时向客户端发送未授权响应。
  • 优化keytablelist实现。
  • 将类名用单引号包裹。
  • 添加方法选项以禁用服务器端的过载检查。
  • 仅支持批量但以相同标签唤醒的butex。
  • 添加对bthread_setconcurrency_by_tag的检查。
  • 添加所需头文件以修复unittest编译。
  • 将bzlmod中的boost依赖切换为bcr。

总结

在1.11.0版本中,brpc不仅增强了功能,修复了多个bug,还提升了整体性能和稳定性。这些更新使得brpc在高并发和复杂分布式环境中的应用更加可靠,进一步巩固了其作为高性能RPC框架的地位。选择brpc,意味着选择了一条通向高效、稳定和可扩展的开发之路。