作为一个C++新人,打算在2020年认真学习一个质量优秀的C++开源框架,BRPC应该是非常不错的一个。本篇文章作为BRPC详解的第一篇,也只是结合官方github的文档来对BRPC做一个比较简单的介绍,后续该系列的文章会对BRPC的各个部分做一些总结,希望能够和大家一起学习交流。
首先先给出几篇参考的博客、文档链接
戈神知乎链接:
戈君:深入brpczhuanlan.zhihu.com![5f3484e54d308611edeb52dc4c009492.png](https://img-blog.csdnimg.cn/img_convert/5f3484e54d308611edeb52dc4c009492.png)
官方github:
https://github.com/apache/incubator-brpcgithub.com官方文档:
https://github.com/apache/incubator-brpc/tree/master/docs/cngithub.com注:本博客主要摘要自BRPC的官方github介绍
一、什么是RPC:
RPC把网络交互类比为“client端访问server端上的函数”:client向server发送request后开始等待,知道server收到请求后,处理、回复client,client又再度恢复并根据response做出反应
![171714ef292da748020e24b20b8fc632.png](https://img-blog.csdnimg.cn/img_convert/171714ef292da748020e24b20b8fc632.png)
数据序列化方式:protobuf、json(http使用)
连接建立方式:短链接、连接池、长连接
命名服务与负载均衡:DNS、ZooKeeper、etcd等
连接断开时重试
server在给定时间内没有回复,client会返回超时错误
二、RPC使用场景:
几乎所有的网络应用,在绝大部分网络交互中,RPC技能解决问题,又能隔离更底层的网络问题
三、什么是BRPC
百度内最常使用的工业级RPC框架, 有1,000,000+个实例(不包含client)和上千种服务, 在百度内叫做"baidu-rpc”。具体可以使用BRPC做如下
- 搭建能在一个端口支持多协议的服务, 或访问各种服务
- Server能同步或异步处理请求
- Client支持同步、异步、半同步,或使用组合channels简化复杂的分库或并发访问
- 通过http界面调试服务, 使用cpu, heap, contention profilers
- 获得更好的延时和吞吐
- 把你组织中使用的协议快速地加入brpc,或定制各类组件, 包括命名服务 (dns, zk, etcd), 负载均衡 (rr, random, consistent hashing)
四、BRPC的优势
- 更友好的接口
- 服务更加可靠
- 更好的延迟和吞吐
感兴趣的小伙伴可以关注专栏:
独立团丶zhuanlan.zhihu.com![70a23637bc2a5c21e61ffae8452f43b1.png](https://img-blog.csdnimg.cn/img_convert/70a23637bc2a5c21e61ffae8452f43b1.png)
感兴趣的小伙伴可以关注公众号:
![b836cc86a0aed66309c59bba4db4abc6.png](https://img-blog.csdnimg.cn/img_convert/b836cc86a0aed66309c59bba4db4abc6.png)