grpc部署初体验

Posted java达人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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



java达人

ID:java_daren




以上是关于grpc部署初体验的主要内容,如果未能解决你的问题,请参考以下文章

gRPC初体验

[Go][gRPC]mock初体验

Grpc-Gateway 初体验

.NET gRPC核心功能初体验

干货.NET Core微服务之Grpc初体验

dubbo go 初体验