gRPC是谷歌开源的一款RPC框架,基于HTTP/2协议,使用protocol buffer作为接口定义语言(Interface Definition Language)和底层数据交换格式。gRPC最大的优点是能跨语言,因为使用和语言无关的protobuf来定义接口,并且使用标准的http协议来进行传输,能使不同语言的服务端和客户端互相兼容。
gRPC-java的github地址是https://github.com/grpc/grpc-java。它是gRPC的java语言实现。在它的源代码中已经包含了一个example,里面有最简单的gRPC作为rpc框架的demo。本文是基于它,探讨单独建立一个项目时,如何通过gRPC进行远程过程调用。
一.下载gRPC源码
可以直接下载github上的源码,也可以先fork到自己的仓库,再从自己的仓库下载。推荐第二种。
二.通过Intellij新建一个基于maven的项目grpc-demo
三.pom文件中加入如下内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<grpc.version>1.19.0</grpc.version><!-- CURRENT_GRPC_VERSION -->
<protobuf.version>3.6.1</protobuf.version>
<protoc.version>3.6.1</protoc.version>
<!-- required for jdk9 -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-bom</artifactId>
<version>${grpc.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId&