前言
之前在写一篇关于nacos源码解析的时候,有意的回避了关于底层数据传输层的解读,本文也不会深入底层做源码分析,本文意在说明grpc和proto的使用
protocol buffers的介绍
protocol buffers 是一种灵活,高效,自动化机制的结构数据序列化方法
使用
依赖:
<dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>${grpc.version}</version> </dependency>
其中grpc.version=1.47.0
添加java对.proto文件的编译器,需要在pom文件中添加如下插件:
<build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.5.0.Final</version> </extension> </extensions> <plugins> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.5.0</version> <configuration> <protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
其中:
io.grpc.version=1.17.0 protoc.version = 3.19.2
添加完如上依赖之后,可以查看一下到如下的信息:
编写.proto文件
本篇文章不做深入的proto语法分析,只提供简单的使用案列,部分简单注释
在src/main下创建新文件夹proto(编译器默认编译路径),然后编写.proto文件
编写完proto文件之后,就可以使用maven的compile命令编译文件,生产.class文件,生成的class文件如下:
grpc的使用
服务端
添加实现类,编写server服务端启动代码:
客户端
以上即是grpc既proto的使用demo
创作不易,如果觉得有用,请点赞收藏!如果有问题,欢迎留言讨论!