码迷,mamicode.com
首页 > 编程语言 > 详细

gRPC Java的代码架构

时间:2016-05-13 07:42:15      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

RPC(远程过程调用) 的架构最常见的是“动态代理”方式,事先定义好接口,用一个代理假装实现了这个接口(真正的实现放在服务端),供客户端调用,代理内部将该方法调用封装成一个网络请求送到服务端。服务端根据参数找到对应的注册好的对象处理,返回给客户端。

官网的gRPC的宏观的架构图如下:

技术分享

客户端调用 stub 对象,所谓 stub 对象就类似代理对象一样。作为跟服务通讯的封装抽象。

在 gRPC 里,stub 对象将请求用 protobuf 方式序列化成字节流,用于线上传输,到 server 端后调用真正的实现对象处理。 

 

Java 的客户端和服务器实现也是遵循这个架构的。

gRPC-Java 的插件会给我们自动产生一个 GreeterGrpc(招待员类)封装了三种跟服务器接口通讯的方案:

  • 同步阻塞调用;
  • 异步回调;
  • 同步非阻塞。

技术分享

 

对于 Stub ,可以用下面思维导图简单描述:

客户端的调用都是通过 Stub的。

技术分享

所有 Stub 的 new 都需要传入一个 channel 参数。

管道层 gRPC 默认提供了 4钟 Channel,如下图:

 

技术分享

 

 

参考资料:

gRPC 入门及源码分析
http://evthoriz.com/2015/07/07/gRPC-tutorial/

gRPC Java的代码架构

标签:

原文地址:http://www.cnblogs.com/ghj1976/p/5484968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!