撰写于 2022
  • Dubbo 3 之 Triple 流控反压原理解析

    Wednesday, December 28, 2022 在 源码分析

    Triple 是 Dubbo 3 提出的基于 HTTP2 的开放协议, 旨在解决 Dubbo 2 私有协议带来的互通性问题。 Triple 基于 HTTP/2 定制自己的流控,支持通过特定的异常通知客户端业务层服务端负载高情况, 保护了服务端被大流量击垮,提高系统高可用能力。 一、流控反压现状 客户端和服务器端在接收数据的时候有一个缓冲区来临时存储数据, 但是缓冲区的大小是有限制的,所以有可能会出现缓冲区溢出的情况, HTTP 通过流控保护数据溢出丢失风险。 1、HTTP/1 …

    更多

  • Triple 协议支持 Java 异常回传的设计与实现

    Monday, December 19, 2022 在 源码分析

    背景 在一些业务场景, 往往需要自定义异常来满足特定的业务, 主流用法是在catch里抛出异常, 例如: public void deal() { try{ //doSomething ... } catch(IGreeterException e) { ... throw e; } } 或者通过ExceptionBuilder,把相关的异常对象返回给consumer: provider.send(new ExceptionBuilders.IGreeterExceptionBuilder() …

    更多

  • 浅析 Dubbo 3.0 中接口级地址推送性能的优化

    Thursday, June 23, 2022 在 源码分析

    URL 简介 在阐述地址推送性能的具体优化之前,我们有必要先了解一下与之息息相关的内容 — URL。 定义 在不谈及 dubbo 时,我们大多数人对 URL 这个概念并不会感到陌生。统一资源定位器 (RFC1738――Uniform Resource Locators (URL))应该是最广为人知的一个 RFC 规范,它的定义也非常简单。 因特网上的可用资源可以用简单字符串来表示,该文档就是描述了这种字符串的语法和语 义。而这些字符串则被称为:“统一资源定位器”(URL) …

    更多

撰写于 2021
  • Dubbo3 应用级服务发现

    Wednesday, June 02, 2021 在 源码分析

    1 服务发现(Service Discovery) 概述 从 Internet 刚开始兴起,如何动态感知后端服务的地址变化就是一个必须要面对的问题,为此人们定义了 DNS 协议,基于此协议,调用方只需要记住由固定字符串组成的域名,就能轻松完成对后端服务的访问,而不用担心流量最终会访问到哪些机器 IP,因为有代理组件会基于 DNS 地址解析后的地址列表,将流量透明的、均匀的分发到不同的后端机器上。 在使用微服务构建复杂的分布式系统时,如何感知 backend 服务实例的动态上下线,也是微服务框架最 …

    更多

撰写于 2019
  • Dubbo 中的 URL 统一模型

    Thursday, October 17, 2019 在 源码分析

    定义 在不谈及 dubbo 时,我们大多数人对 URL 这个概念并不会感到陌生。统一资源定位器 (RFC1738――Uniform Resource Locators (URL))应该是最广为人知的一个 RFC 规范,它的定义也非常简单 因特网上的可用资源可以用简单字符串来表示,该文档就是描述了这种字符串的语法和语 义。而这些字符串则被称为:“统一资源定位器”(URL) 一个标准的 URL …

    更多

撰写于 0001
  • 发布使用不同协议的多个服务,通过单端口监听

    Monday, January 01, 0001 在 源码分析

    通过对protocol进行配置,dubbo3可以支持端口的协议复用。 比如使用Triple协议启动端口复用后,可以在相同的端口上为服务增加 Dubbo协议支持,以及Qos协议支持。这些协议的识别都是由一个统一的端口复用 服务器进行处理的,可以用于服务的协议迁移,并且可以节约端口以及相关的资源,减少运维的复杂性。 在服务的创建阶段,通过从Config层获取到服务导出的协议配置从而创建不同的Protocol对象进行导出。在导出的过程 中,如果不是第一次创建端口复用的Server,那 …

    更多

  • Dubbo 3 中的三层配置隔离

    Monday, January 01, 0001 在 源码分析

    Models提供的隔离 Dubbo目前提供了三个级别上的隔离:JVM级别、应用级别、服务(模块)级别,从而实现各个级别上的生命周期及配置信息的单独管理。这三个层次上的隔离由 FrameworkModel、ApplicationModel 和 ModuleModel 及它们对应的 Config 来完成。 FrameworkModel :Dubbo 框架的顶级模型,表示 Dubbo 框架的全局运行环境,适配多应用混合部署的场景,降低资源成本。 如:假设我们有一个在线教育平台,平台下有多个租户,而我们 …

    更多

  • Dubbo 3.0.8 源码解析

    Monday, January 01, 0001 在 Dubbo3 [v3.0.8] 源码解析

    更多

  • dubbo-metrics 指标模块源码浅析

    Monday, January 01, 0001 在 dubbo-metrics 指标模块源码浅析

    更多