grpc-spring-boot-starter【初步了解】

最近要使用Grpc代替Feign,实现服务间的接口调用,简单了解了一下

gRpc:Google开源使用的远程过程调用(RPC)系统
    使用HTTP/2协议传输
    使用Protocol Buffers 作为接口描述语言(生成目标代码)
    提供身份验证、双向流和流的控制、阻塞和非阻塞的绑定、消除和超时
    应用于不同微服务(包括不同语言)间的相互通信以及前端对后端的请求

引用grpc官方文档图片https://grpc.io/docs/guides/

在这里插入图片描述

1、当Android-Java编写的服务需要调用C++编写的服务时,C++作为grpc的服务端,Android-Java作为客户端
2、C++作为服务端是可以同时被其它服务同时调用的
3、请求和响应的方式的都为Proto形式

在grpc的使用中,我们需要编写Protocol Buffers作为接口描述语言,在proto3中,它支持Java、C++、Python、Go、Ruby、Objective C、C#,在三方实现也可用于C、Perl、PHP,R、 Scala,Swift 和Julia

我们可以编写同一个proto文件,定义好服务端的请求数据和相应数据,然后根据不同的语言,生成不同的代码
helloworld.proto

syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.novice.grpc.helloworld";
option java_outer_classname = "HelloWorldProto";

service Greeter {
    rpc SayHello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
    string jsonData= 1;
}

message HelloResponse {
    string jsonData= 1;
}

grpc的通信方式:

(引用自官网https://grpc.io/docs/tutorials/basic/java.html)

1、简单grpc:客户端使用存根向服务器发送请求并等待响应返回,就像正常的函数调用一样

 rpc SayHello (HelloRequest) returns (HelloResponse) {}

2、服务端流:其中客户端发送请求到服务器,并获得一个流中读取消息的序列后面。客户端从返回的流中读取,直到没有更多消息

rpc SayHello (HelloRequest) returns (stream HelloResponse) {}

3、客户端流:其中客户端将消息写入的序列,并且将它们发送到服务器,再次使用提供的流。客户端完成消息编写后,等待服务器全部读取并返回响应

rpc SayHello (stream HelloRequest) returns (HelloResponse) {}

4、双向流:双方都派出使用读写流的消息序列。这两个流独立运行,因此客户端和服务器可以按照他们喜欢的顺序进行读写:例如,服务器可以在写入响应之前等待接收所有客户端消息,或者它可以交替读取消息然后写入消息,或其他一些读写组合。保留每个流中的消息顺序。

rpc SayHello (stream HelloRequest) returns (stream HelloResponse) {}

grpc之proto的基本数据类型

引用官网https://developers.google.com/protocol-buffers/docs/proto

在这里插入图片描述
proto支持大部分基本数据类型,可以使用message对基本数据类型进行封装,但在处理较为复杂的结构对象时,处理会极为不便
个人建议使用json字符串传输
优点:json字符串是string类型,同时json是轻量级数据交互语言,可在多平台上生成和解析,降低了proto的复杂性和处理压力,很好的支持了proto
缺点:添加了服务端和客户端对json的生成和解析操作【不适用json时,复杂接口下还是需要解析转型】

grpc消息传输限制
默认最大消息大小默认被设置为4MB,在创建Server的时候,配置相关的参数来扩大限制最小消息大小的值
MaxRecvMsgSizeMaxSendMsgSize分别设置服务器可以接收的最大消息大小和可以发送的最大消息大小(以字节为单位)。不设置的话默认都是4MB
但是设置限制值过大时,会造成一般情况下的资源浪费(如,只需要2M传输,不需要20M)
可以使用上述流steam传递,分块传输

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
grpc-server-spring-boot-starter是一个基于Spring Boot框架的gRPC服务器的启动器。gRPC(Google Remote Procedure Call)是一种高性能的远程过程调用框架,它使用Protocol Buffers作为接口定义语言,并支持多种编程语言。 grpc-server-spring-boot-starter提供了一系列简化配置和集成的功能,使得在Spring Boot应用中启动和配置gRPC服务器变得更加容易。它提供了自动装配的功能,可以根据应用的配置自动创建和启动gRPC服务器。用户只需要在配置文件中设置相应的参数,如服务器的端口号、TLS证书等,即可完成服务器的启动配置。 在使用grpc-server-spring-boot-starter时,用户可以方便地定义服务接口和实现类。通过使用gRPC的接口定义语言(protobuf)定义接口,并生成对应的Java代码。然后,用户只需要在实现类中实现相应的接口方法即可。 在服务器启动后,grpc-server-spring-boot-starter会根据定义的接口和实现类,自动创建相应的gRPC服务,并将其注册到服务器中。当客户端发起远程调用时,服务器会根据接口定义和方法参数,将请求转发给对应的实现类,并返回执行结果给客户端。 grpc-server-spring-boot-starter还支持对gRPC服务器进行拦截器的配置。拦截器可以在请求和响应的过程中拦截和修改消息,用于实现日志记录、鉴权、性能监控等功能。 总之,grpc-server-spring-boot-starter简化了在Spring Boot应用中使用gRPC的配置和集成过程,使得开发者可以更加便捷地构建和部署gRPC服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值