grpc实现demo
一、前言
1、应用场景:Java做为服务端给go 提供接口
有两种方式:**http:网络传输协议**, **rpc(Remote Produce Call)远程过程调用**
两者区别: RPC 是根据语言API来定义,不是根据网络的应用定义
2、 grpc: 数据的序列化以及进程数据通信的交互方式
主要有以下几个过程
(1) 通过.proto文件定义传输的接口和消息体。
(2) 通过protocol编译器生成server端和client端的stub程序。
(3) 将请求封装成HTTP2的Stream。
(4) 通过Channel作为数据通信通道使用Socket进行数据传输。
二、springboot 构建grpc 的demo
1、版本对应:
springboot : 2.1.4.RELEASE
JDK1.8
2、项目构建
2.1 项目结构
2.2 根pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<groupId>com.lrbj</groupId>
<artifactId>grpc-springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>grpc-springboot-demo</name>
<description>Demo project for Spring Boot</description>
<packaging>pom</packaging>
<!--引入的子模块-->
<modules>
<module>grpc-lib</module>
<module>grpc-server</module>
<module>grpc-client</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-boot.version>2.1.4.RELEASE</spring-boot.version>
<net-devh-grpc.version>2.0.1.RELEASE</net-devh-grpc.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.lrbj</groupId>
<artifactId>grpc-lib</artifactId>
<version>${project.version}</version>
</dependency>
<!--核心grpc-spring-boot依赖-->
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId>
<version>${net-devh-grpc.version}</version>
</dependency>
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>${net-devh-grpc.version}</version>
</dependency&g