后端学习 -gRPC
创始人
2024-02-29 12:44:16
0

gRPC

何为 RPC

  • RPC 和 HTTP 的关系

    1. 基于 HTTP 的远程调用方案(包含了接口规范、序列化反序列化等)和 RPC 是并列的
    2. 单从 HTTP 协议来看,RPC 可以使用 HTTP 作为通信协议
      在这里插入图片描述
  • 基于 HTTP 的远程调用方案和 RPC 的相同点、不同点

    • 相同点
      1. 都可以实现远程调用(上图的顶端节点)
    • 不同点
      1. 基于 HTTP RESTful 的远程调用可读性更好
      2. RPC 可以针对场景选用不同的框架(如 Dubbo、gRPC 等),不同的通信协议(HTTP、TCP、UDP),以及不同的序列化方式(JSON、PB 等),效率更高
  • RPC 执行流程:调用方和被调用方

  1. Client 调用以本地调用方式调用服务;
  2. Client Stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(桩代码是未实现的接口,此处使用动态代理);
  3. Client Stub 找到服务地址,并将消息发送到服务端;
  4. Server Stub 收到消息后进行解码;
  5. Server Stub 根据解码结果调用本地的服务;
  6. 本地服务执行并将结果返回给 Server Stub;
  7. Server Stub 将返回结果打包成消息并发送至消费方;
  8. Client Stub 接收到消息,并进行解码;
  9. Client 得到最终结果
  • Stub (桩代码)指满足形式要求但没有实现实际功能的占位或代理代码
  • RPC 中的桩代码负责远程请求或响应

ProtocolBuffer

  • PB 是一种语言无关、平台无关、可扩展的序列化结构数据的接口描述语言(Interface Description Language, IDL),可用于通信协议、数据存储等
  1. 编写 .proto 文件,假设场景是根据地址,查询地址对应的联系方式,以及该号码是否活跃
syntax = "proto3"  // 语法版本package com.hit.demo;service PhoneLookup {rpc QueryPhoneByAddress (Request) returns (Response) {}
}message Requset {required string id = 1;  // required:必须传入1个参数optional string name = 2;  // optional:可以传入0或1个参数,如果不传入则为默认0值repeated string address = 3;  // repeated:可以传入0或多个参数
}message Response {string id = 1;ResultCode result = 2 [default = SUCCESS];  // 声明默认值repeated int64 number = 3;repeated bool active = 4;enum ResultCode {SUCCESS = 0;FAIL = 1;UNKNOWN = 3;}
}
  1. 编译 .proto 文件得到桩代码,此时在文件中声明的类已可用,并支持序列化、反序列化
public static void main(String[] args) {// 构造查询请求Request req0 = Request.newBuilder().setId("Request01").setName("dino").setAddress(Collections.singletonList("hita08")).build();// 序列化byte[] reqBytes = req.toByteArray();// 反序列化Request req1 = Request.parseFrom(reqBytes);
}
  1. Client 和 Server 使用编译生成的桩代码,分别实现业务逻辑

相关内容

热门资讯

最高法发布修改后的《民事案件案... 本报讯(记者卢越)日前,最高人民法院正式发布《关于修改〈民事案件案由规定〉的决定》《关于印发修改后的...
关于《河南省烟草专卖管理条例(... 主任、各位副主任、秘书长、各位委员: 现就《河南省烟草专卖管理条例(修订草案)》(以下简称《条例(修...
揭露硅谷血检巨骗的记者起诉xA... 来源:环球市场播报 当地时间周一,一名因揭露硅谷血液检测初创公司Theranos欺诈行为而闻名的调查...
跨境之和 “咖啡+茶” 一体调... 在日常调解中,中心通常会运用“咖啡+茶”涉外调解工作法对纠纷双方进行调解。受访者供图 12月15日,...
梅赛德斯-奔驰支付1.5亿美元... 钛媒体App 12月23日消息,梅赛德斯-奔驰集团同意支付1.5亿美元,以达成与美国50位州总检察长...
*ST惠程[002168]关于... 本版导读 2025-12-23 2025-12-23 2025-12-23 2025...
一次性信用修复政策实施,哪些人... 为支持信用受损但积极还款的个人高效便捷重塑信用,助力经济持续回升向好,12月22日,中国人民银行对外...
美国民主党籍州总检察长就资金问... 来源:金十数据 12月23日,据华尔街日报报道,由多名民主党籍州总检察长组成的联盟周一提起诉讼,试图...
日本多名教职人员因性暴力或性犯... 据日本文部科学省22日公布的数据,日本2024财年(2024年4月至2025年3月)共有281名公立...
山西一网友发布疑似看守所监控视... 山西一网友发布疑似看守所监控视频,房间内有多人身着统一蓝色制服,还有一人戴着脚镣;警方称此类视频禁止...