百度brpc初步分析

本文简要探讨了百度的brpc,对其文档质量表示赞赏,但指出`RunUntilAskedToQuit()`方法可能浪费线程资源,以及`Server::StartInternal`中的线程管理设计存在不足。同时,提到brpc和corelooper在某些功能上有相似之处,并预告corelooper的开源计划。

最近在QQ群听说百度的brpc非常好,所以下载研究一下。

首先,它的文档写的非常用心,要点个赞。

里面有个brpc_intro.pptx用搞笑且浅显易懂的方式来做介绍,非常合我心意。

闲话少说,下面转入正题。

brpc代码量有点大,没时间细看,粗略看了一下代码,感觉有些地方有改进空间。

下面描述一下

大量代码在int main()中调用了

server.RunUntilAskedToQuit()

它的实现如下

void Server::RunUntilAskedToQuit() {
    while (!IsAskedToQuit()) {
        bthread_usleep(1000000L);
    }
    Stop(0/*not used now*/);
    Join();
}
这实际上相当于浪费了一个线程来做无意义的事,此处差评

然后看Server::StartInternal,从下面这段红色代码可以感觉出对线程的用法设计有缺陷,至少是没那么完善

        // Wait until all created bthreads finish the init function.
        for (size_t i = 0; i < ncreated; ++i) {
            while (!init_args[i].done) {
                bthrea

### 回答1: 从功能上来说,百度bRPC和Google gRPC都是用来构建分布式系统的远程过程调用(RPC)框架,它们都可以提供可靠性、安全性和高性能的服务。但是,百度bRPC比Google gRPC更加可靠,它提供了更多的功能,比如可靠消息传递、流式数据传输、消息发布订阅等,而Google gRPC更加注重性能,支持多语言的开发,并且支持HTTP/2协议。 ### 回答2: 百度bRPC和Google gRPC都是基于RPC(远程过程调用)的框架,用于实现不同服务之间的通信。 首先,百度bRPC和Google gRPC的设计目标相似,都希望提供高效、可靠的分布式系统通信解决方案。它们都使用了基于HTTP/2的二进制协议,支持多种语言的客户端和服务端实现。 然而,百度bRPC在一些方面对比Google gRPC有一些独特的特点。首先,百度bRPC使用了一种基于异步框架的设计模式,通过异步通信来提高性能和吞吐量。这使得百度bRPC在处理大规模并发请求时更加高效。 其次,百度bRPC还提供了一些与百度内部服务框架紧密集成的功能。例如,它支持内部的监控系统,可以方便地采集和展示关键指标。此外,百度bRPC还提供了一套可视化工具,帮助开发人员快速定位和解决问题。 与此同时,Google gRPC也有其独有的特点。首先,Google gRPC提供了丰富的功能和工具,如服务定义语言(IDL),自动生成的客户端和服务端代码,以及支持流式RPC的功能。这些特点使得Google gRPC在构建复杂的分布式系统时更加便捷。 此外,Google gRPC也有广泛的生态系统和社区支持,有大量的用户和开发人员。这使得Google gRPC有更多的实践经验和开源工具可供参考,更容易在实践中获得帮助。 总结来说,百度bRPC和Google gRPC都是强大的RPC框架,它们都有自己的特点和优势。具体选择哪个框架应该根据实际需求和技术背景来决定。 ### 回答3: 百度bRPC和Google gRPC都是基于远程过程调用(RPC)的系统,用于不同服务之间的通信和数据传输。下面是对这两个系统的比较。 1. 功能和特性: - bRPC百度开源的分布式RPC系统,具有高性能、低延迟和高可用性的特点。支持多语言、多平台,并提供多种传输协议和序列化格式的选择。 - gRPC:Google开源的高性能RPC框架,也具有低延迟和高可用性的特点。同样支持多语言、多平台,并提供多种传输协议和序列化格式的选择。 2. 开发者体验: - bRPC:由百度开发和维护,对中文开发者友好,提供了详细的中文文档和教程。 - gRPC:由Google开发和维护,拥有庞大的社区支持和文档资源。对于英文开发者而言,gRPC提供了全面的英文文档和教程。 3. 生态系统支持: - bRPC:虽然bRPC在国内有一定的影响力,但相比于gRPC,其生态系统支持较为有限。 - gRPC:作为Google的开源项目,gRPC拥有庞大的开发者社区和成熟的生态系统,提供了丰富的工具和库。 4. 性能和可扩展性: - bRPC和gRPC都注重性能和可扩展性,采用了高效的二进制序列化和压缩算法,以及多路复用和流控制等技术,以提高数据传输的效率和吞吐量。 综上所述,百度bRPC和Google gRPC虽然有部分相似之处,但也存在一定的差异。选择使用哪个系统应根据具体需求和团队情况来决定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值