• 深入理解Apache Dubbo与实战 pdf


    服务的暴露过程

    服务器端 ( 服务提供者 ) 在框架启动时 , 会初始化服务实例 , 通过 Proxy 组件调用具体协议 ( Protocol ),
    把服务端要暴露的接口封装成 Invoker ( 真实类型是AbstractProxylnvoker ) , 然后转换成 Exporter, 这个时候框架会打开服务端口等并记录服务实例
    到内存中 , 最后通过 Registry 把服务元数据注册到注册中心 。 这就是服务端 ( 服务提供者 )整个接口暴露的过程 。

    dubbo注册中心

    Dubbo 主要包含四种注册中心的实现 , 分别是ZooKeeper,Redis,Simple,Multicast

    工作流程

    • 服务提供者启动时,会向注册中心写入自己的元数据信息,同时会订阅配置元数据信息 。

    • 消费者启动时,也会向注册中心写入自己的元数据信息,并订阅服务提供者,路由和配置元数据信息

    • 服务治理中心(dubbo-admin)启动时,会同时订阅所有消费者、服务提供者、路由和配置元数据信息

    • 当有服务提供者离开或有新的服务提供者加入时,注册中心服务提供者目录会发生变化,变化信息会动态通知给消费者,服务治理中心

    • 当消费方发起服务调用时,会异步将调用 、 统计信息等上报给监控中心

    • Dubbo 使用 ZooKeeper 作为注册中心时,只会创建持久节点和临时节点两种,对创建的顺序并没有要求

    • 目录示例:

    • 客户端订阅: 客户端第一次连上注册中心 , 订阅时会获取全量的数据 , 后续则通过监听器事件进行更新

    • ZooKeeper的每个节点都有一个版本号,当某个节点的数据发生变化(即事务操作)时 ,
      该节点对应的版本号就会发生变化,并触发 watcher 事件,推送数据给订阅方。版本号强调的
      是变更次数,即使该节点的值没有变化,只要有更新操作,依然会使版本号变化

    dubbo扩展点加载机制

    javaSPI

    具体步骤:
    1.定义一个接口和对应的方法
    2.编写接口的实现类
    3.在META-INF/services/目录下,创建一个以接口全路径命名的文件
    4.文件内容为具体实现类的全路径名
    5.在代码中通过java.util.ServiceLoader来加载具体的实现类




    Dubbo对java的spi机制进行了改进


    在DubboSPI中,我们使用@Adaptive注解,可以动态地通过URL中的参数来确定要使用哪个具体的实现类

    ExtensionLoader工作流程

    这个类实现了配置的加载,扩展类缓存,自适应对象生成

    ExtensionLoader的逻辑入口可以分为getExtension、getAdaptiveExtension、getActivateExtension 三个
    分别是获取普通扩展类、获取自适应扩展类、获取自动激活的扩展类


  • 相关阅读:
    三大主营业务全面开花 京东方半年报大幅盈利(半年446亿元,同比增长69%,实现净利润43亿元)
    JS几种变量交换
    Vue2
    树的插入、删除、旋转归纳
    从两个不同的ServiceProvider说起
    集中式路由
    MongoDB 可视化管理工具
    服务发布
    Parallel
    NET WebAPi之断点续传下载(下)
  • 原文地址:https://www.cnblogs.com/Baronboy/p/15153251.html
Copyright © 2020-2023  润新知