对GRPC的通用封装

对GRPC的通用封装,第1张

通过封装将grpc的技术使用难度降低到普通Java程序的开发。

cncomydcommonsgrpc提供了4种形式的服务接口定义以适应不同的应用场景。

cncomydcommonsgrpc将请求参数和响应参数定义为bytes以统一因业务不同而导致的差异性;使用cglib进行动态代理,在grpc的方法中执行具体的业务处理。

在具体应用中应将此工程使用Maven打包后作为依赖引入目标工程中。

JDK:18

GRPC:161

Protobuf:330

cglib:325

IDE:开发工具IDEA

IDEA自带插件支持grpc开发,所以开发工具选择IDEA。在正式开始之前需要先安装Protobuf Support插件。

依次点击Intellij中的“File”-->"Settings"-->"Plugins"-->"Browse repositories",如图

输入Protobuf,如下所示

在main目录下新建一个名为proto的文件夹,请确保文件夹的所处位置以及名称都正确,否则将不能进行编译,而且不报任何错误。

proto文件编写完成后进行编译以生成对应的class文件,编译后的效果大致如图

其中包含了Request、Response与JSONObject之间的转换等,主要是对应用的辅助。

暂不公开。

背景:

需要对rpc服务进行压测,需要构造rpc请求。

protobuf 简介

Protocol Buffer (简称Protobuf) 是Google出品的性能优异、跨语言、跨平台的序列化库。

文档结构

protobuf 使用 proto 文件来保存文档。

定义消息

protobuf使用message定义消息,例如:

AlgPluginObject消息定义了三个字段,分别为插件名称,U0ID及插件方法。

消息定义中的每个字段都有唯一的编号。 这些字段编号用于以消息二进制格式标识字段,并且在使用消息类型后不应更改

定义服务

定义RPC方法,需要使用service关键字定义服务,并在里面定义方法。

此处定义了一个AlgReportPush服务,包含两个rpc方法:

下面针对上面的proto文件,写一个grpc client 进行rpc请求。

概要

由于gRPC主要是谷歌开发的,由于一些已知的原因,gRPC跑demo还是不那么顺利的。单独写这一篇,主要是gRPC安装过程中的坑太多了,记录下来让大家少走弯路。

主要的坑:

本文讲解gRPC demo的同时,会介绍如何解决这些坑。本文对应的Github地址:>

以上就是关于对GRPC的通用封装全部的内容,包括:对GRPC的通用封装、protobuf及grpc的client请求、gRPC入坑记等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9315677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存