gRPC快速整合SpringCloud

本文介绍了gRPC的优势,工作方式以及使用场景,并详细讲解了如何整合gRPC与SpringCloud,包括Protobuf语法的基本规范、限定修饰符和数据类型。文章还提供了具体的整合步骤,如核心依赖、项目结构、API定义、服务端与客户端实现,以及测试过程。
摘要由CSDN通过智能技术生成

gRPC是由 google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多数流行的编程语言。它是一种与语言、平台无关、可扩展的序列化结构数据。它的定位类似于JSON、XML,但是比他们更小、更快、更简单。

优势

gRPC基于HTTP/2协议传输,而HTTP/2相比HTTP1.x,还是有需要优势的:

  • HTTP/2采用二进制格式传输协议,而非HTTP1.x的文本格式。

  • 多路复用

HTTP/2支持通过一个连接发送多个并发的请求。

  • 服务器推送

服务端推送是一种在客户端请求之前发送数据的机制。在HTTP/2中,服务器可以对客户端的一个请求发送多个响应。而不像HTTP/1.X一样,只能通过客户端发起request,服务端才产生对应的response。

  • 减少网络流量的头部压缩

HTTP/2对消息头进行了压缩传输,能够节省消息头占用的网络流量。

工作方式

从上图可以看出,简单了解一下grpc的工作模式。用gRPC来进行远程调用服务,客户端(client) 仅仅需要gRPC Stub ,通过Proto Request向gRPC Server发起服务调用,然后 gRPC Server通过Proto Response(s)将调用结果返回给调用的client。

使用场景

  • 接口约束: 需要对接口有严格的管控,比如对外部提供接口时,并不希望客户端随意传递数据,这是我们就可以使用gRPC来对接口约束。
  • 性能要求:对传输性能有较高要求,如果我们传输的消息体过大,或调度过于频繁不希望影响系统性能时,可以考虑使用gRPC,它的消息体比JSON或者文本传输要小的多。

Protobuf语法

基本规范

  • 文件以.proto做为文件后缀,除结构定义外的语句以分号结尾
  • 结构定义可以包含:message、service、enum
  • rpc方法定义结尾的分号可有可无
  • Message命名采用驼峰命名方式,字段命名采用小写字母加下划线分隔方式
  • Enums类型名采用驼峰命名方式,字段命名采用大写字母加下划线分隔方式
  • Service与rpc方法名统一采用驼峰式命名
message SongServerRequest {
    required string song_name = 1;   
} 

enum Foo {       
  FIRST_VALUE = 1;       
  SECOND_VALUE = 2;   
} 
复制代码

限定修饰符

  • Required: 表示是一个必须字段,必须相对于发送方,在发送消息之前必须设置该字段的值,对于接收方,必须能够识别该字段的意思。发送之前没有设置required字段或者无法识别required字段都会引发编解码异常,导致消息被丢弃。
  • Optional:表示是一个可选字段,可选对于发送方,在发送消息时,可以有选择性的设置或者不设置该字段的值。对于接收方,如果能够识别可选字段就进行相应的处理,如果无法识别,则忽略该字段,消息中的其它字段正常处理。
  • Repeated:表示该字段可以包含0~N个元素。其特性和optional一样,但是每一次可以包含多个值。可以看作是在传递一个数组的值。

数据类型

.proto C++ Java Python Go
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值