grpc部署初体验

时间:2022-04-26
本文章向大家介绍grpc部署初体验,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

grpc是google开源的RPC框架,基于http2协议和ProtoBuf序列化机制,关于它的使用实例在官方文档已经有比较详细的介绍,在此仅对安装部署过程作一番总结。

要使用grpc进行正常的开发运行,必须集齐三样法宝,分别是:

Protocol Compiler,使.proto生成序列化代码,如helloworld.proto,通过protoc命令生成如下java文件:

Protobuf Runtime,针对特定语言的运行时库,如java中即是protobuf-java前缀的jar包。

protoc-gen-grpc-java插件,生成通讯代码,如:

这三样法宝都可以在github找到相应的安装包,当然,也可以自己编译生成,但在部署过程中千万要注意它们之间的版本一定要匹配,如Protocol Compiler用了v3.0.0,相应的Protobuf Runtime也是v3.0.0,但是protoc-gen-grpc-java用的却是v0.8.0,相应的grpc-all jar包也是0.8.0,这肯定是不行的,而且就算你找到了相应的版本,在linux环境编译安装过程中会遇到一些缺少文件的错误,涉及一些编译,C语言库的知识,这是一个很不错的探索机会,但是生产使用过程中我们需要的是安全,简洁,高效,把一部分过程封装起来,使用一些工具来统一管理这一过程,使用maven插件就是一个不错的方法,不需要很多步骤,只需要在pom.xml中加入一个配置即可,如你使用grpc v0.14.0:

 <build>
       <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.4.1.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:3.0.0-beta-2:exe:${os.detected.classifier}               
                   </protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>
io.grpc:protoc-gen-grpc-java:0.14.0:exe:${os.detected.classifier}
                  </pluginArtifact>
                    <outputDirectory>${basedir}/src/main/java</outputDirectory>
                    <clearOutputDirectory>false</clearOutputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

(参考来源:github官网)

此com.google.protobuf:protoc:3.0.0-beta-2:exe:${os.detected.classifier}中的版本号3.0.0-beta-2要和protobuf-java jar包的版本号一致,而io.grpc:protoc-gen-grpc-java:0.14.0中的版本号和你使用的grpc-all jar包中的版本号一致,outputDirectory代表生成的java文件的存放路径,而设置clearOutputDirectory为false,是为了执行compile和compile-custom过程中不覆盖前一步骤生成的文件。

一切就绪,maven install下,它会自动帮你安装缺少的插件并生成java文件。

中文官方文档:http://doc.oschina.net/grpc?t=57966