返回介绍

gPRC文档 - 源码导航

发布于 2020-09-14 13:14:41 字数 3564 浏览 1093 评论 0 收藏 0

注:内容翻译自grpc-java首页的 Navigating Around the Source

从高水平上看,类库有三个不同的层: Stub/桩, Channel/通道 & Transport/传输.

Stub

Stub层暴露给大多数开发者,并提供类型安全的绑定到正在适应(adapting)的数据模型/IDL/接口。gRPC带有一个protocol-buffer编译器的 插件用来从.proto 文件中生成Stub接口。当然,到其他数据模型/IDL的绑定应该是容易添加并欢迎的。

关键接口

Stream Observer

Channel

Channel层是传输处理之上的抽象,适合拦截器/装饰器,并比Stub层暴露更多行为给应用。它想让应用框架可以简单的使用这个层来定位横切关注点(address cross-cutting concerns)如日志,监控,认证等。流程控制也在这个层上暴露,容许更多复杂的应用来直接使用它交互。

Common

Client

Server

Transport

Transport层承担在线上放置和获取字节的繁重工作。它的接口被抽象到恰好刚刚够容许插入不同的实现。Transport被建模为Stream工厂。server stream和client stream之间在接口上的存在差别以整理他们在取消和错误报告上的不同语义。

注意transport层的API被视为gRPC的内部细节,并比在package io.grpc下的core API有更弱的API保证。

gRPC带有三个Transport实现:

  1. 基于Netty 的transport是主要的transport实现,基于Netty. 可同时用于客户端和服务器端。
  2. 基于OkHttp 的transport是轻量级的transport,基于OkHttp. 主要用于Android并只作为客户端。
  3. inProcess transport 是当服务器和客户端在同一个进程内使用使用。用于测试。

Common

Client

Server

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文