前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RPC框架实践之:Google_gRPC

RPC框架实践之:Google_gRPC

作者头像
CodeSheep
发布2018-05-22 12:24:54
1.2K0
发布2018-05-22 12:24:54
举报

gRPC是Google开源的通用高性能RPC框架,它支持的是使用Protocol Buffers来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。与文章《RPC框架实践之:Apache Thrift》 一文中实践的另一种通用RPC框架 Thrift 能通过Generator自动生成对应语言的Service接口类似,gRPC也能 自动地生成 Server和Client的 Service存根(Stub),我们只需要 一个命令 就能快速搭建起RPC运行环境。

My Desktop
My Desktop

概述

gRPC是Google开源的通用高性能RPC框架,它支持的是使用Protocol Buffers来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。与文章《RPC框架实践之:Apache Thrift》 一文中实践的另一种通用RPC框架 Thrift 能通过Generator自动生成对应语言的Service接口类似,gRPC也能 自动地生成 Server和Client的 Service存根(Stub),我们只需要 一个命令 就能快速搭建起RPC运行环境。

下面实践一下gRPC框架,做的事情就是:Client端通过远程RPC调用Server的获取时间的接口,从而将服务器时间获取到本地并显示。

类似于之前对于 RPC框架: Thrift 的实践步骤,下面一一阐述。


开发gRPC-API

  • 首先创建一个基于Maven的项目: GrpcAPI
  • pom中加入grpc相关的依赖

这个grpc-all包含了很多grpc相关的组件:grpc-netty 、 grpc-protobuf 、grpc-stub 等等

与grpc相关的包
与grpc相关的包
  • pom中加入grpc相关的 build插件

这里添加两个Maven插件,目的是后面需要用这些插件来执行Protocol Buffers命令,从而自动生成相关的Stub代码:

os-maven-plugin:生成平台无关的属性 protobuf-maven-plugin:执行Protocol Buffers命令并生成Stub代码库

  • 编写.proto的服务定义文件

这里.proto文件的作用和写法就和我的前一篇文章《RPC框架实践之:Apache Thrift》 一文中Thrift所要求的.thrift文件编写一样,是有其自己的语法要求的!

  • 执行mvn compile命令来自动生成代码Stub

mvn编译完成以后,在target/generated-sources目录下就能看到根据上面.proto文件自动转化生成的Java代码Stub

mvn编译
mvn编译

代码生成结果如下所示

代码生成结果
代码生成结果

好了,既然gRPC-API已经有了,下面可以分别编写服务端和客户端


开发gRPC服务端

  • 创建基于Maven的项目:Server
  • pom中添加 GrpcAPI 依赖

接下来一步比较关键

  • 实现gRPC服务接口

我想此处重写的getDate()方法并不陌生吧,这正是上文 .proto 文件中定义的Service接口。 此处逻辑比较简单:获取当前时间,并且将其与请求RPCDateRequest中提取出的userName字段进行拼接,然后返回给调用端!形成一个闭环

  • 创建gRPC服务端启动类

端口自定义的9999,也就是在该端口监听。现在可以立即运行GRPCServer,来启动服务端

启动服务端
启动服务端

开发gRPC客户端

  • 创建基于Maven的项目:Client
  • pom中依然需要添加 GrpcAPI 依赖
  • 创建gRPC客户端启动类

现在立即启动 GRPCClient!


C-S通信实验

还记得我们的目标吗?

RPC完成的即是远程的过程调用,在本实验中那就是客户端可以远程调用服务端的getDate()过程,并将结果取到客户端来显示!

RPC调用成功
RPC调用成功

后记

本文实验代码在此 → 需要自取

作者其他一些RPC框架的实践如下:

作者一些关于容器化、微服务化方面的文章如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 开发gRPC-API
  • 开发gRPC服务端
  • 开发gRPC客户端
  • C-S通信实验
  • 后记
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档