HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

百度开源项目 brpc 进入 Apache 孵化器

  • 2018-11-13
  • 本文字数:1486 字

    阅读完需:约 5 分钟

百度开源项目brpc进入Apache孵化器

InfoQ 记者从百度开源社区获悉:Apache 基金会今日凌晨投票结束,baidu-rpc 进入 Apache 孵化器。这是百度继 Echarts 和 Doris 后,第三个进入国际顶级开源社区 Apache 的项目。


brpc 是一个基于 protobuf 接口的 RPC 框架,在百度内部称为“baidu-rpc”,它囊括了百度内部所有 RPC 协议,并支持多种第三方协议,从目前的性能测试数据来看,brpc 的性能领跑于其他同类 RPC 产品。


InfoQ 在去年 9 月份一篇相关报道《百度正式开源其 RPC 框架 brpc》中采访 brpc 负责人戈君的时候,他曾经介绍了 brpc 的诞生背景以及特点和优势。“brpc 于 2014 年创建,在百度内部称为‘baidu-rpc’。到目前为止,brpc 一共进行了 3000 次左右的改动,现在仍在持续优化中,百度内的 wiki 上可以查询到每次改动的描述。brpc 的主要语言是 C++ 和 Java,对其他语言的支持主要是通过包装 C++ 版本,比如 brpc 的 Python 版包含 C++ 版的大部分功能。”


“brpc 目前支撑百度内部大约 75 万个同时在线的实例(不含 client),超过 500 种服务(去年的统计,现在已不统计这类数据)。Hadoop、Table、Mola(另一种广泛使用的存储)、高性能计算、模型训练、大量的在线检索服务都使用了 brpc。brpc 第一次统一了百度内分布式系统和业务线的通信框架。”


对于此次 brpc 进入 Apache 孵化器,百度表示:这是百度开源的又一个重要里程碑,标志着百度开源进入了一个高速发展的阶段,未来势必会开源更多优秀项目,打造更为强大的百度开源生态。


对于 brpc 开源对于百度开源生态的意义,戈君认为:“这些年百度对开源的认识也在不断加深,开源看似曝光了百度的核心技术,但带来的生态影响力更重要。从 Apollo、PaddlePaddle 开始,百度真的开始拥抱开源了。brpc 的开源版和内部版很接近,只是去掉了对百度内部独有的一些基础设施的支持,我们在内网写的深入分析 RPC 技术细节的文档也都一并开源了,后续也会及时推送改动,请大家放心。这是一个活项目,不会拉个开源分支就不管了。”

平台简介

brpc 目的是构建一套百度内统一的 RPC 框架,那么灵活的扩展性就是最基础的需求。brpc 在实现过程中非常注重机制与策略分离,支持了百度内使用的大部分 RPC 协议,方便业务无缝迁移业务到 brpc。除了协议之外,将名字服务、负载均衡和认证也采用了具体 policy 实现,比如 bns 名字服务、rr 负载均衡。



性能是 brpc 非常看重的一点,在百度一个框架性能好不好通常是第一评价要素。brpc 解决性能最核心的是一个 M:N 的线程库 bthread,通过 work stealing 实现最大可能的并发。brpc 在 Socket IO 上读和写都是 wait-free 的,实现最大可能的并发,例如 Server 端不同连接间请求的并行,同一连接上请求的并行。通过遍布 brpc 中的并发优化,brpc 相比其他 rpc 框架在长尾问题上表现更优。


平台特性

  • 支持的协议:baidu_std, http, nshead,hulu-pbrpc, sofa-pbrpc, nova-pbrpc, ubrpc, streaming-rpc, redis, memcached 等二十多种协议

  • 支持的 Naming 方式:list, file, bns, dns, remotefile

  • 支持的负载均衡策略: random, round_robin,consistant_hash, locality_aware

  • 支持的压缩方式: gzip, zlib, snappy

  • 支持的编程语言: C++, Java, Python, Go(非官方)

  • 支持的调用方式: 同步、异步、组合访问

  • 支持的连接方式:短连接、连接池、单连接、基于连接的认证机制、Giano 认证

  • 支持的高可用策略:超时、重试、backup request、取消请求、优雅退出

  • 问题定位支持:强大的 buildtin server,查看进程各种状态、debug、tracing、profing 信息

  • 基础库:common、bvar、bthread、iobuf 等强大的基础库,方便 C++编程


开源地址:


https://github.com/apache/incubator-brpc


2018-11-13 13:5519781
用户头像
张晓楠 InfoQ总编辑

发布了 144 篇内容, 共 100.3 次阅读, 收获喜欢 378 次。

关注

评论 3 条评论

发布
用户头像
阿里Dubbo,华为ServiceComb,百度brpc。
华为ServiceComb去年进驻,今年上个月已率先在Apache毕业,成为Apache顶级项目,Dubbo也即将毕业,
祝中国开源软件发展越来越好。
2018-11-20 17:38
回复
用户头像
国产开源rpc,支持一个。
2018-11-16 23:27
回复
用户头像
牛。目前用的dubbo
2018-11-13 15:09
回复
没有更多了
发现更多内容

Starfish OS:以现实为纽带,打造元宇宙新范式

BlockChain先知

Spark Sql编译模块-词法、语法分析器Antlr4(一

飞哥

Envoy负载均衡与限流设计

阿泽🧸

7月月更 Envoy负载均衡

Okaleido tiger NFT即将登录Binance NFT平台,后市持续看好

西柚子

架构训练营模块七作业

融冰

从去IOE到CIPU,中国云计算要走出自己的路径

B Impact

let's go——2022年读书活动招募书(第1期)

codists

数据仓库和数据中台的关系

奔向架构师

数据仓库 7月月更

8 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

如何实现随叫随到的客户服务

Baklib

Web3流量聚合平台Starfish OS,给玩家元宇宙新范式体验

鳄鱼视界

网络水军为何如此猖獗:揭秘背后灰色利益链

石头IT视角

王者荣耀商城异地多活架构

intelamd

【刷题记录】16. 最接近的三数之和

WangNing

7月月更

一文解析Ansible配置管理文件

穿过生命散发芬芳

ansible 7月月更

怎样才能让企业知识管理发挥出它的真正价值?

Baklib

架构实战营模块 7 作业

Naoki

架构实战营

let关键字的特点

bo

前端 ES6 7月月更

鸿蒙eTS版天气预报

坚果

开源 HarmonyOS OpenHarmony Open Harmony 7月月更

王者荣耀商城异地多活架构设计(架构实战营 模块七作业)

Gor

如何搭建一个知识库网页?

Baklib

Okaleido tiger NFT即将登录Binance NFT平台,后市持续看好

小哈区块

vue.js 多种方式安装

恒山其若陋兮

7月月更

JavaScript小数点计算时失精问题

空城机

JavaScript 7月月更

更智能!AIRIOT加速煤炭行业节能减排升级

AIRIOT

低代码 物联网 低代码,项目开发

数据散列算法

技术小生

7月月更 散列算法

【愚公系列】2022年7月 Go教学课程 014-运算符之算术运算符

愚公搬代码

7月月更

第十届蓝桥杯大赛软件类省赛C/C++ 大学 A 组题解

KEY.L

7月月更

Java多线程之常见锁策略与CAS中的ABA问题

未见花闻

7月月更

Docker安装Mycat中间件 | 实现主从&读写分离

宁在春

Docker 读写分离 mycat 7月月更

如何设计业务异地多活架构 - 作业

阿拉阿拉幽幽

百度开源项目brpc进入Apache孵化器_开源_张晓楠_InfoQ精选文章