gRPC初体验

一、gRPC简介

1、RPC是远程过程调用的简称,在分布式系统中,客户端可以像调用本地对象一样调用远程机器上服务端对象,用于系统的垂直拆分,常见的JAVA RPC框架有JAVA自带的RMI、基于Http的Hessian、阿里基于TCP的Dubbo、淘宝基于TCP的HSF、Spring Cloud等。

2、gRPC是一个基于ProtoBuf、HTTP2设计的高性能通用RPC框架,支持跨语言调用。

二、Hello World例子

1、定义服务

使用ProtoBuf接口定义语言定义方法和请求参数和返回类型。

(1)、hello.proto:请求参数和返回类型
复制代码
protoc --java_out=. hello.proto

编译后生成五个文件Hello.java、HelloRequest.java、HelloRequestOrBuilder.java、HelloResponse.java、HelloResponseOrBuilder.java

(2)、helloServer.proto 服务接口

服务接口的编码依赖于protoc-gen-grpc-java插件,mac下安装protoc-gen-grpc-java,下载protoc-gen-grpc-java配置环境

编译后会生成gRPC两个文件 GreetingService.java、HelloServiceGrpc.java

2、创建Maven多模块工程

Interface:proto生成的代码copy到该模块下

clien:客户端代码

service:服务端代码

3、服务端代码

一个接口实现类,一个启动类

4、客户端代码

注:开始运行的时候报错,报下面错误,代码跟进去发现默认是启用了SSL连接,但没有配置SSL证书,为了简单跑通第一个例子,可以加上usePlaintext(true)用明文进行通讯。

复制代码
Jetty ALPN/NPN has not been properly configurs
相关推荐
AI风老师1 小时前
5、docker镜像管理命令
java·docker·eureka
用户84913717547161 小时前
JustAuth实战系列(第5期):建造者模式进阶 - AuthRequestBuilder设计解析
java·设计模式·架构
励志成为糕手2 小时前
从反射到方法句柄:深入探索Java动态编程的终极解决方案
java·开发语言
是乐谷2 小时前
饿了么招java开发咯
java·开发语言·人工智能·程序人生·面试·职场和发展
zhysunny2 小时前
20.万物皆可变身术:状态模式架构全景解析
java·状态模式
hongjunwu2 小时前
Java集合的遍历方式(全解析)
java·开发语言·windows
cccc来财2 小时前
Golang的本地缓存freecache
java·开发语言·jvm
Barcke2 小时前
缓存界的 "双保险":打工人救星来了!(本地缓存 + Redis 双剑合璧,轻松应对高并发)
java·后端
用户84913717547162 小时前
JDK 17 实战系列(第5期):开发工具与API增强详解
java·jvm·架构
草履虫建模3 小时前
RuoYi-Cloud 微服务本地部署详细流程实录(IDEA + 本地 Windows 环境)
java·spring boot·spring cloud·微服务·云原生·架构·maven