2021SC@SDUSC
百度内最常使用的工业级RPC框架,有1000000+个实例,“brpc”的含义是“better RPC”
我们可以使用他:
搭建一个能在一个端口支持多协议的服,或者访问各种服务
Server能同步或异步处理请求。
Client支持同步.异步.版同步.或使用组合channels简化复杂的分库或者并发访问。
通过http界面调试服务,使用cpu,heap,contention profilers。
获得更好地延时和吞吐。
把个人组织中使用的协议快速地加入brpc,或制动各类组件,包括命名服务(dns,zketcd,),负载均衡(rr,random,cons,istent hashing)
填写proto文件:
请求,回复,服务的接口均定义在proto文件中。
其中要使用到protobuf,protobuf是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是Json的3-5倍。
Protobuf提供了c++,java。python语言的支持,提供了windows(proto.exe)和linux平台动态编译生成proto文件对应的源文件。proto文件定义了协议数据中的实体结构
关键字message:代表了实体结构,有多个消息字段(field)组成。
消息字段(field):包括数据类型。字段名。字段规则。字段唯一标识。默认值。
数据类型:常见的原子类型都支持
字段规则:(在FieldDescriptor::kLabelToName中定义)
required:必须初始化字段,如果没有赋值,在数据序列化时会抛出异常
optional:可选字段,可以不必初始化。
repeated:数据可以重复(相当于java中的Array或List)
字段唯一标识:序列化和反序列化将会使用到。
默认值:在定义消息字段时可以给出默认值。
实现生成的Service接口
protoc运行后会生成echo.bp.cc和echo.pb.h文件,我们得include echo.bp.h,实现其中的EchoService基类
这里需要注意
Service在插入brpc.Server后才可能提供服务。
当客户端发来请求是&