Brpc代码分析(二)

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文件中。

Brpc代码分析(二)_第1张图片

 其中要使用到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基类

Brpc代码分析(二)_第2张图片

 这里需要注意

Service在插入brpc.Server后才可能提供服务。

当客户端发来请求是,Echo()会被调用。参数的含义分别是:

controller

你可能感兴趣的:(linux,java)