dubbo原理

      最后更新:2022-06-25 03:08:00 手机定位技术交流文章

      官方網站:Apache Dubbo

      简单的 Dubbo原理

      它主要由五个节点组成:供应商、消费者、容器、登记和监视

      1. 提供商:服务提供商
      2. 消费者:服务用户
      3. 容器:运行服务的容器
      4. 登记:登记中心
      5. 监视:监视中心、统计服务电话号码和电话时间

      dubbo工作过程:

      1. 服务容器负责启动、装载和运行服务提供者。
      2. 服务 提供者 开始 服务 时, 它 将 提供 的 服务 登记 在 登记 中心 。
      3. 服务消费者在开始服务时就订阅登记中心提供所需的服务。
      4. 注册处向消费者返回服务提供者地址的清单,如果发生更改,注册处根据长途连接向消费者转达更改数据。
      5. 服务消费者根据软负载平衡算法从提供者地址列表中选择一个提供者,如果调用失败,则选择另一个提供者。
      6. 服务消费者和服务提供者,在记忆中积累电话和电话时间,每分钟按一定时间向监测中心发送统计数据。

      杜博建筑原理

      这里调用器是调用服务的抽象,调用器包含了调用服务地址和服务接口信息。

      目录代表多个发票人,可视作列表,但与列表不同,它的值可以动态,例如注册中心推移更改。

      聚类将目录中的多个调用器合并为一个调用器,透明到上层,并且调用过程包含一个容错逻辑,并在调用失败后再尝试另一个逻辑。

      路由器负责通过路由规则,如读写分离、应用程序分离等,从多个调用器中选择子集。

      LoadBalance负责为此调用从多个调用器中选择一个特定的调用器,该过程包括负荷平衡算法。

      通过 javassistProxyFactory将实现类转换为调用器

      1. Dubboxml配置文件分析过程

      dubbo.xml标题如下:

      一个包含 dubbo的名称的命名空间, dubbo.Spring将在xml引入 Spring.handlers文件后找到 spring,找到相应的命名空间处理器 DubboNamespaceHandler

      同时, DubboNamespaceHandler继承了spring's NamspaceHandlerSupport,将执行init方法,初始化解析器,有应用程序、模块、注册表..等很多。

      然后将其分析为配置文件,例如 ApplicationConfig, ModuleConfig, RegistryConfig, MonitorConfig..,并添加豆类容器

      Dubbo服务如何披露?

      3. Dubbo服务调用过程

      4. Dubbo心率机制

      dodubbo支持哪些通信协议

      1.杜博默认协议:

      • 单一TCP长连接、希斯二进制序列和NIO异步通信
      • 适用于小型批量并发服务电话的小型包,服务消费者数量远远超过服务提供者数量
      • 不适合传输大规模包

      2、rmi 协议:

      • 使用JDK标准 java.rmi.*使用阻塞短连接和JDK标准序列方法实现
      • 如果服务接口继承了 java.rmi.Remote接口能够与原先的RMI交互
      • 传输包是开放的,用户和发送器的数量是可比的

      希斯协定:

      • 低级HTTP通信,服务器暴露服务,杜博缺少嵌入式Jetty作为服务器实现
      • 与原来的希斯语服务互操作
      • 通信效率高于嵌入WebService和Java的序列
      • 需要实现参数和返回值 Serializable接口, 自定义列表, 地图, 数目, 日期, 日历接口等.
      • 适用于更大的数据包,提供者比消费者多,提供者压力更大

      http协议:

      • 基于http形式的远程调用协议,短连接,Json序列
      • 为传输包打开,不支持传输文件
      • 适用于同时用于应用程序和浏览器的JS服务

      5.网站服务协议:

      • 基于Apache CXF、短连接、SOAP文本序列的 Frontend-simple和transports-http实现
      • 与原始WebService服务互操作
      • 适用于系统集成和多语调用

      (六)储蓄协议:

      • 将额外的标题信息添加到thrift本地协议的扩展中 [2]
      • 较少使用,不支持零传送

      基于雷迪斯实现的RPC协议

      8.基于Memcached实现的RPC协议

      第四,杜博群容模型

      失败集群

      自动转换失败,失败时再尝试其他服务器。

      它用于读取操作,但重试会造成较长的延迟。 使用"retries="2"来设置重试数目(不包括第一个)

      failfase群

      快速故障,只启动一次电话,无法立即报告错误

      用于非功率等价的写字操作,例如添加记录

      不安全集群

      安全失败,异常发生直接忽略

      用于编写审计日志等操作

      失败集群

      自动恢复失败,后端记录失败请求,时序重复

      用于消息通知等操作

      叉木星團

      同时调用多个服务器, 只返回一个成功.

      它用于高要求的实时阅读操作,但浪费更多的资源。 使用叉子="2"来设置最大平行数

      6.广播集群

      广播通话所有提供商,一次通话,任何一个报告错误

      通知所有提供者更新本地资源,例如缓存或日志

      双重负荷平衡策略

      1. 随机 LoadBalance 随机概率按重量设置
      2. 圆罗宾载荷平衡
      3. 最少活跃的负载平衡最少活跃的呼叫数。 随机的相同活跃的呼叫数。 主动的呼叫数指呼叫间的计数差距,因为 slow-responsing 提供者收到的请求减少,而计数差距逐渐扩大。
      4. ConsistentHashLoadBalance ConsistentHash,请求相同的参数总是发送给相同的提供者

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/28394.html

          热门文章

          文章分类