gPRC基础教程

1.什么是RPC?
RPC 远过程调用.在理解远程调用之前,首先我们来了解一下本地调用,只有更好的理解了本地调用,才能更好的理解RPC.

1.1 本地调用
    ex:本地的函数调用
    在函数调用的时候,一般会经过几个步骤  
    返回地址入栈
    参数入栈
    提升堆栈空间
    函数参数的复制
    执行函数调用
    清空堆栈
1.2.为什么需要RPC?
    ex:两台机器 一台机器想调用另一台机器的函数执行某个功能 
    由于是两个不同的进程 我们无法使用函数指针来调用该函数
    而只能通过网络请求来调用的具体函数

1.3.那么如何知道需要具体调用的函数呢?(关联)
两台机器之间可以各自维护一个关联式容器 从而找到要调用的函数

1.4一次完整的RPC调用流程
    1.client 以本地的方式进行的调用服务
    2.client stub接收到调用后负责将方法 参数等组装成能够进行网络传输的消息体
    3.cleint stub找到服务端的地址 并将消息发送给server stub
    4.server stub收到消息后进行解码
    5.server stub根据解码结果调用本地的服务
    6.本地服务执行结果并将结果返回后给server stub
    7.server stub将返回结果打包成消息并发送至消费方
    8.client stub接受到消息
    9. client得到返回结果

2.为什么需要proto buffer?

在许多高级语言中,我们都是使用类的方式对数据进行封装,而利用网络传递数据只能以二进制的方式进行传输,因此我们需要将数据转化为二进制数据从而在网络上进行传播过程称为序列化, 再将接收到的数据从二进制转化为对应的数据类型,称为反序列化.

3.什么是Proto buffer?

    proto buffer是Google使用的一个开源软件 ,数据打包小 传输数据快

4.Proto buffer基础教程

    proto buffer协议的格式
    .proto文件
    package name;//可以理解为c++中的名称空间
    message dataname; //message可以理解为c++中的class 或者struct
    requried type name = 1  //消息的接收方和发送发都必须提供required修饰字段的值
    opitional type  name = 2 //可选择的
    =1 =2 表示唯一标记的tag(maybe传输的过程中传递的是tag 让后通过tag找到对应的数据)




通过proto buffer 提供的编译器会生成对应的cc和h文件protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/XXX.proto

4.gRPC基础教程?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值