QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

百度开源项目 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:5519822
用户头像
张晓楠 InfoQ总编辑

发布了 144 篇内容, 共 102.2 次阅读, 收获喜欢 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
回复
没有更多了
发现更多内容

手写希尔排序算法

实力程序员

编程 程序员 C语言 排序算法

天津大学教授站上 WICC2021 “讲坛” 将分享边缘计算新研究

融云 RongCloud

浪潮云说直播间,就在今天!

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

用10个真实案列带你掌握MySQL调优

北游学Java

Java MySQL 性能调优

百度内容风控是怎样在秒级之内完成词表匹配

百度Geek说

百度 内容审核

天不生我SpringBoot高级笔记 编程万古无常夜!

白亦杨

Java springboot

智汇华云|安超云套件Archer Cloudsuite为“信创强国”筑基

华云数据

从零开始学习3D可视化之数据对接(1)

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

Tapdata 与巨杉数据库完成产品兼容互认证

tapdata

Tapdata 巨杉数据库 产品兼容性互认

如何实现70%丢包下音视频的高可用 - 数据篇

ZEGO即构

音视频 数据处理 传输协议 弱网环境高可用 Qo

产业区块链迎来新纪元,基础设施建设成核心命题

旺链科技

区块链 产业 基础设施建设

DistSQL:像数据库一样使用 Apache ShardingSphere

SphereEx

Tapdata 荣获2021中国创新势力榜“最佳数字中台企业服务品牌”大奖

tapdata

Tapdata 最佳数字中台企业服务品牌

2021InfoComm|钉钉会议 Rooms 的 "全场景" 智能化解决方案

阿里云CloudImagine

音视频 钉钉 视频会议 会议 会议室

完美收官!字节4面斩下2-2Offer,入职就是30K16薪,全凭这套“面试+架构进阶知识点”pdf

Java 程序员 架构 面试

lsyncd实现文件实时同步

阿呆

lsyncd

比redis-rdb-tools快10倍的rdb分析工具

BUG侦探

redis bigkey rdb分析

Uber 多区域 Kafka 的灾难恢复

奔着腾讯去

Apache kafka 分布式

去中心化交易所搭建|区块链数字货币交易平台开发

Geek_23f0c3

APP开发 去中心化交易所系统开发 区块链、

有奖体验活动,最新1.3版本试用

Geek_6cdeb6

人工智能 机器学习 深度学习 学习 AI

容器安全检查列表

greatersecurity

容器 云原生 DevSecOps

如何保障服务器承受亿级流量(12)【限流】

我爱娃哈哈😍

架构设计 架构设计实战

干货 | 用JAVA实现多语言翻译组件

LigaAI

Java 国际化

什么是高效,什么是好的企业文化

Ryan Zheng

专科程序员与本科程序员之间有什么区别?薪资待遇又差多少?

Java 编程 程序员 架构 面试

耗时半年,堪称神迹!阿里架构师整合出258W字Java全栈面试题

Java架构追梦

Java 阿里巴巴 面试 java架构 跳槽

大数据训练营 - 第二次作业hadoopRPC

西伯利亚鼯鼠

Alibaba永远滴神!阿里内部最新Java基础到中高级核心知识手册

Java~~~

Java 编程 程序员 架构 面试

爬虫入门到放弃03:爬虫如何模拟人的浏览行为

叫我阿柒啊

爬虫 代理IP user-agent

Realtime DB技术详解

安第斯智能云

数据

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