返回介绍

Channel层 - Channel Provider设计与代码实现

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

功能

Channel Provider 的功能在于帮助创建合适的 ManagedChannelBuilder。

所谓合适,是指目前有多套 Channel 的实现,典型如 netty 和 okhttp ,不排除未来加入其他实现的可能。因此, 如何选择哪套实现就是一个需要特别考虑的问题。

Channel Provider 的设计目标是解藕这个事情,不使用配置,hard code等方式,而是将细节交给 Channel Provider 的具体实现。

使用场景

在 ManagedChannelBuilder 中这样调用 ManagedChannelProvider:

  1. public abstract class ManagedChannelBuilder<T extends ManagedChannelBuilder<T>> {
  2. public static ManagedChannelBuilder<?> forAddress(String name, int port) {
  3. return ManagedChannelProvider.provider().builderForAddress(name, port);
  4. }
  5. public static ManagedChannelBuilder<?> forTarget(String target) {
  6. return ManagedChannelProvider.provider().builderForTarget(target);
  7. }
  8. ......
  9. }

其中 provider() 静态方法会根据实际情况选择一套可用的方案,然后 builderForAddress()方法和 forTarget() 方法会创建对应的ManagedChannelBuilder (基于okjava或者netty)。

继承结构

Channel Provider设计与代码实现 - 图1

结构简单,一个抽象基类 ManagedChannelProvider,然后 okjava 和 netty 各实现了一个子类。

具体实现看后面的代码分析。

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

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

发布评论

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