blob: 4d8131f9519d533519629b13208ebf5b63e71e5b [file] [log] [blame]
<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/blog/2023/02/20/%E6%8C%87%E6%A0%87%E5%9F%8B%E7%82%B9/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta http-equiv=Content-Security-Policy content="frame-src *"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=manifest href=/manifest.webmanifest><title>指标埋点 | Apache Dubbo</title><meta property="og:title" content="指标埋点">
<meta property="og:description" content="概述 1. 指标接入说明 2. 指标体系设计 Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus 3. 结构设计 移除原来与 Metrics 相关的类 创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换 4. 数据流转 5. 目标 指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = &#34;default&#34;; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = &#34;1.0.0&#34;; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg."><meta property="og:type" content="article"><meta property="og:url" content="https://cn.dubbo.apache.org/zh-cn/blog/2023/02/20/%E6%8C%87%E6%A0%87%E5%9F%8B%E7%82%B9/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2023-02-20T00:00:00+00:00"><meta property="article:modified_time" content="2023-06-18T13:37:03+08:00"><meta itemprop=name content="指标埋点"><meta itemprop=description content="概述 1. 指标接入说明 2. 指标体系设计 Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus 3. 结构设计 移除原来与 Metrics 相关的类 创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换 4. 数据流转 5. 目标 指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = &#34;default&#34;; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = &#34;1.0.0&#34;; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg."><meta itemprop=datePublished content="2023-02-20T00:00:00+00:00"><meta itemprop=dateModified content="2023-06-18T13:37:03+08:00"><meta itemprop=wordCount content="1756"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="指标埋点"><meta name=twitter:description content="概述 1. 指标接入说明 2. 指标体系设计 Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus 3. 结构设计 移除原来与 Metrics 相关的类 创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换 4. 数据流转 5. 目标 指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = &#34;default&#34;; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = &#34;1.0.0&#34;; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg."><script async src="https://www.googletagmanager.com/gtag/js?id=G-NM6FFMT51J"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.f77e221bcdbe0cadb996060fe82063c747b60c229a1f8bbf0ee529adbadd84fa.css as=style><link href=/scss/main.min.f77e221bcdbe0cadb996060fe82063c747b60c229a1f8bbf0ee529adbadd84fa.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="概述 1. 指标接入说明 2. 指标体系设计 Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus 3. 结构设计 移除原来与 Metrics 相关的类 创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换 4. 数据流转 5. 目标 指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = &#34;default&#34;; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = &#34;1.0.0&#34;; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg."><meta property="og:description" content="概述 1. 指标接入说明 2. 指标体系设计 Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus 3. 结构设计 移除原来与 Metrics 相关的类 创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换 4. 数据流转 5. 目标 指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = &#34;default&#34;; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = &#34;1.0.0&#34;; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg."><meta name=twitter:description content="概述 1. 指标接入说明 2. 指标体系设计 Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus 3. 结构设计 移除原来与 Metrics 相关的类 创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换 4. 数据流转 5. 目标 指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = &#34;default&#34;; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = &#34;1.0.0&#34;; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg."><meta property="og:url" content="https://cn.dubbo.apache.org/zh-cn/blog/2023/02/20/%E6%8C%87%E6%A0%87%E5%9F%8B%E7%82%B9/"><meta property="og:title" content="指标埋点"><meta name=twitter:title content="指标埋点"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/docs3-v2/java-sdk/observability/dataflow.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=stylesheet><link href=/css/language.css rel=stylesheet><script src=/js/script.js></script></head><body class="td-page td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/overview/home/><span>文档</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class="nav-link active" href=/zh-cn/blog/><span class=active>博客</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/download/><span>版本发布</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/contact/><span>联系社区</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://start.dubbo.apache.org/bootstrap.html target=_blank><span>Initializer</span><i class='fas fa-external-link-alt'></i></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/github/><span>Github</span><i class='fa-brands fa-github'></i></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdownMenuLink role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>中文</a><div class="dropdown-menu dropdown-menu-right" aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=/en/>English</a></div></li><li class="nav-item dropdown d-lg-block"><div class="nav-item d-none d-lg-block"></div></li></ul></div></nav><section class="header-hero text-white pb-0 light-text"></section></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-md-nowrap"><div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><script>$(function(){$("#td-section-nav a").removeClass("active"),$("#td-section-nav #m-zh-cnblog20230220e68c87e6a087e59f8be782b9").addClass("active"),$("#td-section-nav #m-zh-cnblog20230220e68c87e6a087e59f8be782b9-li span").addClass("td-sidebar-nav-active-item"),$("#td-section-nav #m-zh-cnblog20230220e68c87e6a087e59f8be782b9").parents("li").addClass("active-path"),$("#td-section-nav li.active-path").addClass("show"),$("#td-section-nav li.active-path").children("input").prop("checked",!0),$("#td-section-nav #m-zh-cnblog20230220e68c87e6a087e59f8be782b9-li").siblings("li").addClass("show"),$("#td-section-nav #m-zh-cnblog20230220e68c87e6a087e59f8be782b9-li").children("ul").children("li").addClass("show"),$("#td-sidebar-menu").toggleClass("d-none")})</script><div id=td-sidebar-menu class="td-sidebar__inner d-none"><div id=content-mobile><form class="td-sidebar__search d-flex align-items-center"><button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type=button data-toggle=collapse data-target=#td-section-nav aria-controls=td-docs-nav aria-expanded=false aria-label="Toggle section navigation"></button></form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav foldable-nav" id=td-section-nav><ul class="td-sidebar-nav__section pr-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblog-li><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblognews-li><input type=checkbox id=m-zh-cnblognews-check>
<label for=m-zh-cnblognews-check><a href=/zh-cn/blog/news/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblognews><span>社区动态</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221201dubbo-java-314-e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20221201dubbo-java-314-e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20221201dubbo-java-314-e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2022/12/01/dubbo-java-3.1.4-%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ title="Dubbo Java 3.1.4 正式发布" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221201dubbo-java-314-e6ada3e5bc8fe58f91e5b883><span>dubbo-java 3.1.4</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221022e8819ae784a6e7a8b3e5ae9ae680a7dubbo-java-e58f91e78988e8a784e58892e585ace5b883-li><input type=checkbox id=m-zh-cnblog20221022e8819ae784a6e7a8b3e5ae9ae680a7dubbo-java-e58f91e78988e8a784e58892e585ace5b883-check>
<label for=m-zh-cnblog20221022e8819ae784a6e7a8b3e5ae9ae680a7dubbo-java-e58f91e78988e8a784e58892e585ace5b883-check><a href=/zh-cn/blog/2022/10/22/%E8%81%9A%E7%84%A6%E7%A8%B3%E5%AE%9A%E6%80%A7dubbo-java-%E5%8F%91%E7%89%88%E8%A7%84%E5%88%92%E5%85%AC%E5%B8%83/ title="聚焦稳定性,Dubbo Java 发版规划公布" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221022e8819ae784a6e7a8b3e5ae9ae680a7dubbo-java-e58f91e78988e8a784e58892e585ace5b883><span>Dubbo Java 发版规划</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210718dubbo-java-302-e58f91e78988e585ace5918a-li><input type=checkbox id=m-zh-cnblog20210718dubbo-java-302-e58f91e78988e585ace5918a-check>
<label for=m-zh-cnblog20210718dubbo-java-302-e58f91e78988e585ace5918a-check><a href=/zh-cn/blog/2021/07/18/dubbo-java-3.0.2-%E5%8F%91%E7%89%88%E5%85%AC%E5%91%8A/ title="Dubbo Java 3.0.2 发版公告" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210718dubbo-java-302-e58f91e78988e585ace5918a><span>dubbo-java 3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220718dubbo-java-313-e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20220718dubbo-java-313-e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20220718dubbo-java-313-e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2022/07/18/dubbo-java-3.1.3-%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ title="Dubbo Java 3.1.3 正式发布" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220718dubbo-java-313-e6ada3e5bc8fe58f91e5b883><span>dubbo-java 3.1.3</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221218dubbo-java-320-beta3-e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20221218dubbo-java-320-beta3-e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20221218dubbo-java-320-beta3-e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2022/12/18/dubbo-java-3.2.0-beta.3-%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ title="Dubbo Java 3.2.0-beta.3 正式发布" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221218dubbo-java-320-beta3-e6ada3e5bc8fe58f91e5b883><span>dubbo-java 3.2.0-beta.3</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221118dubbo-320-beta2-e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20221118dubbo-320-beta2-e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20221118dubbo-320-beta2-e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2022/11/18/dubbo-3.2.0-beta.2-%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ title="Dubbo 3.2.0-beta.2 正式发布" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221118dubbo-320-beta2-e6ada3e5bc8fe58f91e5b883><span>dubbo-java 3.2.0-beta.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20200518dubbo-java-2714-e58f91e78988e585ace5918a-li><input type=checkbox id=m-zh-cnblog20200518dubbo-java-2714-e58f91e78988e585ace5918a-check>
<label for=m-zh-cnblog20200518dubbo-java-2714-e58f91e78988e585ace5918a-check><a href=/zh-cn/blog/2020/05/18/dubbo-java-2.7.14-%E5%8F%91%E7%89%88%E5%85%AC%E5%91%8A/ title="Dubbo Java 2.7.14 发版公告" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20200518dubbo-java-2714-e58f91e78988e585ace5918a><span>dubbo-java 2.7.14</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog10101dubbo-go-151-li><input type=checkbox id=m-zh-cnblog10101dubbo-go-151-check>
<label for=m-zh-cnblog10101dubbo-go-151-check><a href=/zh-cn/blog/1/01/01/dubbo-go-1.5.1/ title="Dubbo Go 1.5.1" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog10101dubbo-go-151><span>dubbo-go 1.5.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog10101dubbo-go-hessian2-v170-li><input type=checkbox id=m-zh-cnblog10101dubbo-go-hessian2-v170-check>
<label for=m-zh-cnblog10101dubbo-go-hessian2-v170-check><a href=/zh-cn/blog/1/01/01/dubbo-go-hessian2-v1.7.0/ title="Dubbo Go Hessian2 v1.7.0" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog10101dubbo-go-hessian2-v170><span>dubbo-go-hessian2 v1.7.0</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20240118apache-dubbo-e4b88be4b880e4bba3e4ba91e58e9fe7949fe5beaee69c8de58aa1e68c91e68898e8b59be590afe58aa8e68aa5e5908de4ba94e5a4a7e8b59be9a29850e4b887e5a596e98791e6b1a0e7ad89e4bda0e69da5e68898-li><input type=checkbox id=m-zh-cnblog20240118apache-dubbo-e4b88be4b880e4bba3e4ba91e58e9fe7949fe5beaee69c8de58aa1e68c91e68898e8b59be590afe58aa8e68aa5e5908de4ba94e5a4a7e8b59be9a29850e4b887e5a596e98791e6b1a0e7ad89e4bda0e69da5e68898-check>
<label for=m-zh-cnblog20240118apache-dubbo-e4b88be4b880e4bba3e4ba91e58e9fe7949fe5beaee69c8de58aa1e68c91e68898e8b59be590afe58aa8e68aa5e5908de4ba94e5a4a7e8b59be9a29850e4b887e5a596e98791e6b1a0e7ad89e4bda0e69da5e68898-check><a href=/zh-cn/blog/2024/01/18/apache-dubbo-%E4%B8%8B%E4%B8%80%E4%BB%A3%E4%BA%91%E5%8E%9F%E7%94%9F%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%8C%91%E6%88%98%E8%B5%9B%E5%90%AF%E5%8A%A8%E6%8A%A5%E5%90%8D%E4%BA%94%E5%A4%A7%E8%B5%9B%E9%A2%9850%E4%B8%87%E5%A5%96%E9%87%91%E6%B1%A0%E7%AD%89%E4%BD%A0%E6%9D%A5%E6%88%98/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20240118apache-dubbo-e4b88be4b880e4bba3e4ba91e58e9fe7949fe5beaee69c8de58aa1e68c91e68898e8b59be590afe58aa8e68aa5e5908de4ba94e5a4a7e8b59be9a29850e4b887e5a596e98791e6b1a0e7ad89e4bda0e69da5e68898><span>Apache Dubbo 下一代云原生微服务挑战赛启动报名!五大赛题50万奖金池等你来战</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231023intellij-ideaefb88fapache-dubboideae5ae98e696b9e68f92e4bbb6e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20231023intellij-ideaefb88fapache-dubboideae5ae98e696b9e68f92e4bbb6e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20231023intellij-ideaefb88fapache-dubboideae5ae98e696b9e68f92e4bbb6e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2023/10/23/intellij-idea%EF%B8%8Fapache-dubboidea%E5%AE%98%E6%96%B9%E6%8F%92%E4%BB%B6%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231023intellij-ideaefb88fapache-dubboideae5ae98e696b9e68f92e4bbb6e6ada3e5bc8fe58f91e5b883><span>IntelliJ IDEA❤️Apache Dubbo,IDEA官方插件正式发布!</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007apache-dubbo-e4ba91e58e9fe7949fe58fafe8a782e6b58be680a7e79a84e68ea2e7b4a2e4b88ee5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20231007apache-dubbo-e4ba91e58e9fe7949fe58fafe8a782e6b58be680a7e79a84e68ea2e7b4a2e4b88ee5ae9ee8b7b5-check>
<label for=m-zh-cnblog20231007apache-dubbo-e4ba91e58e9fe7949fe58fafe8a782e6b58be680a7e79a84e68ea2e7b4a2e4b88ee5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/10/07/apache-dubbo-%E4%BA%91%E5%8E%9F%E7%94%9F%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7%E7%9A%84%E6%8E%A2%E7%B4%A2%E4%B8%8E%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007apache-dubbo-e4ba91e58e9fe7949fe58fafe8a782e6b58be680a7e79a84e68ea2e7b4a2e4b88ee5ae9ee8b7b5><span>Apache Dubbo 云原生可观测性的探索与实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007opensergo-dubbo-e5beaee69c8de58aa1e6b2bbe79086e69c80e4bdb3e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20231007opensergo-dubbo-e5beaee69c8de58aa1e6b2bbe79086e69c80e4bdb3e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20231007opensergo-dubbo-e5beaee69c8de58aa1e6b2bbe79086e69c80e4bdb3e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/10/07/opensergo-dubbo-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007opensergo-dubbo-e5beaee69c8de58aa1e6b2bbe79086e69c80e4bdb3e5ae9ee8b7b5><span>OpenSergo & Dubbo 微服务治理最佳实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007seata-e5beaee69c8de58aa1e69eb6e69e84e4b88be79a84e4b880e7ab99e5bc8fe58886e5b883e5bc8fe4ba8be58aa1e8a7a3e586b3e696b9e6a188-li><input type=checkbox id=m-zh-cnblog20231007seata-e5beaee69c8de58aa1e69eb6e69e84e4b88be79a84e4b880e7ab99e5bc8fe58886e5b883e5bc8fe4ba8be58aa1e8a7a3e586b3e696b9e6a188-check>
<label for=m-zh-cnblog20231007seata-e5beaee69c8de58aa1e69eb6e69e84e4b88be79a84e4b880e7ab99e5bc8fe58886e5b883e5bc8fe4ba8be58aa1e8a7a3e586b3e696b9e6a188-check><a href=/zh-cn/blog/2023/10/07/seata-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E4%B8%8B%E7%9A%84%E4%B8%80%E7%AB%99%E5%BC%8F%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007seata-e5beaee69c8de58aa1e69eb6e69e84e4b88be79a84e4b880e7ab99e5bc8fe58886e5b883e5bc8fe4ba8be58aa1e8a7a3e586b3e696b9e6a188><span>Seata 微服务架构下的一站式分布式事务解决方案</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007e59fbae4ba8e-triple-e5ae9ee78eb0-web-e7a7bbe58aa8e7abafe5908ee7abafe585a8e99da2e68993e9809a-li><input type=checkbox id=m-zh-cnblog20231007e59fbae4ba8e-triple-e5ae9ee78eb0-web-e7a7bbe58aa8e7abafe5908ee7abafe585a8e99da2e68993e9809a-check>
<label for=m-zh-cnblog20231007e59fbae4ba8e-triple-e5ae9ee78eb0-web-e7a7bbe58aa8e7abafe5908ee7abafe585a8e99da2e68993e9809a-check><a href=/zh-cn/blog/2023/10/07/%E5%9F%BA%E4%BA%8E-triple-%E5%AE%9E%E7%8E%B0-web-%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%90%8E%E7%AB%AF%E5%85%A8%E9%9D%A2%E6%89%93%E9%80%9A/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007e59fbae4ba8e-triple-e5ae9ee78eb0-web-e7a7bbe58aa8e7abafe5908ee7abafe585a8e99da2e68993e9809a><span>基于 Triple 实现 Web 移动端后端全面打通</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007e590afe58aa8e9809fe5baa6e68f90e58d8710e5808dapache-dubbo-e99d99e68081e58c96-graalvm-native-image-e6b7b1e5baa6e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog20231007e590afe58aa8e9809fe5baa6e68f90e58d8710e5808dapache-dubbo-e99d99e68081e58c96-graalvm-native-image-e6b7b1e5baa6e8a7a3e69e90-check>
<label for=m-zh-cnblog20231007e590afe58aa8e9809fe5baa6e68f90e58d8710e5808dapache-dubbo-e99d99e68081e58c96-graalvm-native-image-e6b7b1e5baa6e8a7a3e69e90-check><a href=/zh-cn/blog/2023/10/07/%E5%90%AF%E5%8A%A8%E9%80%9F%E5%BA%A6%E6%8F%90%E5%8D%8710%E5%80%8Dapache-dubbo-%E9%9D%99%E6%80%81%E5%8C%96-graalvm-native-image-%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007e590afe58aa8e9809fe5baa6e68f90e58d8710e5808dapache-dubbo-e99d99e68081e58c96-graalvm-native-image-e6b7b1e5baa6e8a7a3e69e90><span>启动速度提升10倍:Apache Dubbo 静态化 GraalVM Native Image 深度解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007e6898be68a8ae6898be69599e4bda0e983a8e7bdb2dubboe5ba94e794a8e588b0kubernetes-apache-dubbo-kubernetes-e69c80e4bdb3e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20231007e6898be68a8ae6898be69599e4bda0e983a8e7bdb2dubboe5ba94e794a8e588b0kubernetes-apache-dubbo-kubernetes-e69c80e4bdb3e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20231007e6898be68a8ae6898be69599e4bda0e983a8e7bdb2dubboe5ba94e794a8e588b0kubernetes-apache-dubbo-kubernetes-e69c80e4bdb3e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/10/07/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E9%83%A8%E7%BD%B2dubbo%E5%BA%94%E7%94%A8%E5%88%B0kubernetes-apache-dubbo-kubernetes-%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007e6898be68a8ae6898be69599e4bda0e983a8e7bdb2dubboe5ba94e794a8e588b0kubernetes-apache-dubbo-kubernetes-e69c80e4bdb3e5ae9ee8b7b5><span>手把手教你部署Dubbo应用到Kubernetes – Apache Dubbo Kubernetes 最佳实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007e694bfe98787e4ba91e59fbae4ba8edubboe79a84e6b7b7e59088e4ba91e695b0e68daee8b7a8e7bd91e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20231007e694bfe98787e4ba91e59fbae4ba8edubboe79a84e6b7b7e59088e4ba91e695b0e68daee8b7a8e7bd91e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20231007e694bfe98787e4ba91e59fbae4ba8edubboe79a84e6b7b7e59088e4ba91e695b0e68daee8b7a8e7bd91e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/10/07/%E6%94%BF%E9%87%87%E4%BA%91%E5%9F%BA%E4%BA%8Edubbo%E7%9A%84%E6%B7%B7%E5%90%88%E4%BA%91%E6%95%B0%E6%8D%AE%E8%B7%A8%E7%BD%91%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007e694bfe98787e4ba91e59fbae4ba8edubboe79a84e6b7b7e59088e4ba91e695b0e68daee8b7a8e7bd91e5ae9ee8b7b5><span>政采云基于Dubbo的混合云数据跨网实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230825coc-asia-2023-e5a4a7e4bc9ae7b2bee5bda9e59b9ee9a1be-li><input type=checkbox id=m-zh-cnblog20230825coc-asia-2023-e5a4a7e4bc9ae7b2bee5bda9e59b9ee9a1be-check>
<label for=m-zh-cnblog20230825coc-asia-2023-e5a4a7e4bc9ae7b2bee5bda9e59b9ee9a1be-check><a href=/zh-cn/blog/2023/08/25/coc-asia-2023-%E5%A4%A7%E4%BC%9A%E7%B2%BE%E5%BD%A9%E5%9B%9E%E9%A1%BE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230825coc-asia-2023-e5a4a7e4bc9ae7b2bee5bda9e59b9ee9a1be><span>CoC Asia 2023 大会精彩回顾</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230807dubbo-e5beaee69c8de58aa1e4b893e9a298e8aebae59d9b-8e69c8819e697a5e58c97e4baacapachecone5a4a7e4bc9ae4b88de8a781e4b88de695a3-li><input type=checkbox id=m-zh-cnblog20230807dubbo-e5beaee69c8de58aa1e4b893e9a298e8aebae59d9b-8e69c8819e697a5e58c97e4baacapachecone5a4a7e4bc9ae4b88de8a781e4b88de695a3-check>
<label for=m-zh-cnblog20230807dubbo-e5beaee69c8de58aa1e4b893e9a298e8aebae59d9b-8e69c8819e697a5e58c97e4baacapachecone5a4a7e4bc9ae4b88de8a781e4b88de695a3-check><a href=/zh-cn/blog/2023/08/07/dubbo-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E4%B8%93%E9%A2%98%E8%AE%BA%E5%9D%9B-8%E6%9C%8819%E6%97%A5%E5%8C%97%E4%BA%ACapachecon%E5%A4%A7%E4%BC%9A%E4%B8%8D%E8%A7%81%E4%B8%8D%E6%95%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230807dubbo-e5beaee69c8de58aa1e4b893e9a298e8aebae59d9b-8e69c8819e697a5e58c97e4baacapachecone5a4a7e4bc9ae4b88de8a781e4b88de695a3><span>Dubbo 微服务专题论坛 - 8月19日北京ApacheCon大会不见不散</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230705glcc-x-apache-dubboe7bc96e7a88be5a48fe4bba4e890a5e68aa5e5908de590afe58aa8-li><input type=checkbox id=m-zh-cnblog20230705glcc-x-apache-dubboe7bc96e7a88be5a48fe4bba4e890a5e68aa5e5908de590afe58aa8-check>
<label for=m-zh-cnblog20230705glcc-x-apache-dubboe7bc96e7a88be5a48fe4bba4e890a5e68aa5e5908de590afe58aa8-check><a href=/zh-cn/blog/2023/07/05/glcc-x-apache-dubbo%E7%BC%96%E7%A8%8B%E5%A4%8F%E4%BB%A4%E8%90%A5%E6%8A%A5%E5%90%8D%E5%90%AF%E5%8A%A8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230705glcc-x-apache-dubboe7bc96e7a88be5a48fe4bba4e890a5e68aa5e5908de590afe58aa8><span>GLCC x Apache Dubbo编程夏令营报名启动</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230515apache-dubbo-e5bc80e6ba90e4b98be5a48f-2023e8b4a1e78caee7a4bee58cbae8b5a2e58f96-12000-e5a596e98791-li><input type=checkbox id=m-zh-cnblog20230515apache-dubbo-e5bc80e6ba90e4b98be5a48f-2023e8b4a1e78caee7a4bee58cbae8b5a2e58f96-12000-e5a596e98791-check>
<label for=m-zh-cnblog20230515apache-dubbo-e5bc80e6ba90e4b98be5a48f-2023e8b4a1e78caee7a4bee58cbae8b5a2e58f96-12000-e5a596e98791-check><a href=/zh-cn/blog/2023/05/15/apache-dubbo-%E5%BC%80%E6%BA%90%E4%B9%8B%E5%A4%8F-2023%E8%B4%A1%E7%8C%AE%E7%A4%BE%E5%8C%BA%E8%B5%A2%E5%8F%96-12000-%E5%A5%96%E9%87%91/ title="Apache Dubbo 开源之夏 2023,贡献社区赢取 12000 奖金" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230515apache-dubbo-e5bc80e6ba90e4b98be5a48f-2023e8b4a1e78caee7a4bee58cbae8b5a2e58f96-12000-e5a596e98791><span>Apache Dubbo开源之夏2023,贡献社区赢取12000奖金</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230415e7b2bee8bf9be4ba91e58e9fe7949f-dubbo-32-e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20230415e7b2bee8bf9be4ba91e58e9fe7949f-dubbo-32-e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20230415e7b2bee8bf9be4ba91e58e9fe7949f-dubbo-32-e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2023/04/15/%E7%B2%BE%E8%BF%9B%E4%BA%91%E5%8E%9F%E7%94%9F-dubbo-3.2-%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230415e7b2bee8bf9be4ba91e58e9fe7949f-dubbo-32-e6ada3e5bc8fe58f91e5b883><span>精进云原生 - Dubbo 3.2 正式发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202302232022-e5b9b4e5baa6e680bbe7bb93e4b88e-2023-e696b0e5b9b4e8a784e58892-li><input type=checkbox id=m-zh-cnblog202302232022-e5b9b4e5baa6e680bbe7bb93e4b88e-2023-e696b0e5b9b4e8a784e58892-check>
<label for=m-zh-cnblog202302232022-e5b9b4e5baa6e680bbe7bb93e4b88e-2023-e696b0e5b9b4e8a784e58892-check><a href=/zh-cn/blog/2023/02/23/2022-%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93%E4%B8%8E-2023-%E6%96%B0%E5%B9%B4%E8%A7%84%E5%88%92/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202302232022-e5b9b4e5baa6e680bbe7bb93e4b88e-2023-e696b0e5b9b4e8a784e58892><span>2022 年度总结与 2023 新年规划</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230223e4b880e69687e5b8aee4bda0e5bfabe9809fe4ba86e8a7a3-dubbo-e6a0b8e5bf83e883bde58a9b-li><input type=checkbox id=m-zh-cnblog20230223e4b880e69687e5b8aee4bda0e5bfabe9809fe4ba86e8a7a3-dubbo-e6a0b8e5bf83e883bde58a9b-check>
<label for=m-zh-cnblog20230223e4b880e69687e5b8aee4bda0e5bfabe9809fe4ba86e8a7a3-dubbo-e6a0b8e5bf83e883bde58a9b-check><a href=/zh-cn/blog/2023/02/23/%E4%B8%80%E6%96%87%E5%B8%AE%E4%BD%A0%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3-dubbo-%E6%A0%B8%E5%BF%83%E8%83%BD%E5%8A%9B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230223e4b880e69687e5b8aee4bda0e5bfabe9809fe4ba86e8a7a3-dubbo-e6a0b8e5bf83e883bde58a9b><span>一文帮你快速了解 Dubbo 核心能力</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230202dubbo-e59ca8-proxyless-mesh-e6a8a1e5bc8fe4b88be79a84e68ea2e7b4a2e4b88ee694b9e8bf9b-li><input type=checkbox id=m-zh-cnblog20230202dubbo-e59ca8-proxyless-mesh-e6a8a1e5bc8fe4b88be79a84e68ea2e7b4a2e4b88ee694b9e8bf9b-check>
<label for=m-zh-cnblog20230202dubbo-e59ca8-proxyless-mesh-e6a8a1e5bc8fe4b88be79a84e68ea2e7b4a2e4b88ee694b9e8bf9b-check><a href=/zh-cn/blog/2023/02/02/dubbo-%E5%9C%A8-proxyless-mesh-%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%E6%8E%A2%E7%B4%A2%E4%B8%8E%E6%94%B9%E8%BF%9B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230202dubbo-e59ca8-proxyless-mesh-e6a8a1e5bc8fe4b88be79a84e68ea2e7b4a2e4b88ee694b9e8bf9b><span>Dubbo 在 Proxyless Mesh 模式下的探索与改进</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230130dubbo-315320-beta4-e6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20230130dubbo-315320-beta4-e6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20230130dubbo-315320-beta4-e6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2023/01/30/dubbo-3.1.53.2.0-beta.4-%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230130dubbo-315320-beta4-e6ada3e5bc8fe58f91e5b883><span>Dubbo 3.1.5、3.2.0-beta.4 正式发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210823dubbo-java-3021-e58f91e78988e585ace5918a-li><input type=checkbox id=m-zh-cnblog20210823dubbo-java-3021-e58f91e78988e585ace5918a-check>
<label for=m-zh-cnblog20210823dubbo-java-3021-e58f91e78988e585ace5918a-check><a href=/zh-cn/blog/2021/08/23/dubbo-java-3.0.2.1-%E5%8F%91%E7%89%88%E5%85%AC%E5%91%8A/ title="Dubbo Java 3.0.2.1 发版公告" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210823dubbo-java-3021-e58f91e78988e585ace5918a><span>dubbo-java 3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210702dubbo-java-301-e58f91e78988e585ace5918a-li><input type=checkbox id=m-zh-cnblog20210702dubbo-java-301-e58f91e78988e585ace5918a-check>
<label for=m-zh-cnblog20210702dubbo-java-301-e58f91e78988e585ace5918a-check><a href=/zh-cn/blog/2021/07/02/dubbo-java-3.0.1-%E5%8F%91%E7%89%88%E5%85%AC%E5%91%8A/ title="Dubbo Java 3.0.1 发版公告" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210702dubbo-java-301-e58f91e78988e585ace5918a><span>dubbo-ava 3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-go-150-li><input type=checkbox id=m-zh-cnblog20210114dubbo-go-150-check>
<label for=m-zh-cnblog20210114dubbo-go-150-check><a href=/zh-cn/blog/2021/01/14/dubbo-go-1.5.0/ title="Dubbo Go 1.5.0" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-go-150><span>dubbo-go 1.5.0</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-go-hessian2-v160-li><input type=checkbox id=m-zh-cnblog20210114dubbo-go-hessian2-v160-check>
<label for=m-zh-cnblog20210114dubbo-go-hessian2-v160-check><a href=/zh-cn/blog/2021/01/14/dubbo-go-hessian2-v1.6.0/ title="Dubbo Go Hessian2 v1.6.0" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-go-hessian2-v160><span>dubbo-go-hessian2 v1.6.0</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114e983bde5b7b2e7bb8fe58d81e5b281e79a84-apache-dubboe8bf98e883bde5868de4b998e9a38ee7a0b4e6b5aae59097-li><input type=checkbox id=m-zh-cnblog20210114e983bde5b7b2e7bb8fe58d81e5b281e79a84-apache-dubboe8bf98e883bde5868de4b998e9a38ee7a0b4e6b5aae59097-check>
<label for=m-zh-cnblog20210114e983bde5b7b2e7bb8fe58d81e5b281e79a84-apache-dubboe8bf98e883bde5868de4b998e9a38ee7a0b4e6b5aae59097-check><a href=/zh-cn/blog/2021/01/14/%E9%83%BD%E5%B7%B2%E7%BB%8F%E5%8D%81%E5%B2%81%E7%9A%84-apache-dubbo%E8%BF%98%E8%83%BD%E5%86%8D%E4%B9%98%E9%A3%8E%E7%A0%B4%E6%B5%AA%E5%90%97/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114e983bde5b7b2e7bb8fe58d81e5b281e79a84-apache-dubboe8bf98e883bde5868de4b998e9a38ee7a0b4e6b5aae59097><span>都已经十岁的 Apache Dubbo,还能再乘风破浪吗?</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210112dubbo-go-140-li><input type=checkbox id=m-zh-cnblog20210112dubbo-go-140-check>
<label for=m-zh-cnblog20210112dubbo-go-140-check><a href=/zh-cn/blog/2021/01/12/dubbo-go-1.4.0/ title="Dubbo Go 1.4.0" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210112dubbo-go-140><span>dubbo-go 1.4.0</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e59b9ee9a1bee4b88ee5b195e69c9b-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e59b9ee9a1bee4b88ee5b195e69c9b-check>
<label for=m-zh-cnblog20210111dubbo-go-e59b9ee9a1bee4b88ee5b195e69c9b-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E5%9B%9E%E9%A1%BE%E4%B8%8E%E5%B1%95%E6%9C%9B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e59b9ee9a1bee4b88ee5b195e69c9b><span>Dubbo Go 回顾与展望</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20200518dubbo-java-275-e58a9fe883bde8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog20200518dubbo-java-275-e58a9fe883bde8a7a3e69e90-check>
<label for=m-zh-cnblog20200518dubbo-java-275-e58a9fe883bde8a7a3e69e90-check><a href=/zh-cn/blog/2020/05/18/dubbo-java-2.7.5-%E5%8A%9F%E8%83%BD%E8%A7%A3%E6%9E%90/ title="Dubbo Java 2.7.5 功能解析" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20200518dubbo-java-275-e58a9fe883bde8a7a3e69e90><span>dubbo-java 2.7.5</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20200511e4bb8e-2019-e588b0-2020apache-dubbo-e5b9b4e5baa6e59b9ee9a1bee4b88ee680bbe7bb93-li><input type=checkbox id=m-zh-cnblog20200511e4bb8e-2019-e588b0-2020apache-dubbo-e5b9b4e5baa6e59b9ee9a1bee4b88ee680bbe7bb93-check>
<label for=m-zh-cnblog20200511e4bb8e-2019-e588b0-2020apache-dubbo-e5b9b4e5baa6e59b9ee9a1bee4b88ee680bbe7bb93-check><a href=/zh-cn/blog/2020/05/11/%E4%BB%8E-2019-%E5%88%B0-2020apache-dubbo-%E5%B9%B4%E5%BA%A6%E5%9B%9E%E9%A1%BE%E4%B8%8E%E6%80%BB%E7%BB%93/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20200511e4bb8e-2019-e588b0-2020apache-dubbo-e5b9b4e5baa6e59b9ee9a1bee4b88ee680bbe7bb93><span>从 2019 到 2020,Apache Dubbo 年度回顾与总结</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190126e98187e8a781dubbo-li><input type=checkbox id=m-zh-cnblog20190126e98187e8a781dubbo-check>
<label for=m-zh-cnblog20190126e98187e8a781dubbo-check><a href=/zh-cn/blog/2019/01/26/%E9%81%87%E8%A7%81dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190126e98187e8a781dubbo><span>遇见Dubbo</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20181210e7acace4ba94e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e69dade5b79ee68890e58a9fe4b8bee58a9e-li><input type=checkbox id=m-zh-cnblog20181210e7acace4ba94e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e69dade5b79ee68890e58a9fe4b8bee58a9e-check>
<label for=m-zh-cnblog20181210e7acace4ba94e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e69dade5b79ee68890e58a9fe4b8bee58a9e-check><a href=/zh-cn/blog/2018/12/10/%E7%AC%AC%E4%BA%94%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E6%9D%AD%E5%B7%9E%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20181210e7acace4ba94e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e69dade5b79ee68890e58a9fe4b8bee58a9e><span>第五届Dubbo开发者沙龙在杭州成功举办</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180902e5a682e4bd95e58786e5a487apache-release-li><input type=checkbox id=m-zh-cnblog20180902e5a682e4bd95e58786e5a487apache-release-check>
<label for=m-zh-cnblog20180902e5a682e4bd95e58786e5a487apache-release-check><a href=/zh-cn/blog/2018/09/02/%E5%A6%82%E4%BD%95%E5%87%86%E5%A4%87apache-release/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180902e5a682e4bd95e58786e5a487apache-release><span>如何准备Apache Release</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180826e7acace59b9be5b18adubboe5bc80e58f91e88085e6b299e9be99e4ba8e8e69c8826e697a5e59ca8e68890e983bde4b8bee8a18c-li><input type=checkbox id=m-zh-cnblog20180826e7acace59b9be5b18adubboe5bc80e58f91e88085e6b299e9be99e4ba8e8e69c8826e697a5e59ca8e68890e983bde4b8bee8a18c-check>
<label for=m-zh-cnblog20180826e7acace59b9be5b18adubboe5bc80e58f91e88085e6b299e9be99e4ba8e8e69c8826e697a5e59ca8e68890e983bde4b8bee8a18c-check><a href=/zh-cn/blog/2018/08/26/%E7%AC%AC%E5%9B%9B%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E4%BA%8E8%E6%9C%8826%E6%97%A5%E5%9C%A8%E6%88%90%E9%83%BD%E4%B8%BE%E8%A1%8C/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180826e7acace59b9be5b18adubboe5bc80e58f91e88085e6b299e9be99e4ba8e8e69c8826e697a5e59ca8e68890e983bde4b8bee8a18c><span>第四届Dubbo开发者沙龙于8月26日在成都举行</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180730e7acace4b889e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e6b7b1e59cb3e68890e58a9fe4b8bee58a9e-li><input type=checkbox id=m-zh-cnblog20180730e7acace4b889e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e6b7b1e59cb3e68890e58a9fe4b8bee58a9e-check>
<label for=m-zh-cnblog20180730e7acace4b889e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e6b7b1e59cb3e68890e58a9fe4b8bee58a9e-check><a href=/zh-cn/blog/2018/07/30/%E7%AC%AC%E4%B8%89%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E6%B7%B1%E5%9C%B3%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180730e7acace4b889e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e6b7b1e59cb3e68890e58a9fe4b8bee58a9e><span>第三届Dubbo开发者沙龙在深圳成功举办</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180623e7acace4ba8ce5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e4b88ae6b5b7e68890e58a9fe4b8bee58a9e-li><input type=checkbox id=m-zh-cnblog20180623e7acace4ba8ce5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e4b88ae6b5b7e68890e58a9fe4b8bee58a9e-check>
<label for=m-zh-cnblog20180623e7acace4ba8ce5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e4b88ae6b5b7e68890e58a9fe4b8bee58a9e-check><a href=/zh-cn/blog/2018/06/23/%E7%AC%AC%E4%BA%8C%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E4%B8%8A%E6%B5%B7%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180623e7acace4ba8ce5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e4b88ae6b5b7e68890e58a9fe4b8bee58a9e><span>第二届Dubbo开发者沙龙在上海成功举办</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180512e9a696e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e58c97e4baace68890e58a9fe4b8bee58a9e-li><input type=checkbox id=m-zh-cnblog20180512e9a696e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e58c97e4baace68890e58a9fe4b8bee58a9e-check>
<label for=m-zh-cnblog20180512e9a696e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e58c97e4baace68890e58a9fe4b8bee58a9e-check><a href=/zh-cn/blog/2018/05/12/%E9%A6%96%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E5%8C%97%E4%BA%AC%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180512e9a696e5b18adubboe5bc80e58f91e88085e6b299e9be99e59ca8e58c97e4baace68890e58a9fe4b8bee58a9e><span>首届Dubbo开发者沙龙在北京成功举办</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180502apachecon-na-e5a4a7e4bc9ae8aeaee7a88be585ace5b883-li><input type=checkbox id=m-zh-cnblog20180502apachecon-na-e5a4a7e4bc9ae8aeaee7a88be585ace5b883-check>
<label for=m-zh-cnblog20180502apachecon-na-e5a4a7e4bc9ae8aeaee7a88be585ace5b883-check><a href=/zh-cn/blog/2018/05/02/apachecon-na-%E5%A4%A7%E4%BC%9A%E8%AE%AE%E7%A8%8B%E5%85%AC%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180502apachecon-na-e5a4a7e4bc9ae8aeaee7a88be585ace5b883><span>ApacheCon NA 大会议程公布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180425e8b0b7e6ad8ce7bc96e7a88be4b98be5a48fe4bc9ae8aeaee4b88a2018e4b8aae9a1b9e79baee8a2abe5aea3e5b883-li><input type=checkbox id=m-zh-cnblog20180425e8b0b7e6ad8ce7bc96e7a88be4b98be5a48fe4bc9ae8aeaee4b88a2018e4b8aae9a1b9e79baee8a2abe5aea3e5b883-check>
<label for=m-zh-cnblog20180425e8b0b7e6ad8ce7bc96e7a88be4b98be5a48fe4bc9ae8aeaee4b88a2018e4b8aae9a1b9e79baee8a2abe5aea3e5b883-check><a href=/zh-cn/blog/2018/04/25/%E8%B0%B7%E6%AD%8C%E7%BC%96%E7%A8%8B%E4%B9%8B%E5%A4%8F%E4%BC%9A%E8%AE%AE%E4%B8%8A2018%E4%B8%AA%E9%A1%B9%E7%9B%AE%E8%A2%AB%E5%AE%A3%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180425e8b0b7e6ad8ce7bc96e7a88be4b98be5a48fe4bc9ae8aeaee4b88a2018e4b8aae9a1b9e79baee8a2abe5aea3e5b883><span>谷歌编程之夏会议上2018个项目被宣布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180423e59ca8dockerhube58f91e5b883dubbo-admine9959ce5838f-li><input type=checkbox id=m-zh-cnblog20180423e59ca8dockerhube58f91e5b883dubbo-admine9959ce5838f-check>
<label for=m-zh-cnblog20180423e59ca8dockerhube58f91e5b883dubbo-admine9959ce5838f-check><a href=/zh-cn/blog/2018/04/23/%E5%9C%A8dockerhub%E5%8F%91%E5%B8%83dubbo-admin%E9%95%9C%E5%83%8F/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180423e59ca8dockerhube58f91e5b883dubbo-admine9959ce5838f><span>在DockerHub发布Dubbo Admin镜像</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180422dubboe8b7afe7babfe59bbee59ca8qcon-beijing-2018e4b88ae585ace5b883-li><input type=checkbox id=m-zh-cnblog20180422dubboe8b7afe7babfe59bbee59ca8qcon-beijing-2018e4b88ae585ace5b883-check>
<label for=m-zh-cnblog20180422dubboe8b7afe7babfe59bbee59ca8qcon-beijing-2018e4b88ae585ace5b883-check><a href=/zh-cn/blog/2018/04/22/dubbo%E8%B7%AF%E7%BA%BF%E5%9B%BE%E5%9C%A8qcon-beijing-2018%E4%B8%8A%E5%85%AC%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180422dubboe8b7afe7babfe59bbee59ca8qcon-beijing-2018e4b88ae585ace5b883><span>Dubbo路线图在QCon Beijing 2018上公布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180311e5a682e4bd95e58f82e4b88ee8b4a1e78caedubboe7a4bee58cba-li><input type=checkbox id=m-zh-cnblog20180311e5a682e4bd95e58f82e4b88ee8b4a1e78caedubboe7a4bee58cba-check>
<label for=m-zh-cnblog20180311e5a682e4bd95e58f82e4b88ee8b4a1e78caedubboe7a4bee58cba-check><a href=/zh-cn/blog/2018/03/11/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E%E8%B4%A1%E7%8C%AEdubbo%E7%A4%BE%E5%8C%BA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180311e5a682e4bd95e58f82e4b88ee8b4a1e78caedubboe7a4bee58cba><span>如何参与贡献Dubbo社区</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogusers-li><input type=checkbox id=m-zh-cnblogusers-check>
<label for=m-zh-cnblogusers-check><a href=/zh-cn/blog/users/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogusers><span>用户案例</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230116e998bfe9878ce5b7b4e5b7b4e58d87e7baa7-dubbo3-e585a8e99da2e58f96e4bba3-hsf2-li><input type=checkbox id=m-zh-cnblog20230116e998bfe9878ce5b7b4e5b7b4e58d87e7baa7-dubbo3-e585a8e99da2e58f96e4bba3-hsf2-check>
<label for=m-zh-cnblog20230116e998bfe9878ce5b7b4e5b7b4e58d87e7baa7-dubbo3-e585a8e99da2e58f96e4bba3-hsf2-check><a href=/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/ title="阿里巴巴升级 Dubbo3 全面取代 HSF2" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230116e998bfe9878ce5b7b4e5b7b4e58d87e7baa7-dubbo3-e585a8e99da2e58f96e4bba3-hsf2><span>阿里巴巴</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e5b7a5e59586e993b6e8a18c-dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20230115e5b7a5e59586e993b6e8a18c-dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20230115e5b7a5e59586e993b6e8a18c-dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/01/15/%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C-dubbo3-%E5%BA%94%E7%94%A8%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E5%AE%9E%E8%B7%B5/ title="工商银行 Dubbo3 应用级服务发现实践" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e5b7a5e59586e993b6e8a18c-dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e5ae9ee8b7b5><span>工商银行</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e9a5bfe4ba86e4b988e585a8e7ab99e68890e58a9fe58d87e7baa7-dubbo3-li><input type=checkbox id=m-zh-cnblog20230115e9a5bfe4ba86e4b988e585a8e7ab99e68890e58a9fe58d87e7baa7-dubbo3-check>
<label for=m-zh-cnblog20230115e9a5bfe4ba86e4b988e585a8e7ab99e68890e58a9fe58d87e7baa7-dubbo3-check><a href=/zh-cn/blog/2023/01/15/%E9%A5%BF%E4%BA%86%E4%B9%88%E5%85%A8%E7%AB%99%E6%88%90%E5%8A%9F%E5%8D%87%E7%BA%A7-dubbo3/ title="饿了么全站成功升级 Dubbo3 " class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e9a5bfe4ba86e4b988e585a8e7ab99e68890e58a9fe58d87e7baa7-dubbo3><span>饿了么</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e5ba97e5b08fe89c9ce58d87e7baa7-triple-e58d8fe8aeae-li><input type=checkbox id=m-zh-cnblog20230115e5ba97e5b08fe89c9ce58d87e7baa7-triple-e58d8fe8aeae-check>
<label for=m-zh-cnblog20230115e5ba97e5b08fe89c9ce58d87e7baa7-triple-e58d8fe8aeae-check><a href=/zh-cn/blog/2023/01/15/%E5%BA%97%E5%B0%8F%E8%9C%9C%E5%8D%87%E7%BA%A7-triple-%E5%8D%8F%E8%AE%AE/ title="店小蜜升级 Triple 协议" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e5ba97e5b08fe89c9ce58d87e7baa7-triple-e58d8fe8aeae><span>达摩院云小蜜</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e7939ce5ad90e4ba8ce6898be8bda6-dubbo-e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20230115e7939ce5ad90e4ba8ce6898be8bda6-dubbo-e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20230115e7939ce5ad90e4ba8ce6898be8bda6-dubbo-e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/01/15/%E7%93%9C%E5%AD%90%E4%BA%8C%E6%89%8B%E8%BD%A6-dubbo-%E5%AE%9E%E8%B7%B5/ title="瓜子二手车 Dubbo 实践" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e7939ce5ad90e4ba8ce6898be8bda6-dubbo-e5ae9ee8b7b5><span>瓜子二手车</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e5b08fe7b1b3e4b88e-dubbo-e7a4bee58cbae79a84e59088e4bd9c-li><input type=checkbox id=m-zh-cnblog20230115e5b08fe7b1b3e4b88e-dubbo-e7a4bee58cbae79a84e59088e4bd9c-check>
<label for=m-zh-cnblog20230115e5b08fe7b1b3e4b88e-dubbo-e7a4bee58cbae79a84e59088e4bd9c-check><a href=/zh-cn/blog/2023/01/15/%E5%B0%8F%E7%B1%B3%E4%B8%8E-dubbo-%E7%A4%BE%E5%8C%BA%E7%9A%84%E5%90%88%E4%BD%9C/ title="小米与 Dubbo 社区的合作" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e5b08fe7b1b3e4b88e-dubbo-e7a4bee58cbae79a84e59088e4bd9c><span>小米</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e4b8ade4bca6e7bd91e7bb9c-dubbo3-e58d87e7baa7e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20230115e4b8ade4bca6e7bd91e7bb9c-dubbo3-e58d87e7baa7e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20230115e4b8ade4bca6e7bd91e7bb9c-dubbo3-e58d87e7baa7e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/01/15/%E4%B8%AD%E4%BC%A6%E7%BD%91%E7%BB%9C-dubbo3-%E5%8D%87%E7%BA%A7%E5%AE%9E%E8%B7%B5/ title="中伦网络 Dubbo3 升级实践" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e4b8ade4bca6e7bd91e7bb9c-dubbo3-e58d87e7baa7e5ae9ee8b7b5><span>中伦网络</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230115e5b9b3e5ae89e581a5e5bab7e79a84-dubbo3-e8bf81e7a7bbe58e86e7a88b-li><input type=checkbox id=m-zh-cnblog20230115e5b9b3e5ae89e581a5e5bab7e79a84-dubbo3-e8bf81e7a7bbe58e86e7a88b-check>
<label for=m-zh-cnblog20230115e5b9b3e5ae89e581a5e5bab7e79a84-dubbo3-e8bf81e7a7bbe58e86e7a88b-check><a href=/zh-cn/blog/2023/01/15/%E5%B9%B3%E5%AE%89%E5%81%A5%E5%BA%B7%E7%9A%84-dubbo3-%E8%BF%81%E7%A7%BB%E5%8E%86%E7%A8%8B/ title="平安健康的 Dubbo3 迁移历程" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230115e5b9b3e5ae89e581a5e5bab7e79a84-dubbo3-e8bf81e7a7bbe58e86e7a88b><span>平安健康</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230322e585a8e59bbde9a696e4b8aae694bfe4bc81e98787e8b4ade4ba91e5b9b3e58fb0e694bfe98787e4ba91e79a84e6b7b7e59088e4ba91e8b7a8e7bd91e696b9e6a188e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20230322e585a8e59bbde9a696e4b8aae694bfe4bc81e98787e8b4ade4ba91e5b9b3e58fb0e694bfe98787e4ba91e79a84e6b7b7e59088e4ba91e8b7a8e7bd91e696b9e6a188e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20230322e585a8e59bbde9a696e4b8aae694bfe4bc81e98787e8b4ade4ba91e5b9b3e58fb0e694bfe98787e4ba91e79a84e6b7b7e59088e4ba91e8b7a8e7bd91e696b9e6a188e5ae9ee8b7b5-check><a href=/zh-cn/blog/2023/03/22/%E5%85%A8%E5%9B%BD%E9%A6%96%E4%B8%AA%E6%94%BF%E4%BC%81%E9%87%87%E8%B4%AD%E4%BA%91%E5%B9%B3%E5%8F%B0%E6%94%BF%E9%87%87%E4%BA%91%E7%9A%84%E6%B7%B7%E5%90%88%E4%BA%91%E8%B7%A8%E7%BD%91%E6%96%B9%E6%A1%88%E5%AE%9E%E8%B7%B5/ title=全国首个政企采购云平台:政采云的混合云跨网方案实践 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230322e585a8e59bbde9a696e4b8aae694bfe4bc81e98787e8b4ade4ba91e5b9b3e58fb0e694bfe98787e4ba91e79a84e6b7b7e59088e4ba91e8b7a8e7bd91e696b9e6a188e5ae9ee8b7b5><span>政采云</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogintegration-li><input type=checkbox id=m-zh-cnblogintegration-check>
<label for=m-zh-cnblogintegration-check><a href=/zh-cn/blog/integration/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogintegration><span>生态集成</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007e5beaee69c8de58aa1e69c80e4bdb3e5ae9ee8b7b5e99bb6e694b9e980a0e5ae9ee78eb0-spring-cloud-apache-dubbo-e4ba92e9809a-li><input type=checkbox id=m-zh-cnblog20231007e5beaee69c8de58aa1e69c80e4bdb3e5ae9ee8b7b5e99bb6e694b9e980a0e5ae9ee78eb0-spring-cloud-apache-dubbo-e4ba92e9809a-check>
<label for=m-zh-cnblog20231007e5beaee69c8de58aa1e69c80e4bdb3e5ae9ee8b7b5e99bb6e694b9e980a0e5ae9ee78eb0-spring-cloud-apache-dubbo-e4ba92e9809a-check><a href=/zh-cn/blog/2023/10/07/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E9%9B%B6%E6%94%B9%E9%80%A0%E5%AE%9E%E7%8E%B0-spring-cloud-apache-dubbo-%E4%BA%92%E9%80%9A/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007e5beaee69c8de58aa1e69c80e4bdb3e5ae9ee8b7b5e99bb6e694b9e980a0e5ae9ee78eb0-spring-cloud-apache-dubbo-e4ba92e9809a><span>微服务最佳实践,零改造实现 Spring Cloud & Apache Dubbo 互通</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230628e8b5b0e59091-native-e58c96springdubbo-aot-e68a80e69cafe7a4bae4be8be4b88ee58e9fe79086e8aeb2e8a7a3-li><input type=checkbox id=m-zh-cnblog20230628e8b5b0e59091-native-e58c96springdubbo-aot-e68a80e69cafe7a4bae4be8be4b88ee58e9fe79086e8aeb2e8a7a3-check>
<label for=m-zh-cnblog20230628e8b5b0e59091-native-e58c96springdubbo-aot-e68a80e69cafe7a4bae4be8be4b88ee58e9fe79086e8aeb2e8a7a3-check><a href=/zh-cn/blog/2023/06/28/%E8%B5%B0%E5%90%91-native-%E5%8C%96springdubbo-aot-%E6%8A%80%E6%9C%AF%E7%A4%BA%E4%BE%8B%E4%B8%8E%E5%8E%9F%E7%90%86%E8%AE%B2%E8%A7%A3/ title="走向 Native 化:Spring&amp;Dubbo AOT 技术示例与原理讲解" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230628e8b5b0e59091-native-e58c96springdubbo-aot-e68a80e69cafe7a4bae4be8be4b88ee58e9fe79086e8aeb2e8a7a3><span>走向 Native 化:Dubbo AOT 正式发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230401e5a682e4bd95e9809ae8bf87-higress-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1-li><input type=checkbox id=m-zh-cnblog20230401e5a682e4bd95e9809ae8bf87-higress-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1-check>
<label for=m-zh-cnblog20230401e5a682e4bd95e9809ae8bf87-higress-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1-check><a href=/zh-cn/blog/2023/04/01/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87-higress-%E7%BD%91%E5%85%B3%E4%BB%A3%E7%90%86-dubbo-%E6%9C%8D%E5%8A%A1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230401e5a682e4bd95e9809ae8bf87-higress-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1><span>如何通过 Higress 网关代理 Dubbo 服务</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220504e5a682e4bd95e9809ae8bf87-apache-shenyu-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1-li><input type=checkbox id=m-zh-cnblog20220504e5a682e4bd95e9809ae8bf87-apache-shenyu-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1-check>
<label for=m-zh-cnblog20220504e5a682e4bd95e9809ae8bf87-apache-shenyu-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1-check><a href=/zh-cn/blog/2022/05/04/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87-apache-shenyu-%E7%BD%91%E5%85%B3%E4%BB%A3%E7%90%86-dubbo-%E6%9C%8D%E5%8A%A1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220504e5a682e4bd95e9809ae8bf87-apache-shenyu-e7bd91e585b3e4bba3e79086-dubbo-e69c8de58aa1><span>如何通过 Apache ShenYu 网关代理 Dubbo 服务</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220118e4bb8ee58e9fe79086e588b0e6938de4bd9ce8aea9e4bda0e59ca8-apache-apisix-e4b8ade4bba3e79086-dubbo-e69c8de58aa1e69bb4e4bebfe68db7-li><input type=checkbox id=m-zh-cnblog20220118e4bb8ee58e9fe79086e588b0e6938de4bd9ce8aea9e4bda0e59ca8-apache-apisix-e4b8ade4bba3e79086-dubbo-e69c8de58aa1e69bb4e4bebfe68db7-check>
<label for=m-zh-cnblog20220118e4bb8ee58e9fe79086e588b0e6938de4bd9ce8aea9e4bda0e59ca8-apache-apisix-e4b8ade4bba3e79086-dubbo-e69c8de58aa1e69bb4e4bebfe68db7-check><a href=/zh-cn/blog/2022/01/18/%E4%BB%8E%E5%8E%9F%E7%90%86%E5%88%B0%E6%93%8D%E4%BD%9C%E8%AE%A9%E4%BD%A0%E5%9C%A8-apache-apisix-%E4%B8%AD%E4%BB%A3%E7%90%86-dubbo-%E6%9C%8D%E5%8A%A1%E6%9B%B4%E4%BE%BF%E6%8D%B7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220118e4bb8ee58e9fe79086e588b0e6938de4bd9ce8aea9e4bda0e59ca8-apache-apisix-e4b8ade4bba3e79086-dubbo-e69c8de58aa1e69bb4e4bebfe68db7><span>从原理到操作,让你在 Apache APISIX 中代理 Dubbo 服务更便捷</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190811e4bdbfe794a8apache-skywalking-incubator-e5819ae58886e5b883e5bc8fe8b79fe8b8aa-li><input type=checkbox id=m-zh-cnblog20190811e4bdbfe794a8apache-skywalking-incubator-e5819ae58886e5b883e5bc8fe8b79fe8b8aa-check>
<label for=m-zh-cnblog20190811e4bdbfe794a8apache-skywalking-incubator-e5819ae58886e5b883e5bc8fe8b79fe8b8aa-check><a href=/zh-cn/blog/2019/08/11/%E4%BD%BF%E7%94%A8apache-skywalking-incubator-%E5%81%9A%E5%88%86%E5%B8%83%E5%BC%8F%E8%B7%9F%E8%B8%AA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190811e4bdbfe794a8apache-skywalking-incubator-e5819ae58886e5b883e5bc8fe8b79fe8b8aa><span>使用Apache Skywalking (Incubator) 做分布式跟踪</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190202e5bd93dubboe98187e4b88aarthase68e92e69fa5e997aee9a298e79a84e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20190202e5bd93dubboe98187e4b88aarthase68e92e69fa5e997aee9a298e79a84e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20190202e5bd93dubboe98187e4b88aarthase68e92e69fa5e997aee9a298e79a84e5ae9ee8b7b5-check><a href=/zh-cn/blog/2019/02/02/%E5%BD%93dubbo%E9%81%87%E4%B8%8Aarthas%E6%8E%92%E6%9F%A5%E9%97%AE%E9%A2%98%E7%9A%84%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190202e5bd93dubboe98187e4b88aarthase68e92e69fa5e997aee9a298e79a84e5ae9ee8b7b5><span>当Dubbo遇上Arthas:排查问题的实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190117e5a682e4bd95e4bdbfe794a8seatae4bf9de8af81dubboe5beaee69c8de58aa1e997b4e79a84e4b880e887b4e680a7-li><input type=checkbox id=m-zh-cnblog20190117e5a682e4bd95e4bdbfe794a8seatae4bf9de8af81dubboe5beaee69c8de58aa1e997b4e79a84e4b880e887b4e680a7-check>
<label for=m-zh-cnblog20190117e5a682e4bd95e4bdbfe794a8seatae4bf9de8af81dubboe5beaee69c8de58aa1e997b4e79a84e4b880e887b4e680a7-check><a href=/zh-cn/blog/2019/01/17/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8seata%E4%BF%9D%E8%AF%81dubbo%E5%BE%AE%E6%9C%8D%E5%8A%A1%E9%97%B4%E7%9A%84%E4%B8%80%E8%87%B4%E6%80%A7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190117e5a682e4bd95e4bdbfe794a8seatae4bf9de8af81dubboe5beaee69c8de58aa1e997b4e79a84e4b880e887b4e680a7><span>如何使用Seata保证Dubbo微服务间的一致性</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190107e696b0e78988-dubbo-admin-e4bb8be7bb8d-li><input type=checkbox id=m-zh-cnblog20190107e696b0e78988-dubbo-admin-e4bb8be7bb8d-check>
<label for=m-zh-cnblog20190107e696b0e78988-dubbo-admin-e4bb8be7bb8d-check><a href=/zh-cn/blog/2019/01/07/%E6%96%B0%E7%89%88-dubbo-admin-%E4%BB%8B%E7%BB%8D/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190107e696b0e78988-dubbo-admin-e4bb8be7bb8d><span>新版 Dubbo Admin 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190105dubbo-e59ca8e7939ce5ad90e4ba8ce6898be8bda6e79a84e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20190105dubbo-e59ca8e7939ce5ad90e4ba8ce6898be8bda6e79a84e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20190105dubbo-e59ca8e7939ce5ad90e4ba8ce6898be8bda6e79a84e5ae9ee8b7b5-check><a href=/zh-cn/blog/2019/01/05/dubbo-%E5%9C%A8%E7%93%9C%E5%AD%90%E4%BA%8C%E6%89%8B%E8%BD%A6%E7%9A%84%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190105dubbo-e59ca8e7939ce5ad90e4ba8ce6898be8bda6e79a84e5ae9ee8b7b5><span>Dubbo 在瓜子二手车的实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20181107dubbo-e89e8de59088-nacos-e68890e4b8bae6b3a8e5868ce4b8ade5bf83-li><input type=checkbox id=m-zh-cnblog20181107dubbo-e89e8de59088-nacos-e68890e4b8bae6b3a8e5868ce4b8ade5bf83-check>
<label for=m-zh-cnblog20181107dubbo-e89e8de59088-nacos-e68890e4b8bae6b3a8e5868ce4b8ade5bf83-check><a href=/zh-cn/blog/2018/11/07/dubbo-%E8%9E%8D%E5%90%88-nacos-%E6%88%90%E4%B8%BA%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20181107dubbo-e89e8de59088-nacos-e68890e4b8bae6b3a8e5868ce4b8ade5bf83><span>Dubbo 融合 Nacos 成为注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180822springe5ba94e794a8e5bfabe9809fe99b86e68890dubbo--hystrix-li><input type=checkbox id=m-zh-cnblog20180822springe5ba94e794a8e5bfabe9809fe99b86e68890dubbo--hystrix-check>
<label for=m-zh-cnblog20180822springe5ba94e794a8e5bfabe9809fe99b86e68890dubbo--hystrix-check><a href=/zh-cn/blog/2018/08/22/spring%E5%BA%94%E7%94%A8%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90dubbo--hystrix/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180822springe5ba94e794a8e5bfabe9809fe99b86e68890dubbo--hystrix><span>Spring应用快速集成Dubbo + Hystrix</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814e4bb8ee8b7a8e8afade8a880e8b083e794a8e588b0dubbo2js-li><input type=checkbox id=m-zh-cnblog20180814e4bb8ee8b7a8e8afade8a880e8b083e794a8e588b0dubbo2js-check>
<label for=m-zh-cnblog20180814e4bb8ee8b7a8e8afade8a880e8b083e794a8e588b0dubbo2js-check><a href=/zh-cn/blog/2018/08/14/%E4%BB%8E%E8%B7%A8%E8%AF%AD%E8%A8%80%E8%B0%83%E7%94%A8%E5%88%B0dubbo2.js/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814e4bb8ee8b7a8e8afade8a880e8b083e794a8e588b0dubbo2js><span>从跨语言调用到dubbo2.js</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180807e59ca8-dubbo-e5ba94e794a8e4b8ade4bdbfe794a8-zookeeper-li><input type=checkbox id=m-zh-cnblog20180807e59ca8-dubbo-e5ba94e794a8e4b8ade4bdbfe794a8-zookeeper-check>
<label for=m-zh-cnblog20180807e59ca8-dubbo-e5ba94e794a8e4b8ade4bdbfe794a8-zookeeper-check><a href=/zh-cn/blog/2018/08/07/%E5%9C%A8-dubbo-%E5%BA%94%E7%94%A8%E4%B8%AD%E4%BD%BF%E7%94%A8-zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180807e59ca8-dubbo-e5ba94e794a8e4b8ade4bdbfe794a8-zookeeper><span>在 Dubbo 应用中使用 Zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180727sentinel-e4b8ba-dubbo-e69c8de58aa1e4bf9de9a9bee68aa4e888aa-li><input type=checkbox id=m-zh-cnblog20180727sentinel-e4b8ba-dubbo-e69c8de58aa1e4bf9de9a9bee68aa4e888aa-check>
<label for=m-zh-cnblog20180727sentinel-e4b8ba-dubbo-e69c8de58aa1e4bf9de9a9bee68aa4e888aa-check><a href=/zh-cn/blog/2018/07/27/sentinel-%E4%B8%BA-dubbo-%E6%9C%8D%E5%8A%A1%E4%BF%9D%E9%A9%BE%E6%8A%A4%E8%88%AA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180727sentinel-e4b8ba-dubbo-e69c8de58aa1e4bf9de9a9bee68aa4e888aa><span>Sentinel 为 Dubbo 服务保驾护航</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180712e4bdbfe794a8pinpointe5819ae58886e5b883e5bc8fe8b79fe8b8aa-li><input type=checkbox id=m-zh-cnblog20180712e4bdbfe794a8pinpointe5819ae58886e5b883e5bc8fe8b79fe8b8aa-check>
<label for=m-zh-cnblog20180712e4bdbfe794a8pinpointe5819ae58886e5b883e5bc8fe8b79fe8b8aa-check><a href=/zh-cn/blog/2018/07/12/%E4%BD%BF%E7%94%A8pinpoint%E5%81%9A%E5%88%86%E5%B8%83%E5%BC%8F%E8%B7%9F%E8%B8%AA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180712e4bdbfe794a8pinpointe5819ae58886e5b883e5bc8fe8b79fe8b8aa><span>使用Pinpoint做分布式跟踪</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180617e59ca8-dubbo-e4b8ade4bdbfe794a8-zipkin-li><input type=checkbox id=m-zh-cnblog20180617e59ca8-dubbo-e4b8ade4bdbfe794a8-zipkin-check>
<label for=m-zh-cnblog20180617e59ca8-dubbo-e4b8ade4bdbfe794a8-zipkin-check><a href=/zh-cn/blog/2018/06/17/%E5%9C%A8-dubbo-%E4%B8%AD%E4%BD%BF%E7%94%A8-zipkin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180617e59ca8-dubbo-e4b8ade4bdbfe794a8-zipkin><span>在 Dubbo 中使用 Zipkin</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogproposals-li><input type=checkbox id=m-zh-cnblogproposals-check>
<label for=m-zh-cnblogproposals-check><a href=/zh-cn/blog/proposals/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogproposals><span>技术方案</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230526google-paper-e99da2e59091e4ba91e697b6e4bba3e79a84e5ba94e794a8e5bc80e58f91e696b0e6a8a1e5bc8f-li><input type=checkbox id=m-zh-cnblog20230526google-paper-e99da2e59091e4ba91e697b6e4bba3e79a84e5ba94e794a8e5bc80e58f91e696b0e6a8a1e5bc8f-check>
<label for=m-zh-cnblog20230526google-paper-e99da2e59091e4ba91e697b6e4bba3e79a84e5ba94e794a8e5bc80e58f91e696b0e6a8a1e5bc8f-check><a href=/zh-cn/blog/2023/05/26/google-paper-%E9%9D%A2%E5%90%91%E4%BA%91%E6%97%B6%E4%BB%A3%E7%9A%84%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E6%96%B0%E6%A8%A1%E5%BC%8F/ title="[Google Paper] 面向云时代的应用开发新模式" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230526google-paper-e99da2e59091e4ba91e697b6e4bba3e79a84e5ba94e794a8e5bc80e58f91e696b0e6a8a1e5bc8f><span>面向云时代的应用开发新模式</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230220e68c87e6a087e59f8be782b9-li><input type=checkbox id=m-zh-cnblog20230220e68c87e6a087e59f8be782b9-check>
<label for=m-zh-cnblog20230220e68c87e6a087e59f8be782b9-check><a href=/zh-cn/blog/2023/02/20/%E6%8C%87%E6%A0%87%E5%9F%8B%E7%82%B9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230220e68c87e6a087e59f8be782b9><span>指标埋点</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230130dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e8aebee8aea1-li><input type=checkbox id=m-zh-cnblog20230130dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e8aebee8aea1-check>
<label for=m-zh-cnblog20230130dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e8aebee8aea1-check><a href=/zh-cn/blog/2023/01/30/dubbo3-%E5%BA%94%E7%94%A8%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E8%AE%BE%E8%AE%A1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230130dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e8aebee8aea1><span>Dubbo3 应用级服务发现设计</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230130e590afe58f91e5bc8fe6b581e68ea7e588b6-li><input type=checkbox id=m-zh-cnblog20230130e590afe58f91e5bc8fe6b581e68ea7e588b6-check>
<label for=m-zh-cnblog20230130e590afe58f91e5bc8fe6b581e68ea7e588b6-check><a href=/zh-cn/blog/2023/01/30/%E5%90%AF%E5%8F%91%E5%BC%8F%E6%B5%81%E6%8E%A7%E5%88%B6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230130e590afe58f91e5bc8fe6b581e68ea7e588b6><span>启发式流控制</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogjava-li><input type=checkbox id=m-zh-cnblogjava-check>
<label for=m-zh-cnblogjava-check><a href=/zh-cn/blog/java/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogjava><span>Java</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogjavademos-li><input type=checkbox id=m-zh-cnblogjavademos-check>
<label for=m-zh-cnblogjavademos-check><a href=/zh-cn/blog/java/demos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogjavademos><span>功能演示</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230105dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-e5a49ae58d8fe8aeaee5a49ae6b3a8e5868ce4b8ade5bf83-li><input type=checkbox id=m-zh-cnblog20230105dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-e5a49ae58d8fe8aeaee5a49ae6b3a8e5868ce4b8ade5bf83-check>
<label for=m-zh-cnblog20230105dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-e5a49ae58d8fe8aeaee5a49ae6b3a8e5868ce4b8ade5bf83-check><a href=/zh-cn/blog/2023/01/05/dubbo-%E8%BF%9E%E6%8E%A5%E5%BC%82%E6%9E%84%E5%BE%AE%E6%9C%8D%E5%8A%A1%E4%BD%93%E7%B3%BB-%E5%A4%9A%E5%8D%8F%E8%AE%AE%E5%A4%9A%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230105dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-e5a49ae58d8fe8aeaee5a49ae6b3a8e5868ce4b8ade5bf83><span>Dubbo 连接异构微服务体系 - 多协议&多注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220905proxyless-meshe59ca8dubboe4b8ade79a84e5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20220905proxyless-meshe59ca8dubboe4b8ade79a84e5ae9ee8b7b5-check>
<label for=m-zh-cnblog20220905proxyless-meshe59ca8dubboe4b8ade79a84e5ae9ee8b7b5-check><a href=/zh-cn/blog/2022/09/05/proxyless-mesh%E5%9C%A8dubbo%E4%B8%AD%E7%9A%84%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220905proxyless-meshe59ca8dubboe4b8ade79a84e5ae9ee8b7b5><span>Proxyless Mesh在Dubbo中的实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220726rest-e58d8fe8aeae-li><input type=checkbox id=m-zh-cnblog20220726rest-e58d8fe8aeae-check>
<label for=m-zh-cnblog20220726rest-e58d8fe8aeae-check><a href=/zh-cn/blog/2022/07/26/rest-%E5%8D%8F%E8%AE%AE/ title="Rest 协议" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220726rest-e58d8fe8aeae><span>2.7 版本 Rest 协议实现重构设想</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20201222dubbo-api-docs--apache-dubboe69687e6a1a3e5b195e7a4bae6b58be8af95e5b7a5e585b7-li><input type=checkbox id=m-zh-cnblog20201222dubbo-api-docs--apache-dubboe69687e6a1a3e5b195e7a4bae6b58be8af95e5b7a5e585b7-check>
<label for=m-zh-cnblog20201222dubbo-api-docs--apache-dubboe69687e6a1a3e5b195e7a4bae6b58be8af95e5b7a5e585b7-check><a href=/zh-cn/blog/2020/12/22/dubbo-api-docs--apache-dubbo%E6%96%87%E6%A1%A3%E5%B1%95%E7%A4%BA%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20201222dubbo-api-docs--apache-dubboe69687e6a1a3e5b195e7a4bae6b58be8af95e5b7a5e585b7><span>Dubbo-Api-Docs -- Apache Dubbo文档展示&测试工具</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191202dubboe6b58be8af95e9aa8ce8af81-li><input type=checkbox id=m-zh-cnblog20191202dubboe6b58be8af95e9aa8ce8af81-check>
<label for=m-zh-cnblog20191202dubboe6b58be8af95e9aa8ce8af81-check><a href=/zh-cn/blog/2019/12/02/dubbo%E6%B5%8B%E8%AF%95%E9%AA%8C%E8%AF%81/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191202dubboe6b58be8af95e9aa8ce8af81><span>Dubbo测试验证</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191130dubbo-e59ca8-service-mesh-e4b88be79a84e6809de88083e5928ce696b9e6a188-li><input type=checkbox id=m-zh-cnblog20191130dubbo-e59ca8-service-mesh-e4b88be79a84e6809de88083e5928ce696b9e6a188-check>
<label for=m-zh-cnblog20191130dubbo-e59ca8-service-mesh-e4b88be79a84e6809de88083e5928ce696b9e6a188-check><a href=/zh-cn/blog/2019/11/30/dubbo-%E5%9C%A8-service-mesh-%E4%B8%8B%E7%9A%84%E6%80%9D%E8%80%83%E5%92%8C%E6%96%B9%E6%A1%88/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191130dubbo-e59ca8-service-mesh-e4b88be79a84e6809de88083e5928ce696b9e6a188><span>Dubbo 在 Service Mesh 下的思考和方案</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191102dubboe69c8de58aa1e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20191102dubboe69c8de58aa1e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5-check>
<label for=m-zh-cnblog20191102dubboe69c8de58aa1e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5-check><a href=/zh-cn/blog/2019/11/02/dubbo%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%BC%82%E6%AD%A5%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%AE%9E%E7%8E%B0%E8%83%8C%E6%99%AF%E5%92%8C%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191102dubboe69c8de58aa1e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5><span>Dubbo服务端异步接口的实现背景和实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191101dubboe5aea2e688b7e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5-li><input type=checkbox id=m-zh-cnblog20191101dubboe5aea2e688b7e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5-check>
<label for=m-zh-cnblog20191101dubboe5aea2e688b7e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5-check><a href=/zh-cn/blog/2019/11/01/dubbo%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%BC%82%E6%AD%A5%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%AE%9E%E7%8E%B0%E8%83%8C%E6%99%AF%E5%92%8C%E5%AE%9E%E8%B7%B5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191101dubboe5aea2e688b7e7abafe5bc82e6ada5e68ea5e58fa3e79a84e5ae9ee78eb0e8838ce699afe5928ce5ae9ee8b7b5><span>Dubbo客户端异步接口的实现背景和实践</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191028dubbo-e59ca8e8b7a8e8afade8a880e5928ce58d8fe8aeaee7a9bfe9808fe680a7e696b9e59091e4b88ae79a84e68ea2e7b4a2e694afe68c81-http2-grpc-e5928c-protobuf-li><input type=checkbox id=m-zh-cnblog20191028dubbo-e59ca8e8b7a8e8afade8a880e5928ce58d8fe8aeaee7a9bfe9808fe680a7e696b9e59091e4b88ae79a84e68ea2e7b4a2e694afe68c81-http2-grpc-e5928c-protobuf-check>
<label for=m-zh-cnblog20191028dubbo-e59ca8e8b7a8e8afade8a880e5928ce58d8fe8aeaee7a9bfe9808fe680a7e696b9e59091e4b88ae79a84e68ea2e7b4a2e694afe68c81-http2-grpc-e5928c-protobuf-check><a href=/zh-cn/blog/2019/10/28/dubbo-%E5%9C%A8%E8%B7%A8%E8%AF%AD%E8%A8%80%E5%92%8C%E5%8D%8F%E8%AE%AE%E7%A9%BF%E9%80%8F%E6%80%A7%E6%96%B9%E5%90%91%E4%B8%8A%E7%9A%84%E6%8E%A2%E7%B4%A2%E6%94%AF%E6%8C%81-http/2-grpc-%E5%92%8C-protobuf/ title="Dubbo 在跨语言和协议穿透性方向上的探索:支持 HTTP/2 gRPC 和 Protobuf" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191028dubbo-e59ca8e8b7a8e8afade8a880e5928ce58d8fe8aeaee7a9bfe9808fe680a7e696b9e59091e4b88ae79a84e68ea2e7b4a2e694afe68c81-http2-grpc-e5928c-protobuf><span>支持 HTTP/2 gRPC 和 Protobuf</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191022e69cace59cb0e5ad98e6a0b9e5928ce69cace59cb0e4bcaae8a385-li><input type=checkbox id=m-zh-cnblog20191022e69cace59cb0e5ad98e6a0b9e5928ce69cace59cb0e4bcaae8a385-check>
<label for=m-zh-cnblog20191022e69cace59cb0e5ad98e6a0b9e5928ce69cace59cb0e4bcaae8a385-check><a href=/zh-cn/blog/2019/10/22/%E6%9C%AC%E5%9C%B0%E5%AD%98%E6%A0%B9%E5%92%8C%E6%9C%AC%E5%9C%B0%E4%BC%AA%E8%A3%85/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191022e69cace59cb0e5ad98e6a0b9e5928ce69cace59cb0e4bcaae8a385><span>本地存根和本地伪装</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191001e7a094e7a9b6-dubbo-e7bd91e58da1e59cb0e59d80e6b3a8e5868ce697b6e79a84e4b880e782b9e6809de88083-li><input type=checkbox id=m-zh-cnblog20191001e7a094e7a9b6-dubbo-e7bd91e58da1e59cb0e59d80e6b3a8e5868ce697b6e79a84e4b880e782b9e6809de88083-check>
<label for=m-zh-cnblog20191001e7a094e7a9b6-dubbo-e7bd91e58da1e59cb0e59d80e6b3a8e5868ce697b6e79a84e4b880e782b9e6809de88083-check><a href=/zh-cn/blog/2019/10/01/%E7%A0%94%E7%A9%B6-dubbo-%E7%BD%91%E5%8D%A1%E5%9C%B0%E5%9D%80%E6%B3%A8%E5%86%8C%E6%97%B6%E7%9A%84%E4%B8%80%E7%82%B9%E6%80%9D%E8%80%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191001e7a094e7a9b6-dubbo-e7bd91e58da1e59cb0e59d80e6b3a8e5868ce697b6e79a84e4b880e782b9e6809de88083><span>研究 Dubbo 网卡地址注册时的一点思考</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190826service-test-li><input type=checkbox id=m-zh-cnblog20190826service-test-check>
<label for=m-zh-cnblog20190826service-test-check><a href=/zh-cn/blog/2019/08/26/service-test/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190826service-test><span>Dubbo Admin服务测试功能</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190811e69cace59cb0e8b083e794a8-li><input type=checkbox id=m-zh-cnblog20190811e69cace59cb0e8b083e794a8-check>
<label for=m-zh-cnblog20190811e69cace59cb0e8b083e794a8-check><a href=/zh-cn/blog/2019/08/11/%E6%9C%AC%E5%9C%B0%E8%B0%83%E7%94%A8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190811e69cace59cb0e8b083e794a8><span>本地调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190726e59ca8-dubbo-e4b8ade4bdbfe794a8-rest-li><input type=checkbox id=m-zh-cnblog20190726e59ca8-dubbo-e4b8ade4bdbfe794a8-rest-check>
<label for=m-zh-cnblog20190726e59ca8-dubbo-e4b8ade4bdbfe794a8-rest-check><a href=/zh-cn/blog/2019/07/26/%E5%9C%A8-dubbo-%E4%B8%AD%E4%BD%BF%E7%94%A8-rest/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190726e59ca8-dubbo-e4b8ade4bdbfe794a8-rest><span>在 Dubbo 中使用 REST</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190622e4bdbfe794a8-dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-li><input type=checkbox id=m-zh-cnblog20190622e4bdbfe794a8-dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-check>
<label for=m-zh-cnblog20190622e4bdbfe794a8-dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb-check><a href=/zh-cn/blog/2019/06/22/%E4%BD%BF%E7%94%A8-dubbo-%E8%BF%9E%E6%8E%A5%E5%BC%82%E6%9E%84%E5%BE%AE%E6%9C%8D%E5%8A%A1%E4%BD%93%E7%B3%BB/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190622e4bdbfe794a8-dubbo-e8bf9ee68ea5e5bc82e69e84e5beaee69c8de58aa1e4bd93e7b3bb><span>使用 Dubbo 连接异构微服务体系</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190502dubboe58fafe689a9e5b195e69cbae588b6e6ba90e7a081e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog20190502dubboe58fafe689a9e5b195e69cbae588b6e6ba90e7a081e8a7a3e69e90-check>
<label for=m-zh-cnblog20190502dubboe58fafe689a9e5b195e69cbae588b6e6ba90e7a081e8a7a3e69e90-check><a href=/zh-cn/blog/2019/05/02/dubbo%E5%8F%AF%E6%89%A9%E5%B1%95%E6%9C%BA%E5%88%B6%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190502dubboe58fafe689a9e5b195e69cbae588b6e6ba90e7a081e8a7a3e69e90><span>Dubbo可扩展机制源码解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190501dubbo-e4b880e887b4e680a7hashe8b49fe8bdbde59d87e8a1a1e5ae9ee78eb0e58996e69e90-li><input type=checkbox id=m-zh-cnblog20190501dubbo-e4b880e887b4e680a7hashe8b49fe8bdbde59d87e8a1a1e5ae9ee78eb0e58996e69e90-check>
<label for=m-zh-cnblog20190501dubbo-e4b880e887b4e680a7hashe8b49fe8bdbde59d87e8a1a1e5ae9ee78eb0e58996e69e90-check><a href=/zh-cn/blog/2019/05/01/dubbo-%E4%B8%80%E8%87%B4%E6%80%A7hash%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%AE%9E%E7%8E%B0%E5%89%96%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190501dubbo-e4b880e887b4e680a7hashe8b49fe8bdbde59d87e8a1a1e5ae9ee78eb0e58996e69e90><span>Dubbo 一致性Hash负载均衡实现剖析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190425dubboe58fafe689a9e5b195e69cbae588b6e5ae9ee68898-li><input type=checkbox id=m-zh-cnblog20190425dubboe58fafe689a9e5b195e69cbae588b6e5ae9ee68898-check>
<label for=m-zh-cnblog20190425dubboe58fafe689a9e5b195e69cbae588b6e5ae9ee68898-check><a href=/zh-cn/blog/2019/04/25/dubbo%E5%8F%AF%E6%89%A9%E5%B1%95%E6%9C%BA%E5%88%B6%E5%AE%9E%E6%88%98/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190425dubboe58fafe689a9e5b195e69cbae588b6e5ae9ee68898><span>Dubbo可扩展机制实战</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190203e68f90e5898dife588a4e696ade5b8aee58aa9cpue58886e694afe9a284e6b58b-li><input type=checkbox id=m-zh-cnblog20190203e68f90e5898dife588a4e696ade5b8aee58aa9cpue58886e694afe9a284e6b58b-check>
<label for=m-zh-cnblog20190203e68f90e5898dife588a4e696ade5b8aee58aa9cpue58886e694afe9a284e6b58b-check><a href=/zh-cn/blog/2019/02/03/%E6%8F%90%E5%89%8Dif%E5%88%A4%E6%96%AD%E5%B8%AE%E5%8A%A9cpu%E5%88%86%E6%94%AF%E9%A2%84%E6%B5%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190203e68f90e5898dife588a4e696ade5b8aee58aa9cpue58886e694afe9a284e6b58b><span>提前if判断帮助CPU分支预测</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20190107e6b585e8b088-rpc-li><input type=checkbox id=m-zh-cnblog20190107e6b585e8b088-rpc-check>
<label for=m-zh-cnblog20190107e6b585e8b088-rpc-check><a href=/zh-cn/blog/2019/01/07/%E6%B5%85%E8%B0%88-rpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20190107e6b585e8b088-rpc><span>浅谈 RPC</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20181027dubboe69c8de58aa1e58886e7bb84e5928ce78988e69cace8819ae59088-li><input type=checkbox id=m-zh-cnblog20181027dubboe69c8de58aa1e58886e7bb84e5928ce78988e69cace8819ae59088-check>
<label for=m-zh-cnblog20181027dubboe69c8de58aa1e58886e7bb84e5928ce78988e69cace8819ae59088-check><a href=/zh-cn/blog/2018/10/27/dubbo%E6%9C%8D%E5%8A%A1%E5%88%86%E7%BB%84%E5%92%8C%E7%89%88%E6%9C%AC%E8%81%9A%E5%90%88/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20181027dubboe69c8de58aa1e58886e7bb84e5928ce78988e69cace8819ae59088><span>Dubbo服务分组和版本聚合</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20181005dubbo-e58d8fe8aeaee8afa6e8a7a3-li><input type=checkbox id=m-zh-cnblog20181005dubbo-e58d8fe8aeaee8afa6e8a7a3-check>
<label for=m-zh-cnblog20181005dubbo-e58d8fe8aeaee8afa6e8a7a3-check><a href=/zh-cn/blog/2018/10/05/dubbo-%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20181005dubbo-e58d8fe8aeaee8afa6e8a7a3><span>Dubbo 协议详解</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180930dubboe4b88ekubernetese99b86e68890-li><input type=checkbox id=m-zh-cnblog20180930dubboe4b88ekubernetese99b86e68890-check>
<label for=m-zh-cnblog20180930dubboe4b88ekubernetese99b86e68890-check><a href=/zh-cn/blog/2018/09/30/dubbo%E4%B8%8Ekubernetes%E9%9B%86%E6%88%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180930dubboe4b88ekubernetese99b86e68890><span>Dubbo与Kubernetes集成</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180920dubbo-mesh-service-meshe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2-li><input type=checkbox id=m-zh-cnblog20180920dubbo-mesh-service-meshe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2-check>
<label for=m-zh-cnblog20180920dubbo-mesh-service-meshe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2-check><a href=/zh-cn/blog/2018/09/20/dubbo-mesh-service-mesh%E7%9A%84%E5%AE%9E%E8%B7%B5%E4%B8%8E%E6%8E%A2%E7%B4%A2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180920dubbo-mesh-service-meshe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2><span>Dubbo Mesh | Service Mesh的实践与探索</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180902e5a682e4bd95e59fbae4ba8edubboe5ae9ee78eb0e585a8e5bc82e6ada5e8b083e794a8e993be-li><input type=checkbox id=m-zh-cnblog20180902e5a682e4bd95e59fbae4ba8edubboe5ae9ee78eb0e585a8e5bc82e6ada5e8b083e794a8e993be-check>
<label for=m-zh-cnblog20180902e5a682e4bd95e59fbae4ba8edubboe5ae9ee78eb0e585a8e5bc82e6ada5e8b083e794a8e993be-check><a href=/zh-cn/blog/2018/09/02/%E5%A6%82%E4%BD%95%E5%9F%BA%E4%BA%8Edubbo%E5%AE%9E%E7%8E%B0%E5%85%A8%E5%BC%82%E6%AD%A5%E8%B0%83%E7%94%A8%E9%93%BE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180902e5a682e4bd95e59fbae4ba8edubboe5ae9ee78eb0e585a8e5bc82e6ada5e8b083e794a8e993be><span>如何基于Dubbo实现全异步调用链</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180822dubbo-e99b86e7bea4e5aeb9e99499-li><input type=checkbox id=m-zh-cnblog20180822dubbo-e99b86e7bea4e5aeb9e99499-check>
<label for=m-zh-cnblog20180822dubbo-e99b86e7bea4e5aeb9e99499-check><a href=/zh-cn/blog/2018/08/22/dubbo-%E9%9B%86%E7%BE%A4%E5%AE%B9%E9%94%99/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180822dubbo-e99b86e7bea4e5aeb9e99499><span>Dubbo 集群容错</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180819dubbo-e78eb0e69c89e5bf83e8b7b3e696b9e6a188e680bbe7bb93e4bba5e58f8ae694b9e8bf9be5bbbae8aeae-li><input type=checkbox id=m-zh-cnblog20180819dubbo-e78eb0e69c89e5bf83e8b7b3e696b9e6a188e680bbe7bb93e4bba5e58f8ae694b9e8bf9be5bbbae8aeae-check>
<label for=m-zh-cnblog20180819dubbo-e78eb0e69c89e5bf83e8b7b3e696b9e6a188e680bbe7bb93e4bba5e58f8ae694b9e8bf9be5bbbae8aeae-check><a href=/zh-cn/blog/2018/08/19/dubbo-%E7%8E%B0%E6%9C%89%E5%BF%83%E8%B7%B3%E6%96%B9%E6%A1%88%E6%80%BB%E7%BB%93%E4%BB%A5%E5%8F%8A%E6%94%B9%E8%BF%9B%E5%BB%BA%E8%AE%AE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180819dubbo-e78eb0e69c89e5bf83e8b7b3e696b9e6a188e680bbe7bb93e4bba5e58f8ae694b9e8bf9be5bbbae8aeae><span>Dubbo 现有心跳方案总结以及改进建议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180815dubbo27-e4b889e5a4a7e696b0e789b9e680a7e8afa6e8a7a3-li><input type=checkbox id=m-zh-cnblog20180815dubbo27-e4b889e5a4a7e696b0e789b9e680a7e8afa6e8a7a3-check>
<label for=m-zh-cnblog20180815dubbo27-e4b889e5a4a7e696b0e789b9e680a7e8afa6e8a7a3-check><a href=/zh-cn/blog/2018/08/15/dubbo2.7-%E4%B8%89%E5%A4%A7%E6%96%B0%E7%89%B9%E6%80%A7%E8%AF%A6%E8%A7%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180815dubbo27-e4b889e5a4a7e696b0e789b9e680a7e8afa6e8a7a3><span>Dubbo2.7 三大新特性详解</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814dubbo-e585b3e4ba8ee5908ce6ada5e5bc82e6ada5e8b083e794a8e79a84e587a0e7a78de696b9e5bc8f-li><input type=checkbox id=m-zh-cnblog20180814dubbo-e585b3e4ba8ee5908ce6ada5e5bc82e6ada5e8b083e794a8e79a84e587a0e7a78de696b9e5bc8f-check>
<label for=m-zh-cnblog20180814dubbo-e585b3e4ba8ee5908ce6ada5e5bc82e6ada5e8b083e794a8e79a84e587a0e7a78de696b9e5bc8f-check><a href=/zh-cn/blog/2018/08/14/dubbo-%E5%85%B3%E4%BA%8E%E5%90%8C%E6%AD%A5/%E5%BC%82%E6%AD%A5%E8%B0%83%E7%94%A8%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814dubbo-e585b3e4ba8ee5908ce6ada5e5bc82e6ada5e8b083e794a8e79a84e587a0e7a78de696b9e5bc8f><span>Dubbo 关于同步/异步调用的几种方式</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814dubbo-e59fbae69cace794a8e6b395-dubbo-consumer-e9858de7bdae-li><input type=checkbox id=m-zh-cnblog20180814dubbo-e59fbae69cace794a8e6b395-dubbo-consumer-e9858de7bdae-check>
<label for=m-zh-cnblog20180814dubbo-e59fbae69cace794a8e6b395-dubbo-consumer-e9858de7bdae-check><a href=/zh-cn/blog/2018/08/14/dubbo-%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95-dubbo-consumer-%E9%85%8D%E7%BD%AE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814dubbo-e59fbae69cace794a8e6b395-dubbo-consumer-e9858de7bdae><span>Dubbo 基本用法 - Dubbo Consumer 配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814dubbo-e59fbae7a180e794a8e6b395-provider-e9858de7bdae-li><input type=checkbox id=m-zh-cnblog20180814dubbo-e59fbae7a180e794a8e6b395-provider-e9858de7bdae-check>
<label for=m-zh-cnblog20180814dubbo-e59fbae7a180e794a8e6b395-provider-e9858de7bdae-check><a href=/zh-cn/blog/2018/08/14/dubbo-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95-provider-%E9%85%8D%E7%BD%AE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814dubbo-e59fbae7a180e794a8e6b395-provider-e9858de7bdae><span>Dubbo 基础用法 - Provider 配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814dubbo-e4bc98e99b85e5819ce69cba-li><input type=checkbox id=m-zh-cnblog20180814dubbo-e4bc98e99b85e5819ce69cba-check>
<label for=m-zh-cnblog20180814dubbo-e4bc98e99b85e5819ce69cba-check><a href=/zh-cn/blog/2018/08/14/dubbo-%E4%BC%98%E9%9B%85%E5%81%9C%E6%9C%BA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814dubbo-e4bc98e99b85e5819ce69cba><span>Dubbo 优雅停机</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814dubboe79a84e6b39be58c96e8b083e794a8-li><input type=checkbox id=m-zh-cnblog20180814dubboe79a84e6b39be58c96e8b083e794a8-check>
<label for=m-zh-cnblog20180814dubboe79a84e6b39be58c96e8b083e794a8-check><a href=/zh-cn/blog/2018/08/14/dubbo%E7%9A%84%E6%B3%9B%E5%8C%96%E8%B0%83%E7%94%A8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814dubboe79a84e6b39be58c96e8b083e794a8><span>Dubbo的泛化调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814spring-boot-dubboe5ba94e794a8e590afe5819ce6ba90e7a081e58886e69e90-li><input type=checkbox id=m-zh-cnblog20180814spring-boot-dubboe5ba94e794a8e590afe5819ce6ba90e7a081e58886e69e90-check>
<label for=m-zh-cnblog20180814spring-boot-dubboe5ba94e794a8e590afe5819ce6ba90e7a081e58886e69e90-check><a href=/zh-cn/blog/2018/08/14/spring-boot-dubbo%E5%BA%94%E7%94%A8%E5%90%AF%E5%81%9C%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814spring-boot-dubboe5ba94e794a8e590afe5819ce6ba90e7a081e58886e69e90><span>Spring Boot Dubbo应用启停源码分析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180814e9809ae8bf87qose5afb9e69c8de58aa1e8bf9be8a18ce58aa8e68081e68ea7e588b6-li><input type=checkbox id=m-zh-cnblog20180814e9809ae8bf87qose5afb9e69c8de58aa1e8bf9be8a18ce58aa8e68081e68ea7e588b6-check>
<label for=m-zh-cnblog20180814e9809ae8bf87qose5afb9e69c8de58aa1e8bf9be8a18ce58aa8e68081e68ea7e588b6-check><a href=/zh-cn/blog/2018/08/14/%E9%80%9A%E8%BF%87qos%E5%AF%B9%E6%9C%8D%E5%8A%A1%E8%BF%9B%E8%A1%8C%E5%8A%A8%E6%80%81%E6%8E%A7%E5%88%B6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180814e9809ae8bf87qose5afb9e69c8de58aa1e8bf9be8a18ce58aa8e68081e68ea7e588b6><span>通过QoS对服务进行动态控制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180810dubboe79a84e8b49fe8bdbde59d87e8a1a1-li><input type=checkbox id=m-zh-cnblog20180810dubboe79a84e8b49fe8bdbde59d87e8a1a1-check>
<label for=m-zh-cnblog20180810dubboe79a84e8b49fe8bdbde59d87e8a1a1-check><a href=/zh-cn/blog/2018/08/10/dubbo%E7%9A%84%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180810dubboe79a84e8b49fe8bdbde59d87e8a1a1><span>Dubbo的负载均衡</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180807dubbo-e6b3a8e8a7a3e9a9b1e58aa8-li><input type=checkbox id=m-zh-cnblog20180807dubbo-e6b3a8e8a7a3e9a9b1e58aa8-check>
<label for=m-zh-cnblog20180807dubbo-e6b3a8e8a7a3e9a9b1e58aa8-check><a href=/zh-cn/blog/2018/08/07/dubbo-%E6%B3%A8%E8%A7%A3%E9%A9%B1%E5%8A%A8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180807dubbo-e6b3a8e8a7a3e9a9b1e58aa8><span>Dubbo 注解驱动</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180807dubbo-101-li><input type=checkbox id=m-zh-cnblog20180807dubbo-101-check>
<label for=m-zh-cnblog20180807dubbo-101-check><a href=/zh-cn/blog/2018/08/07/dubbo-101/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180807dubbo-101><span>第一个 Dubbo 应用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180807e4bdbfe794a8jdk17e7bc96e8af91e8bf90e8a18cdubbo-2714e9a1b9e79bae-li><input type=checkbox id=m-zh-cnblog20180807e4bdbfe794a8jdk17e7bc96e8af91e8bf90e8a18cdubbo-2714e9a1b9e79bae-check>
<label for=m-zh-cnblog20180807e4bdbfe794a8jdk17e7bc96e8af91e8bf90e8a18cdubbo-2714e9a1b9e79bae-check><a href=/zh-cn/blog/2018/08/07/%E4%BD%BF%E7%94%A8jdk17%E7%BC%96%E8%AF%91%E8%BF%90%E8%A1%8Cdubbo-2.7.14%E9%A1%B9%E7%9B%AE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180807e4bdbfe794a8jdk17e7bc96e8af91e8bf90e8a18cdubbo-2714e9a1b9e79bae><span>使用jdk17编译运行dubbo 2.7.14项目</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180807e59ca8-dubbo-e4b8ade4bdbfe794a8e6b3a8e8a7a3-li><input type=checkbox id=m-zh-cnblog20180807e59ca8-dubbo-e4b8ade4bdbfe794a8e6b3a8e8a7a3-check>
<label for=m-zh-cnblog20180807e59ca8-dubbo-e4b8ade4bdbfe794a8e6b3a8e8a7a3-check><a href=/zh-cn/blog/2018/08/07/%E5%9C%A8-dubbo-%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%B3%A8%E8%A7%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180807e59ca8-dubbo-e4b8ade4bdbfe794a8e6b3a8e8a7a3><span>在 Dubbo 中使用注解</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180722dubbo-27x-repackage-e5908ee79a84e585bce5aeb9e5ae9ee78eb0e696b9e6a188-li><input type=checkbox id=m-zh-cnblog20180722dubbo-27x-repackage-e5908ee79a84e585bce5aeb9e5ae9ee78eb0e696b9e6a188-check>
<label for=m-zh-cnblog20180722dubbo-27x-repackage-e5908ee79a84e585bce5aeb9e5ae9ee78eb0e696b9e6a188-check><a href=/zh-cn/blog/2018/07/22/dubbo-2.7.x-repackage-%E5%90%8E%E7%9A%84%E5%85%BC%E5%AE%B9%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%A1%88/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180722dubbo-27x-repackage-e5908ee79a84e585bce5aeb9e5ae9ee78eb0e696b9e6a188><span>Dubbo 2.7.x repackage 后的兼容实现方案</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180712dubbo-e4b88ae4b88be69687e4bfa1e681af-li><input type=checkbox id=m-zh-cnblog20180712dubbo-e4b88ae4b88be69687e4bfa1e681af-check>
<label for=m-zh-cnblog20180712dubbo-e4b88ae4b88be69687e4bfa1e681af-check><a href=/zh-cn/blog/2018/07/12/dubbo-%E4%B8%8A%E4%B8%8B%E6%96%87%E4%BF%A1%E6%81%AF/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180712dubbo-e4b88ae4b88be69687e4bfa1e681af><span>Dubbo 上下文信息</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180701e7acace4b880e4b8aa-dubbo-filter-li><input type=checkbox id=m-zh-cnblog20180701e7acace4b880e4b8aa-dubbo-filter-check>
<label for=m-zh-cnblog20180701e7acace4b880e4b8aa-dubbo-filter-check><a href=/zh-cn/blog/2018/07/01/%E7%AC%AC%E4%B8%80%E4%B8%AA-dubbo-filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180701e7acace4b880e4b8aa-dubbo-filter><span>第一个 Dubbo Filter</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180626e59b9ee5a3b0e6b58be8af95-li><input type=checkbox id=m-zh-cnblog20180626e59b9ee5a3b0e6b58be8af95-check>
<label for=m-zh-cnblog20180626e59b9ee5a3b0e6b58be8af95-check><a href=/zh-cn/blog/2018/06/26/%E5%9B%9E%E5%A3%B0%E6%B5%8B%E8%AF%95/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180626e59b9ee5a3b0e6b58be8af95><span>回声测试</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180603e4bba5-dubbo-e4b8bae4be8be8818ae8818ae5a682e4bd95e59091e5bc80e6ba90e9a1b9e79baee5819ae8b4a1e78cae-li><input type=checkbox id=m-zh-cnblog20180603e4bba5-dubbo-e4b8bae4be8be8818ae8818ae5a682e4bd95e59091e5bc80e6ba90e9a1b9e79baee5819ae8b4a1e78cae-check>
<label for=m-zh-cnblog20180603e4bba5-dubbo-e4b8bae4be8be8818ae8818ae5a682e4bd95e59091e5bc80e6ba90e9a1b9e79baee5819ae8b4a1e78cae-check><a href=/zh-cn/blog/2018/06/03/%E4%BB%A5-dubbo-%E4%B8%BA%E4%BE%8B%E8%81%8A%E8%81%8A%E5%A6%82%E4%BD%95%E5%90%91%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E5%81%9A%E8%B4%A1%E7%8C%AE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180603e4bba5-dubbo-e4b8bae4be8be8818ae8818ae5a682e4bd95e59091e5bc80e6ba90e9a1b9e79baee5819ae8b4a1e78cae><span>以 Dubbo 为例,聊聊如何向开源项目做贡献</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180521dubbo-e5a496e983a8e58c96e9858de7bdae-li><input type=checkbox id=m-zh-cnblog20180521dubbo-e5a496e983a8e58c96e9858de7bdae-check>
<label for=m-zh-cnblog20180521dubbo-e5a496e983a8e58c96e9858de7bdae-check><a href=/zh-cn/blog/2018/05/21/dubbo-%E5%A4%96%E9%83%A8%E5%8C%96%E9%85%8D%E7%BD%AE/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180521dubbo-e5a496e983a8e58c96e9858de7bdae><span>Dubbo 外部化配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20180101dubbo-e58d9ae5aea2e69687e6a1a3e4b8ade69687e68e92e78988e68c87e58d97-li><input type=checkbox id=m-zh-cnblog20180101dubbo-e58d9ae5aea2e69687e6a1a3e4b8ade69687e68e92e78988e68c87e58d97-check>
<label for=m-zh-cnblog20180101dubbo-e58d9ae5aea2e69687e6a1a3e4b8ade69687e68e92e78988e68c87e58d97-check><a href=/zh-cn/blog/2018/01/01/dubbo-%E5%8D%9A%E5%AE%A2%E6%96%87%E6%A1%A3%E4%B8%AD%E6%96%87%E6%8E%92%E7%89%88%E6%8C%87%E5%8D%97/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20180101dubbo-e58d9ae5aea2e69687e6a1a3e4b8ade69687e68e92e78988e68c87e58d97><span>Dubbo 博客文档中文排版指南</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogjavacodeanalysis-li><input type=checkbox id=m-zh-cnblogjavacodeanalysis-check>
<label for=m-zh-cnblogjavacodeanalysis-check><a href=/zh-cn/blog/java/codeanalysis/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogjavacodeanalysis><span>源码分析</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogjavacodeanalysismetrics-li><input type=checkbox id=m-zh-cnblogjavacodeanalysismetrics-check>
<label for=m-zh-cnblogjavacodeanalysismetrics-check><a href=/zh-cn/blog/java/codeanalysis/metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogjavacodeanalysismetrics><span>dubbo-metrics 指标模块源码浅析</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20230428e5bc95e8a880-li><input type=checkbox id=m-zh-cnblog20230428e5bc95e8a880-check>
<label for=m-zh-cnblog20230428e5bc95e8a880-check><a href=/zh-cn/blog/2023/04/28/%E5%BC%95%E8%A8%80/ title=引言 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20230428e5bc95e8a880><span>0-引言</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202304281-e68c87e6a087e6a0b7e69cace79a84e694b6e99b86e4b88ee5ad98e582a8-li><input type=checkbox id=m-zh-cnblog202304281-e68c87e6a087e6a0b7e69cace79a84e694b6e99b86e4b88ee5ad98e582a8-check>
<label for=m-zh-cnblog202304281-e68c87e6a087e6a0b7e69cace79a84e694b6e99b86e4b88ee5ad98e582a8-check><a href=/zh-cn/blog/2023/04/28/1-%E6%8C%87%E6%A0%87%E6%A0%B7%E6%9C%AC%E7%9A%84%E6%94%B6%E9%9B%86%E4%B8%8E%E5%AD%98%E5%82%A8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202304281-e68c87e6a087e6a0b7e69cace79a84e694b6e99b86e4b88ee5ad98e582a8><span>1-指标样本的收集与存储</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202304282-e68c87e6a087e694b6e99b86e599a8e79a84e68c87e6a087e98787e99b86e6b581e7a88b-li><input type=checkbox id=m-zh-cnblog202304282-e68c87e6a087e694b6e99b86e599a8e79a84e68c87e6a087e98787e99b86e6b581e7a88b-check>
<label for=m-zh-cnblog202304282-e68c87e6a087e694b6e99b86e599a8e79a84e68c87e6a087e98787e99b86e6b581e7a88b-check><a href=/zh-cn/blog/2023/04/28/2-%E6%8C%87%E6%A0%87%E6%94%B6%E9%9B%86%E5%99%A8%E7%9A%84%E6%8C%87%E6%A0%87%E9%87%87%E9%9B%86%E6%B5%81%E7%A8%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202304282-e68c87e6a087e694b6e99b86e599a8e79a84e68c87e6a087e98787e99b86e6b581e7a88b><span>2-指标收集器的指标采集流程</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202304283-e68c87e6a087e79b91e590ace6b3a8e5868ce6a2b3e79086-li><input type=checkbox id=m-zh-cnblog202304283-e68c87e6a087e79b91e590ace6b3a8e5868ce6a2b3e79086-check>
<label for=m-zh-cnblog202304283-e68c87e6a087e79b91e590ace6b3a8e5868ce6a2b3e79086-check><a href=/zh-cn/blog/2023/04/28/3-%E6%8C%87%E6%A0%87%E7%9B%91%E5%90%AC%E6%B3%A8%E5%86%8C%E6%A2%B3%E7%90%86/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202304283-e68c87e6a087e79b91e590ace6b3a8e5868ce6a2b3e79086><span>3-指标监听注册梳理</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202304284-e68c87e6a087e8bdace68da2e4b88ee5afbce587ba-li><input type=checkbox id=m-zh-cnblog202304284-e68c87e6a087e8bdace68da2e4b88ee5afbce587ba-check>
<label for=m-zh-cnblog202304284-e68c87e6a087e8bdace68da2e4b88ee5afbce587ba-check><a href=/zh-cn/blog/2023/04/28/4-%E6%8C%87%E6%A0%87%E8%BD%AC%E6%8D%A2%E4%B8%8E%E5%AF%BC%E5%87%BA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202304284-e68c87e6a087e8bdace68da2e4b88ee5afbce587ba><span>4-指标转换与导出</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogjavacodeanalysis308-li><input type=checkbox id=m-zh-cnblogjavacodeanalysis308-check>
<label for=m-zh-cnblogjavacodeanalysis308-check><a href=/zh-cn/blog/java/codeanalysis/3.0.8/ title="Dubbo 3.0.8 源码解析" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogjavacodeanalysis308><span>Dubbo3 [v3.0.8] 源码解析</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022082222-dubbo3e6b688e8b4b9e88085e887aae58aa8e6849fe5ba94e586b3e7ad96e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e58e9fe79086-li><input type=checkbox id=m-zh-cnblog2022082222-dubbo3e6b688e8b4b9e88085e887aae58aa8e6849fe5ba94e586b3e7ad96e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e58e9fe79086-check>
<label for=m-zh-cnblog2022082222-dubbo3e6b688e8b4b9e88085e887aae58aa8e6849fe5ba94e586b3e7ad96e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e58e9fe79086-check><a href=/zh-cn/blog/2022/08/22/22-dubbo3%E6%B6%88%E8%B4%B9%E8%80%85%E8%87%AA%E5%8A%A8%E6%84%9F%E5%BA%94%E5%86%B3%E7%AD%96%E5%BA%94%E7%94%A8%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E5%8E%9F%E7%90%86/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022082222-dubbo3e6b688e8b4b9e88085e887aae58aa8e6849fe5ba94e586b3e7ad96e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0e58e9fe79086><span>22-Dubbo3消费者自动感应决策应用级服务发现原理</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022082121-dubbo3e6b688e8b4b9e88085e5bc95e794a8e69c8de58aa1e585a5e58fa3-li><input type=checkbox id=m-zh-cnblog2022082121-dubbo3e6b688e8b4b9e88085e5bc95e794a8e69c8de58aa1e585a5e58fa3-check>
<label for=m-zh-cnblog2022082121-dubbo3e6b688e8b4b9e88085e5bc95e794a8e69c8de58aa1e585a5e58fa3-check><a href=/zh-cn/blog/2022/08/21/21-dubbo3%E6%B6%88%E8%B4%B9%E8%80%85%E5%BC%95%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%85%A5%E5%8F%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022082121-dubbo3e6b688e8b4b9e88085e5bc95e794a8e69c8de58aa1e585a5e58fa3><span>21-Dubbo3消费者引用服务入口</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022082020-dubbo3e69c8de58aa1e5bc95e794a8e9858de7bdaereferenceconfig-li><input type=checkbox id=m-zh-cnblog2022082020-dubbo3e69c8de58aa1e5bc95e794a8e9858de7bdaereferenceconfig-check>
<label for=m-zh-cnblog2022082020-dubbo3e69c8de58aa1e5bc95e794a8e9858de7bdaereferenceconfig-check><a href=/zh-cn/blog/2022/08/20/20-dubbo3%E6%9C%8D%E5%8A%A1%E5%BC%95%E7%94%A8%E9%85%8D%E7%BD%AEreferenceconfig/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022082020-dubbo3e69c8de58aa1e5bc95e794a8e9858de7bdaereferenceconfig><span>20-Dubbo3服务引用配置ReferenceConfig</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081919-e9878de696b0e69da5e8bf87e4bb8ee4b880e4b8aae69c8de58aa1e6b688e8b4b9e88085e79a84demoe8afb4e8b5b7-li><input type=checkbox id=m-zh-cnblog2022081919-e9878de696b0e69da5e8bf87e4bb8ee4b880e4b8aae69c8de58aa1e6b688e8b4b9e88085e79a84demoe8afb4e8b5b7-check>
<label for=m-zh-cnblog2022081919-e9878de696b0e69da5e8bf87e4bb8ee4b880e4b8aae69c8de58aa1e6b688e8b4b9e88085e79a84demoe8afb4e8b5b7-check><a href=/zh-cn/blog/2022/08/19/19-%E9%87%8D%E6%96%B0%E6%9D%A5%E8%BF%87%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E6%B6%88%E8%B4%B9%E8%80%85%E7%9A%84demo%E8%AF%B4%E8%B5%B7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081919-e9878de696b0e69da5e8bf87e4bb8ee4b880e4b8aae69c8de58aa1e6b688e8b4b9e88085e79a84demoe8afb4e8b5b7><span>19 重新来过从一个服务消费者的Demo说起</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081818-dubbo3e58583e695b0e68daee69c8de58aa1metadataservicee79a84e5afbce587ba-li><input type=checkbox id=m-zh-cnblog2022081818-dubbo3e58583e695b0e68daee69c8de58aa1metadataservicee79a84e5afbce587ba-check>
<label for=m-zh-cnblog2022081818-dubbo3e58583e695b0e68daee69c8de58aa1metadataservicee79a84e5afbce587ba-check><a href=/zh-cn/blog/2022/08/18/18-dubbo3%E5%85%83%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1metadataservice%E7%9A%84%E5%AF%BC%E5%87%BA/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081818-dubbo3e58583e695b0e68daee69c8de58aa1metadataservicee79a84e5afbce587ba><span>18-Dubbo3元数据服务MetadataService的导出</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081717-dubboe69c8de58aa1e68f90e4be9be88085e79a84e58f8ce6b3a8e5868ce58e9fe79086-li><input type=checkbox id=m-zh-cnblog2022081717-dubboe69c8de58aa1e68f90e4be9be88085e79a84e58f8ce6b3a8e5868ce58e9fe79086-check>
<label for=m-zh-cnblog2022081717-dubboe69c8de58aa1e68f90e4be9be88085e79a84e58f8ce6b3a8e5868ce58e9fe79086-check><a href=/zh-cn/blog/2022/08/17/17-dubbo%E6%9C%8D%E5%8A%A1%E6%8F%90%E4%BE%9B%E8%80%85%E7%9A%84%E5%8F%8C%E6%B3%A8%E5%86%8C%E5%8E%9F%E7%90%86/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081717-dubboe69c8de58aa1e68f90e4be9be88085e79a84e58f8ce6b3a8e5868ce58e9fe79086><span>17-Dubbo服务提供者的双注册原理</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081616-e6a8a1e59d97e58f91e5b883e599a8e58f91e5b883e69c8de58aa1e585a8e8bf87e7a88b-li><input type=checkbox id=m-zh-cnblog2022081616-e6a8a1e59d97e58f91e5b883e599a8e58f91e5b883e69c8de58aa1e585a8e8bf87e7a88b-check>
<label for=m-zh-cnblog2022081616-e6a8a1e59d97e58f91e5b883e599a8e58f91e5b883e69c8de58aa1e585a8e8bf87e7a88b-check><a href=/zh-cn/blog/2022/08/16/16-%E6%A8%A1%E5%9D%97%E5%8F%91%E5%B8%83%E5%99%A8%E5%8F%91%E5%B8%83%E6%9C%8D%E5%8A%A1%E5%85%A8%E8%BF%87%E7%A8%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081616-e6a8a1e59d97e58f91e5b883e599a8e58f91e5b883e69c8de58aa1e585a8e8bf87e7a88b><span>16-模块发布器发布服务全过程</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081515-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be58583e695b0e68daee4b8ade5bf83e6ba90e7a081e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog2022081515-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be58583e695b0e68daee4b8ade5bf83e6ba90e7a081e8a7a3e69e90-check>
<label for=m-zh-cnblog2022081515-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be58583e695b0e68daee4b8ade5bf83e6ba90e7a081e8a7a3e69e90-check><a href=/zh-cn/blog/2022/08/15/15-dubbo%E7%9A%84%E4%B8%89%E5%A4%A7%E4%B8%AD%E5%BF%83%E4%B9%8B%E5%85%83%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081515-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be58583e695b0e68daee4b8ade5bf83e6ba90e7a081e8a7a3e69e90><span>15-Dubbo的三大中心之元数据中心源码解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081414-dubboe9858de7bdaee58aa0e8bdbde585a8e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog2022081414-dubboe9858de7bdaee58aa0e8bdbde585a8e8a7a3e69e90-check>
<label for=m-zh-cnblog2022081414-dubboe9858de7bdaee58aa0e8bdbde585a8e8a7a3e69e90-check><a href=/zh-cn/blog/2022/08/14/14-dubbo%E9%85%8D%E7%BD%AE%E5%8A%A0%E8%BD%BD%E5%85%A8%E8%A7%A3%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081414-dubboe9858de7bdaee58aa0e8bdbde585a8e8a7a3e69e90><span>14-Dubbo配置加载全解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081313-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be9858de7bdaee4b8ade5bf83-li><input type=checkbox id=m-zh-cnblog2022081313-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be9858de7bdaee4b8ade5bf83-check>
<label for=m-zh-cnblog2022081313-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be9858de7bdaee4b8ade5bf83-check><a href=/zh-cn/blog/2022/08/13/13-dubbo%E7%9A%84%E4%B8%89%E5%A4%A7%E4%B8%AD%E5%BF%83%E4%B9%8B%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081313-dubboe79a84e4b889e5a4a7e4b8ade5bf83e4b98be9858de7bdaee4b8ade5bf83><span>13-Dubbo的三大中心之配置中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081212-e585a8e5b180e8a786e9878ee69da5e79c8bdubbo3e79a84e69c8de58aa1e590afe58aa8e7949fe591bde591a8e69c9f-li><input type=checkbox id=m-zh-cnblog2022081212-e585a8e5b180e8a786e9878ee69da5e79c8bdubbo3e79a84e69c8de58aa1e590afe58aa8e7949fe591bde591a8e69c9f-check>
<label for=m-zh-cnblog2022081212-e585a8e5b180e8a786e9878ee69da5e79c8bdubbo3e79a84e69c8de58aa1e590afe58aa8e7949fe591bde591a8e69c9f-check><a href=/zh-cn/blog/2022/08/12/12-%E5%85%A8%E5%B1%80%E8%A7%86%E9%87%8E%E6%9D%A5%E7%9C%8Bdubbo3%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%90%AF%E5%8A%A8%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081212-e585a8e5b180e8a786e9878ee69da5e79c8bdubbo3e79a84e69c8de58aa1e590afe58aa8e7949fe591bde591a8e69c9f><span>12 全局视野来看Dubbo3的服务启动生命周期</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081111-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e58d8fe8aeaee9858de7bdaee4bfa1e681afprotocolconfig-li><input type=checkbox id=m-zh-cnblog2022081111-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e58d8fe8aeaee9858de7bdaee4bfa1e681afprotocolconfig-check>
<label for=m-zh-cnblog2022081111-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e58d8fe8aeaee9858de7bdaee4bfa1e681afprotocolconfig-check><a href=/zh-cn/blog/2022/08/11/11-dubbo%E5%90%AF%E5%8A%A8%E5%99%A8dubbobootstrap%E6%B7%BB%E5%8A%A0%E5%8D%8F%E8%AE%AE%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AFprotocolconfig/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081111-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e58d8fe8aeaee9858de7bdaee4bfa1e681afprotocolconfig><span>11-Dubbo启动器DubboBootstrap添加协议配置信息ProtocolConfig</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022081010-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e6b3a8e5868ce4b8ade5bf83e9858de7bdaee4bfa1e681afregistryconfig-li><input type=checkbox id=m-zh-cnblog2022081010-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e6b3a8e5868ce4b8ade5bf83e9858de7bdaee4bfa1e681afregistryconfig-check>
<label for=m-zh-cnblog2022081010-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e6b3a8e5868ce4b8ade5bf83e9858de7bdaee4bfa1e681afregistryconfig-check><a href=/zh-cn/blog/2022/08/10/10-dubbo%E5%90%AF%E5%8A%A8%E5%99%A8dubbobootstrap%E6%B7%BB%E5%8A%A0%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AFregistryconfig/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022081010-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e6b3a8e5868ce4b8ade5bf83e9858de7bdaee4bfa1e681afregistryconfig><span>10-Dubbo启动器DubboBootstrap添加注册中心配置信息RegistryConfig</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202208099-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e5ba94e794a8e7a88be5ba8fe79a84e9858de7bdaee4bfa1e681afapplicationconfig-li><input type=checkbox id=m-zh-cnblog202208099-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e5ba94e794a8e7a88be5ba8fe79a84e9858de7bdaee4bfa1e681afapplicationconfig-check>
<label for=m-zh-cnblog202208099-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e5ba94e794a8e7a88be5ba8fe79a84e9858de7bdaee4bfa1e681afapplicationconfig-check><a href=/zh-cn/blog/2022/08/09/9-dubbo%E5%90%AF%E5%8A%A8%E5%99%A8dubbobootstrap%E6%B7%BB%E5%8A%A0%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AFapplicationconfig/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202208099-dubboe590afe58aa8e599a8dubbobootstrape6b7bbe58aa0e5ba94e794a8e7a88be5ba8fe79a84e9858de7bdaee4bfa1e681afapplicationconfig><span>9-Dubbo启动器DubboBootstrap添加应用程序的配置信息ApplicationConfig</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202208088-dubboe590afe58aa8e599a8dubbobootstrape5809fe58aa9e58f8ce9878de6a0a1e9aa8ce99481e79a84e58d95e4be8be6a8a1e5bc8fe8bf9be8a18ce5afb9e8b1a1e79a84e5889de5a78be58c96-li><input type=checkbox id=m-zh-cnblog202208088-dubboe590afe58aa8e599a8dubbobootstrape5809fe58aa9e58f8ce9878de6a0a1e9aa8ce99481e79a84e58d95e4be8be6a8a1e5bc8fe8bf9be8a18ce5afb9e8b1a1e79a84e5889de5a78be58c96-check>
<label for=m-zh-cnblog202208088-dubboe590afe58aa8e599a8dubbobootstrape5809fe58aa9e58f8ce9878de6a0a1e9aa8ce99481e79a84e58d95e4be8be6a8a1e5bc8fe8bf9be8a18ce5afb9e8b1a1e79a84e5889de5a78be58c96-check><a href=/zh-cn/blog/2022/08/08/8-dubbo%E5%90%AF%E5%8A%A8%E5%99%A8dubbobootstrap%E5%80%9F%E5%8A%A9%E5%8F%8C%E9%87%8D%E6%A0%A1%E9%AA%8C%E9%94%81%E7%9A%84%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F%E8%BF%9B%E8%A1%8C%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202208088-dubboe590afe58aa8e599a8dubbobootstrape5809fe58aa9e58f8ce9878de6a0a1e9aa8ce99481e79a84e58d95e4be8be6a8a1e5bc8fe8bf9be8a18ce5afb9e8b1a1e79a84e5889de5a78be58c96><span>8-Dubbo启动器DubboBootstrap借助双重校验锁的单例模式进行对象的初始化</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog202208077-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be887aae58aa8e6bf80e6b4bbe689a9e5b195activatee6ba90e7a081e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog202208077-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be887aae58aa8e6bf80e6b4bbe689a9e5b195activatee6ba90e7a081e8a7a3e69e90-check>
<label for=m-zh-cnblog202208077-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be887aae58aa8e6bf80e6b4bbe689a9e5b195activatee6ba90e7a081e8a7a3e69e90-check><a href=/zh-cn/blog/2022/08/07/7-dubbo%E7%9A%84spi%E6%89%A9%E5%B1%95%E6%9C%BA%E5%88%B6%E4%B9%8B%E8%87%AA%E5%8A%A8%E6%BF%80%E6%B4%BB%E6%89%A9%E5%B1%95activate%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog202208077-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be887aae58aa8e6bf80e6b4bbe689a9e5b195activatee6ba90e7a081e8a7a3e69e90><span>7-Dubbo的SPI扩展机制之自动激活扩展Activate源码解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022080606-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be699aee9809ae689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbae4b88ewrappere69cbae588b6e79a84e6ba90e7a081e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog2022080606-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be699aee9809ae689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbae4b88ewrappere69cbae588b6e79a84e6ba90e7a081e8a7a3e69e90-check>
<label for=m-zh-cnblog2022080606-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be699aee9809ae689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbae4b88ewrappere69cbae588b6e79a84e6ba90e7a081e8a7a3e69e90-check><a href=/zh-cn/blog/2022/08/06/06-dubbo%E7%9A%84spi%E6%89%A9%E5%B1%95%E6%9C%BA%E5%88%B6%E4%B9%8B%E6%99%AE%E9%80%9A%E6%89%A9%E5%B1%95%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%88%9B%E5%BB%BA%E4%B8%8Ewrapper%E6%9C%BA%E5%88%B6%E7%9A%84%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/ title=06-Dubbo的SPI扩展机制之普通扩展对象的创建与Wrapper机制的源码解析 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022080606-dubboe79a84spie689a9e5b195e69cbae588b6e4b98be699aee9809ae689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbae4b88ewrappere69cbae588b6e79a84e6ba90e7a081e8a7a3e69e90><span>6-Dubbo的SPI扩展机制之普通扩展对象的创建与Wrapper机制的源码解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022080505-e887aae98082e5ba94e689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbagetadaptiveextensione696b9e6b395-li><input type=checkbox id=m-zh-cnblog2022080505-e887aae98082e5ba94e689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbagetadaptiveextensione696b9e6b395-check>
<label for=m-zh-cnblog2022080505-e887aae98082e5ba94e689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbagetadaptiveextensione696b9e6b395-check><a href=/zh-cn/blog/2022/08/05/05-%E8%87%AA%E9%80%82%E5%BA%94%E6%89%A9%E5%B1%95%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%88%9B%E5%BB%BAgetadaptiveextension%E6%96%B9%E6%B3%95/ title=05-自适应扩展对象的创建getAdaptiveExtension方法 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022080505-e887aae98082e5ba94e689a9e5b195e5afb9e8b1a1e79a84e5889be5bbbagetadaptiveextensione696b9e6b395><span>5-自适应扩展对象的创建getAdaptiveExtension方法</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022080404-dubboe79a84e689a9e5b195e69cbae588b6-li><input type=checkbox id=m-zh-cnblog2022080404-dubboe79a84e689a9e5b195e69cbae588b6-check>
<label for=m-zh-cnblog2022080404-dubboe79a84e689a9e5b195e69cbae588b6-check><a href=/zh-cn/blog/2022/08/04/04-dubbo%E7%9A%84%E6%89%A9%E5%B1%95%E6%9C%BA%E5%88%B6/ title=04-Dubbo的扩展机制 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022080404-dubboe79a84e689a9e5b195e69cbae588b6><span>4-Dubbo的扩展机制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022080303-e6a186e69eb6e5ba94e794a8e7a88be5ba8fe6a8a1e59d97e9a286e59f9fe6a8a1e59e8bmodele5afb9e8b1a1e79a84e5889de5a78be58c96-li><input type=checkbox id=m-zh-cnblog2022080303-e6a186e69eb6e5ba94e794a8e7a88be5ba8fe6a8a1e59d97e9a286e59f9fe6a8a1e59e8bmodele5afb9e8b1a1e79a84e5889de5a78be58c96-check>
<label for=m-zh-cnblog2022080303-e6a186e69eb6e5ba94e794a8e7a88be5ba8fe6a8a1e59d97e9a286e59f9fe6a8a1e59e8bmodele5afb9e8b1a1e79a84e5889de5a78be58c96-check><a href=/zh-cn/blog/2022/08/03/03-%E6%A1%86%E6%9E%B6%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%A8%A1%E5%9D%97%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8Bmodel%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96/ title=03-框架,应用程序,模块领域模型Model对象的初始化 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022080303-e6a186e69eb6e5ba94e794a8e7a88be5ba8fe6a8a1e59d97e9a286e59f9fe6a8a1e59e8bmodele5afb9e8b1a1e79a84e5889de5a78be58c96><span>3-框架,应用程序,模块领域模型Model对象的初始化</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022080202-e590afe58aa8e69c8de58aa1e5898de69c8de58aa1e9858de7bdaeserviceconfige7b1bbe59e8be698afe5a682e4bd95e5889de5a78be58c96e79a84-li><input type=checkbox id=m-zh-cnblog2022080202-e590afe58aa8e69c8de58aa1e5898de69c8de58aa1e9858de7bdaeserviceconfige7b1bbe59e8be698afe5a682e4bd95e5889de5a78be58c96e79a84-check>
<label for=m-zh-cnblog2022080202-e590afe58aa8e69c8de58aa1e5898de69c8de58aa1e9858de7bdaeserviceconfige7b1bbe59e8be698afe5a682e4bd95e5889de5a78be58c96e79a84-check><a href=/zh-cn/blog/2022/08/02/02-%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1%E5%89%8D%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AEserviceconfig%E7%B1%BB%E5%9E%8B%E6%98%AF%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84/ title=02-启动服务前服务配置ServiceConfig类型是如何初始化的? class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022080202-e590afe58aa8e69c8de58aa1e5898de69c8de58aa1e9858de7bdaeserviceconfige7b1bbe59e8be698afe5a682e4bd95e5889de5a78be58c96e79a84><span>2-ServiceConfig类型是如何初始化的?</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog2022080101-e4bb8ee4b880e4b8aae69c8de58aa1e68f90e4be9be88085e79a84demoe8afb4e8b5b7-li><input type=checkbox id=m-zh-cnblog2022080101-e4bb8ee4b880e4b8aae69c8de58aa1e68f90e4be9be88085e79a84demoe8afb4e8b5b7-check>
<label for=m-zh-cnblog2022080101-e4bb8ee4b880e4b8aae69c8de58aa1e68f90e4be9be88085e79a84demoe8afb4e8b5b7-check><a href=/zh-cn/blog/2022/08/01/01-%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E6%8F%90%E4%BE%9B%E8%80%85%E7%9A%84demo%E8%AF%B4%E8%B5%B7/ title="01 从一个服务提供者的Demo说起" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog2022080101-e4bb8ee4b880e4b8aae69c8de58aa1e68f90e4be9be88085e79a84demoe8afb4e8b5b7><span>1-从一个服务提供者的Demo说起</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog10101dubbo-3-e4b8ade79a84e4b889e5b182e9858de7bdaee99a94e7a6bb-li><input type=checkbox id=m-zh-cnblog10101dubbo-3-e4b8ade79a84e4b889e5b182e9858de7bdaee99a94e7a6bb-check>
<label for=m-zh-cnblog10101dubbo-3-e4b8ade79a84e4b889e5b182e9858de7bdaee99a94e7a6bb-check><a href=/zh-cn/blog/1/01/01/dubbo-3-%E4%B8%AD%E7%9A%84%E4%B8%89%E5%B1%82%E9%85%8D%E7%BD%AE%E9%9A%94%E7%A6%BB/ title="Dubbo 3 中的三层配置隔离" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog10101dubbo-3-e4b8ade79a84e4b889e5b182e9858de7bdaee99a94e7a6bb><span>配置隔离</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221228dubbo-3-e4b98b-triple-e6b581e68ea7e58f8de58e8be58e9fe79086e8a7a3e69e90-li><input type=checkbox id=m-zh-cnblog20221228dubbo-3-e4b98b-triple-e6b581e68ea7e58f8de58e8be58e9fe79086e8a7a3e69e90-check>
<label for=m-zh-cnblog20221228dubbo-3-e4b98b-triple-e6b581e68ea7e58f8de58e8be58e9fe79086e8a7a3e69e90-check><a href=/zh-cn/blog/2022/12/28/dubbo-3-%E4%B9%8B-triple-%E6%B5%81%E6%8E%A7%E5%8F%8D%E5%8E%8B%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221228dubbo-3-e4b98b-triple-e6b581e68ea7e58f8de58e8be58e9fe79086e8a7a3e69e90><span>Dubbo 3 之 Triple 流控反压原理解析</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221219triple-e58d8fe8aeaee694afe68c81-java-e5bc82e5b8b8e59b9ee4bca0e79a84e8aebee8aea1e4b88ee5ae9ee78eb0-li><input type=checkbox id=m-zh-cnblog20221219triple-e58d8fe8aeaee694afe68c81-java-e5bc82e5b8b8e59b9ee4bca0e79a84e8aebee8aea1e4b88ee5ae9ee78eb0-check>
<label for=m-zh-cnblog20221219triple-e58d8fe8aeaee694afe68c81-java-e5bc82e5b8b8e59b9ee4bca0e79a84e8aebee8aea1e4b88ee5ae9ee78eb0-check><a href=/zh-cn/blog/2022/12/19/triple-%E5%8D%8F%E8%AE%AE%E6%94%AF%E6%8C%81-java-%E5%BC%82%E5%B8%B8%E5%9B%9E%E4%BC%A0%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221219triple-e58d8fe8aeaee694afe68c81-java-e5bc82e5b8b8e59b9ee4bca0e79a84e8aebee8aea1e4b88ee5ae9ee78eb0><span>Triple 协议支持 Java 异常回传的设计与实现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220623e6b585e69e90-dubbo-30-e4b8ade68ea5e58fa3e7baa7e59cb0e59d80e68ea8e98081e680a7e883bde79a84e4bc98e58c96-li><input type=checkbox id=m-zh-cnblog20220623e6b585e69e90-dubbo-30-e4b8ade68ea5e58fa3e7baa7e59cb0e59d80e68ea8e98081e680a7e883bde79a84e4bc98e58c96-check>
<label for=m-zh-cnblog20220623e6b585e69e90-dubbo-30-e4b8ade68ea5e58fa3e7baa7e59cb0e59d80e68ea8e98081e680a7e883bde79a84e4bc98e58c96-check><a href=/zh-cn/blog/2022/06/23/%E6%B5%85%E6%9E%90-dubbo-3.0-%E4%B8%AD%E6%8E%A5%E5%8F%A3%E7%BA%A7%E5%9C%B0%E5%9D%80%E6%8E%A8%E9%80%81%E6%80%A7%E8%83%BD%E7%9A%84%E4%BC%98%E5%8C%96/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220623e6b585e69e90-dubbo-30-e4b8ade68ea5e58fa3e7baa7e59cb0e59d80e68ea8e98081e680a7e883bde79a84e4bc98e58c96><span>浅析 Dubbo 3.0 中接口级地址推送性能的优化</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210602dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0-li><input type=checkbox id=m-zh-cnblog20210602dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0-check>
<label for=m-zh-cnblog20210602dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0-check><a href=/zh-cn/blog/2021/06/02/dubbo3-%E5%BA%94%E7%94%A8%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0/ title="Dubbo3 应用级服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210602dubbo3-e5ba94e794a8e7baa7e69c8de58aa1e58f91e78eb0><span>应用级服务发现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20191017dubbo-e4b8ade79a84-url-e7bb9fe4b880e6a8a1e59e8b-li><input type=checkbox id=m-zh-cnblog20191017dubbo-e4b8ade79a84-url-e7bb9fe4b880e6a8a1e59e8b-check>
<label for=m-zh-cnblog20191017dubbo-e4b8ade79a84-url-e7bb9fe4b880e6a8a1e59e8b-check><a href=/zh-cn/blog/2019/10/17/dubbo-%E4%B8%AD%E7%9A%84-url-%E7%BB%9F%E4%B8%80%E6%A8%A1%E5%9E%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20191017dubbo-e4b8ade79a84-url-e7bb9fe4b880e6a8a1e59e8b><span>Dubbo 中的 URL 统一模型</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnbloggolang-li><input type=checkbox id=m-zh-cnbloggolang-check>
<label for=m-zh-cnbloggolang-check><a href=/zh-cn/blog/golang/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnbloggolang><span>Golang</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210220dubbo-go-e799bde8af9de69687-li><input type=checkbox id=m-zh-cnblog20210220dubbo-go-e799bde8af9de69687-check>
<label for=m-zh-cnblog20210220dubbo-go-e799bde8af9de69687-check><a href=/zh-cn/blog/2021/02/20/dubbo-go-%E7%99%BD%E8%AF%9D%E6%96%87/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210220dubbo-go-e799bde8af9de69687><span>dubbo-go 白话文</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210115dubbo-goe6ba90e7a081e7ac94e8aeb0e4ba8ce5aea2e688b7e7abafe8b083e794a8e8bf87e7a88b-li><input type=checkbox id=m-zh-cnblog20210115dubbo-goe6ba90e7a081e7ac94e8aeb0e4ba8ce5aea2e688b7e7abafe8b083e794a8e8bf87e7a88b-check>
<label for=m-zh-cnblog20210115dubbo-goe6ba90e7a081e7ac94e8aeb0e4ba8ce5aea2e688b7e7abafe8b083e794a8e8bf87e7a88b-check><a href=/zh-cn/blog/2021/01/15/dubbo-go%E6%BA%90%E7%A0%81%E7%AC%94%E8%AE%B0%E4%BA%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%B0%83%E7%94%A8%E8%BF%87%E7%A8%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210115dubbo-goe6ba90e7a081e7ac94e8aeb0e4ba8ce5aea2e688b7e7abafe8b083e794a8e8bf87e7a88b><span>dubbo-go源码笔记(二)客户端调用过程</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210115dubbogo-30e789b5e6898b-grpc-e8b5b0e59091e4ba91e58e9fe7949fe697b6e4bba3-li><input type=checkbox id=m-zh-cnblog20210115dubbogo-30e789b5e6898b-grpc-e8b5b0e59091e4ba91e58e9fe7949fe697b6e4bba3-check>
<label for=m-zh-cnblog20210115dubbogo-30e789b5e6898b-grpc-e8b5b0e59091e4ba91e58e9fe7949fe697b6e4bba3-check><a href=/zh-cn/blog/2021/01/15/dubbogo-3.0%E7%89%B5%E6%89%8B-grpc-%E8%B5%B0%E5%90%91%E4%BA%91%E5%8E%9F%E7%94%9F%E6%97%B6%E4%BB%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210115dubbogo-30e789b5e6898b-grpc-e8b5b0e59091e4ba91e58e9fe7949fe697b6e4bba3><span>dubbogo 3.0:牵手 gRPC 走向云原生时代</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210115e58886e5b883e5bc8fe4ba8be58aa1e6a186e69eb6-seata-golang-e9809ae4bfa1e6a8a1e59e8be8afa6e8a7a3-li><input type=checkbox id=m-zh-cnblog20210115e58886e5b883e5bc8fe4ba8be58aa1e6a186e69eb6-seata-golang-e9809ae4bfa1e6a8a1e59e8be8afa6e8a7a3-check>
<label for=m-zh-cnblog20210115e58886e5b883e5bc8fe4ba8be58aa1e6a186e69eb6-seata-golang-e9809ae4bfa1e6a8a1e59e8be8afa6e8a7a3-check><a href=/zh-cn/blog/2021/01/15/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1%E6%A1%86%E6%9E%B6-seata-golang-%E9%80%9A%E4%BF%A1%E6%A8%A1%E5%9E%8B%E8%AF%A6%E8%A7%A3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210115e58886e5b883e5bc8fe4ba8be58aa1e6a186e69eb6-seata-golang-e9809ae4bfa1e6a8a1e59e8be8afa6e8a7a3><span>分布式事务框架 seata-golang 通信模型详解</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-go-e58fafe4bfa1e8b083e794a8e5ae9ee78eb0-li><input type=checkbox id=m-zh-cnblog20210114dubbo-go-e58fafe4bfa1e8b083e794a8e5ae9ee78eb0-check>
<label for=m-zh-cnblog20210114dubbo-go-e58fafe4bfa1e8b083e794a8e5ae9ee78eb0-check><a href=/zh-cn/blog/2021/01/14/dubbo-go-%E5%8F%AF%E4%BF%A1%E8%B0%83%E7%94%A8%E5%AE%9E%E7%8E%B0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-go-e58fafe4bfa1e8b083e794a8e5ae9ee78eb0><span>dubbo-go 可信调用实现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-go-e6ba90e7a081e7ac94e8aeb0e4b880server-e7abafe5bc80e590afe69c8de58aa1e8bf87e7a88b-li><input type=checkbox id=m-zh-cnblog20210114dubbo-go-e6ba90e7a081e7ac94e8aeb0e4b880server-e7abafe5bc80e590afe69c8de58aa1e8bf87e7a88b-check>
<label for=m-zh-cnblog20210114dubbo-go-e6ba90e7a081e7ac94e8aeb0e4b880server-e7abafe5bc80e590afe69c8de58aa1e8bf87e7a88b-check><a href=/zh-cn/blog/2021/01/14/dubbo-go-%E6%BA%90%E7%A0%81%E7%AC%94%E8%AE%B0%E4%B8%80server-%E7%AB%AF%E5%BC%80%E5%90%AF%E6%9C%8D%E5%8A%A1%E8%BF%87%E7%A8%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-go-e6ba90e7a081e7ac94e8aeb0e4b880server-e7abafe5bc80e590afe69c8de58aa1e8bf87e7a88b><span>Dubbo-go 源码笔记(一)Server 端开启服务过程</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-go-e4b8ad-rest-e58d8fe8aeaee5ae9ee78eb0-li><input type=checkbox id=m-zh-cnblog20210114dubbo-go-e4b8ad-rest-e58d8fe8aeaee5ae9ee78eb0-check>
<label for=m-zh-cnblog20210114dubbo-go-e4b8ad-rest-e58d8fe8aeaee5ae9ee78eb0-check><a href=/zh-cn/blog/2021/01/14/dubbo-go-%E4%B8%AD-rest-%E5%8D%8F%E8%AE%AE%E5%AE%9E%E7%8E%B0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-go-e4b8ad-rest-e58d8fe8aeaee5ae9ee78eb0><span>dubbo-go 中 REST 协议实现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-go-e4b8ade5b086-kubernets-e58e9fe4bd9ce4b8bae6b3a8e5868ce4b8ade79a84e8aebee8aea1e5928ce5ae9ee78eb0-li><input type=checkbox id=m-zh-cnblog20210114dubbo-go-e4b8ade5b086-kubernets-e58e9fe4bd9ce4b8bae6b3a8e5868ce4b8ade79a84e8aebee8aea1e5928ce5ae9ee78eb0-check>
<label for=m-zh-cnblog20210114dubbo-go-e4b8ade5b086-kubernets-e58e9fe4bd9ce4b8bae6b3a8e5868ce4b8ade79a84e8aebee8aea1e5928ce5ae9ee78eb0-check><a href=/zh-cn/blog/2021/01/14/dubbo-go-%E4%B8%AD%E5%B0%86-kubernets-%E5%8E%9F%E4%BD%9C%E4%B8%BA%E6%B3%A8%E5%86%8C%E4%B8%AD%E7%9A%84%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%AE%9E%E7%8E%B0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-go-e4b8ade5b086-kubernets-e58e9fe4bd9ce4b8bae6b3a8e5868ce4b8ade79a84e8aebee8aea1e5928ce5ae9ee78eb0><span>dubbo-go 中将 Kubernets 原⽣作为注册中⼼的设计和实现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114dubbo-goe5ba94e794a8e7bbb4e5baa6e6b3a8e5868ce6a8a1e59e8b-li><input type=checkbox id=m-zh-cnblog20210114dubbo-goe5ba94e794a8e7bbb4e5baa6e6b3a8e5868ce6a8a1e59e8b-check>
<label for=m-zh-cnblog20210114dubbo-goe5ba94e794a8e7bbb4e5baa6e6b3a8e5868ce6a8a1e59e8b-check><a href=/zh-cn/blog/2021/01/14/dubbo-go%E5%BA%94%E7%94%A8%E7%BB%B4%E5%BA%A6%E6%B3%A8%E5%86%8C%E6%A8%A1%E5%9E%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114dubbo-goe5ba94e794a8e7bbb4e5baa6e6b3a8e5868ce6a8a1e59e8b><span>Dubbo-go应用维度注册模型</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114go-e78988e69cace585a5-dubbo-e7949fe68081e4b880e591a8e5b9b4-li><input type=checkbox id=m-zh-cnblog20210114go-e78988e69cace585a5-dubbo-e7949fe68081e4b880e591a8e5b9b4-check>
<label for=m-zh-cnblog20210114go-e78988e69cace585a5-dubbo-e7949fe68081e4b880e591a8e5b9b4-check><a href=/zh-cn/blog/2021/01/14/go-%E7%89%88%E6%9C%AC%E5%85%A5-dubbo-%E7%94%9F%E6%80%81%E4%B8%80%E5%91%A8%E5%B9%B4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114go-e78988e69cace585a5-dubbo-e7949fe68081e4b880e591a8e5b9b4><span>Go 版本入 Dubbo 生态一周年</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114e8aeb0e4b880e6aca1e59ca8-mosn-e5afb9-dubbodubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96-li><input type=checkbox id=m-zh-cnblog20210114e8aeb0e4b880e6aca1e59ca8-mosn-e5afb9-dubbodubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96-check>
<label for=m-zh-cnblog20210114e8aeb0e4b880e6aca1e59ca8-mosn-e5afb9-dubbodubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96-check><a href=/zh-cn/blog/2021/01/14/%E8%AE%B0%E4%B8%80%E6%AC%A1%E5%9C%A8-mosn-%E5%AF%B9-dubbodubbo-go-hessian2-%E7%9A%84%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114e8aeb0e4b880e6aca1e59ca8-mosn-e5afb9-dubbodubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96><span>记一次在 mosn 对 dubbo、dubbo-go-hessian2 的性能优化</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114e8a7a3e69e84-dubbo-go-e79a84e6a0b8e5bf83e6b3a8e5868ce5bc95e6938e-nacos-li><input type=checkbox id=m-zh-cnblog20210114e8a7a3e69e84-dubbo-go-e79a84e6a0b8e5bf83e6b3a8e5868ce5bc95e6938e-nacos-check>
<label for=m-zh-cnblog20210114e8a7a3e69e84-dubbo-go-e79a84e6a0b8e5bf83e6b3a8e5868ce5bc95e6938e-nacos-check><a href=/zh-cn/blog/2021/01/14/%E8%A7%A3%E6%9E%84-dubbo-go-%E7%9A%84%E6%A0%B8%E5%BF%83%E6%B3%A8%E5%86%8C%E5%BC%95%E6%93%8E-nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114e8a7a3e69e84-dubbo-go-e79a84e6a0b8e5bf83e6b3a8e5868ce5bc95e6938e-nacos><span>解构 Dubbo-go 的核心注册引擎 Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114e5bfabe9809fe4b88ae6898b-dubbo-go-li><input type=checkbox id=m-zh-cnblog20210114e5bfabe9809fe4b88ae6898b-dubbo-go-check>
<label for=m-zh-cnblog20210114e5bfabe9809fe4b88ae6898b-dubbo-go-check><a href=/zh-cn/blog/2021/01/14/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B-dubbo-go/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114e5bfabe9809fe4b88ae6898b-dubbo-go><span>快速上手 dubbo-go</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210114e6b682e9b8a6e699bae883bd-dubbo-go-e4babfe7baa7e6b581e9878fe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2-li><input type=checkbox id=m-zh-cnblog20210114e6b682e9b8a6e699bae883bd-dubbo-go-e4babfe7baa7e6b581e9878fe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2-check>
<label for=m-zh-cnblog20210114e6b682e9b8a6e699bae883bd-dubbo-go-e4babfe7baa7e6b581e9878fe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2-check><a href=/zh-cn/blog/2021/01/14/%E6%B6%82%E9%B8%A6%E6%99%BA%E8%83%BD-dubbo-go-%E4%BA%BF%E7%BA%A7%E6%B5%81%E9%87%8F%E7%9A%84%E5%AE%9E%E8%B7%B5%E4%B8%8E%E6%8E%A2%E7%B4%A2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210114e6b682e9b8a6e699bae883bd-dubbo-go-e4babfe7baa7e6b581e9878fe79a84e5ae9ee8b7b5e4b88ee68ea2e7b4a2><span>涂鸦智能 dubbo-go 亿级流量的实践与探索</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210112dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8b7afe794b1e8a784e58899e58a9fe883bd-li><input type=checkbox id=m-zh-cnblog20210112dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8b7afe794b1e8a784e58899e58a9fe883bd-check>
<label for=m-zh-cnblog20210112dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8b7afe794b1e8a784e58899e58a9fe883bd-check><a href=/zh-cn/blog/2021/01/12/dubbo-go-%E4%B8%AD%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%B7%AF%E7%94%B1%E8%A7%84%E5%88%99%E5%8A%9F%E8%83%BD/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210112dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8b7afe794b1e8a784e58899e58a9fe883bd><span>dubbo-go 中如何实现路由规则功能</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210112e8aeb0e4b880e6aca1e5afb9-dubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96-li><input type=checkbox id=m-zh-cnblog20210112e8aeb0e4b880e6aca1e5afb9-dubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96-check>
<label for=m-zh-cnblog20210112e8aeb0e4b880e6aca1e5afb9-dubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96-check><a href=/zh-cn/blog/2021/01/12/%E8%AE%B0%E4%B8%80%E6%AC%A1%E5%AF%B9-dubbo-go-hessian2-%E7%9A%84%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210112e8aeb0e4b880e6aca1e5afb9-dubbo-go-hessian2-e79a84e680a7e883bde4bc98e58c96><span>记一次对 dubbo-go-hessian2 的性能优化</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e8b8a9e59d91e8aeb0-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e8b8a9e59d91e8aeb0-check>
<label for=m-zh-cnblog20210111dubbo-go-e8b8a9e59d91e8aeb0-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E8%B8%A9%E5%9D%91%E8%AE%B0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e8b8a9e59d91e8aeb0><span>Dubbo Go 踩坑记</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e79a84e5898de4b896e4bb8ae7949f-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e79a84e5898de4b896e4bb8ae7949f-check>
<label for=m-zh-cnblog20210111dubbo-go-e79a84e5898de4b896e4bb8ae7949f-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E7%9A%84%E5%89%8D%E4%B8%96%E4%BB%8A%E7%94%9F/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e79a84e5898de4b896e4bb8ae7949f><span>Dubbo Go 的前世今生</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111e586b2e4b88ae4ba91e58e9fe7949fdubbo-e58f91e5b883-go-e78988e69cac-li><input type=checkbox id=m-zh-cnblog20210111e586b2e4b88ae4ba91e58e9fe7949fdubbo-e58f91e5b883-go-e78988e69cac-check>
<label for=m-zh-cnblog20210111e586b2e4b88ae4ba91e58e9fe7949fdubbo-e58f91e5b883-go-e78988e69cac-check><a href=/zh-cn/blog/2021/01/11/%E5%86%B2%E4%B8%8A%E4%BA%91%E5%8E%9F%E7%94%9Fdubbo-%E5%8F%91%E5%B8%83-go-%E7%89%88%E6%9C%AC/ title="冲上云原生,Dubbo 发布 Go 版本" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111e586b2e4b88ae4ba91e58e9fe7949fdubbo-e58f91e5b883-go-e78988e69cac><span>Dubbo Go 发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e5bfabe9809fe5bc80e5a78b-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e5bfabe9809fe5bc80e5a78b-check>
<label for=m-zh-cnblog20210111dubbo-go-e5bfabe9809fe5bc80e5a78b-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e5bfabe9809fe5bc80e5a78b><span>Dubbo Go 快速开始</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e4b8ad-metrics-e79a84e8aebee8aea1-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e4b8ad-metrics-e79a84e8aebee8aea1-check>
<label for=m-zh-cnblog20210111dubbo-go-e4b8ad-metrics-e79a84e8aebee8aea1-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E4%B8%AD-metrics-%E7%9A%84%E8%AE%BE%E8%AE%A1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e4b8ad-metrics-e79a84e8aebee8aea1><span>Dubbo Go 中 metrics 的设计</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e4b8ade79a84-tps-limit-e8aebee8aea1e4b88ee5ae9ee78eb0-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e4b8ade79a84-tps-limit-e8aebee8aea1e4b88ee5ae9ee78eb0-check>
<label for=m-zh-cnblog20210111dubbo-go-e4b8ade79a84-tps-limit-e8aebee8aea1e4b88ee5ae9ee78eb0-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E4%B8%AD%E7%9A%84-tps-limit-%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/ title="Dubbo Go 中的 TPS Limit 设计与实现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e4b8ade79a84-tps-limit-e8aebee8aea1e4b88ee5ae9ee78eb0><span>dubbo-go tps limit</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8bf9ce7a88be9858de7bdaee7aea1e79086-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8bf9ce7a88be9858de7bdaee7aea1e79086-check>
<label for=m-zh-cnblog20210111dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8bf9ce7a88be9858de7bdaee7aea1e79086-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-%E4%B8%AD%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%BF%9C%E7%A8%8B%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-e4b8ade5a682e4bd95e5ae9ee78eb0e8bf9ce7a88be9858de7bdaee7aea1e79086><span>dubbo-go 中如何实现远程配置管理?</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111dubbo-go-getty-e5bc80e58f91e697a5e5bf97-li><input type=checkbox id=m-zh-cnblog20210111dubbo-go-getty-e5bc80e58f91e697a5e5bf97-check>
<label for=m-zh-cnblog20210111dubbo-go-getty-e5bc80e58f91e697a5e5bf97-check><a href=/zh-cn/blog/2021/01/11/dubbo-go-getty-%E5%BC%80%E5%8F%91%E6%97%A5%E5%BF%97/ title="Dubbo Go Getty 开发日志" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111dubbo-go-getty-e5bc80e58f91e697a5e5bf97><span>getty 开发日志</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111e697a0e7bc9de8a194e68ea5-grpc-e4b88e-dubbo-go-li><input type=checkbox id=m-zh-cnblog20210111e697a0e7bc9de8a194e68ea5-grpc-e4b88e-dubbo-go-check>
<label for=m-zh-cnblog20210111e697a0e7bc9de8a194e68ea5-grpc-e4b88e-dubbo-go-check><a href=/zh-cn/blog/2021/01/11/%E6%97%A0%E7%BC%9D%E8%A1%94%E6%8E%A5-grpc-%E4%B8%8E-dubbo-go/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111e697a0e7bc9de8a194e68ea5-grpc-e4b88e-dubbo-go><span>无缝衔接 gRPC 与 dubbo-go</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210111e59ca8dubbo-goe4b8ade4bdbfe794a8sentinel-li><input type=checkbox id=m-zh-cnblog20210111e59ca8dubbo-goe4b8ade4bdbfe794a8sentinel-check>
<label for=m-zh-cnblog20210111e59ca8dubbo-goe4b8ade4bdbfe794a8sentinel-check><a href=/zh-cn/blog/2021/01/11/%E5%9C%A8dubbo-go%E4%B8%AD%E4%BD%BF%E7%94%A8sentinel/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210111e59ca8dubbo-goe4b8ade4bdbfe794a8sentinel><span>在dubbo-go中使用sentinel</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogrust-li><input type=checkbox id=m-zh-cnblogrust-check>
<label for=m-zh-cnblogrust-check><a href=/zh-cn/blog/rust/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogrust><span>Rust</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20221023apache-dubbo-e5a49ae8afade8a880e4bd93e7b3bbe5868de6b7bbe696b0e59198e9a696e4b8aa-rust-e8afade8a880e78988e69cace6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20221023apache-dubbo-e5a49ae8afade8a880e4bd93e7b3bbe5868de6b7bbe696b0e59198e9a696e4b8aa-rust-e8afade8a880e78988e69cace6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20221023apache-dubbo-e5a49ae8afade8a880e4bd93e7b3bbe5868de6b7bbe696b0e59198e9a696e4b8aa-rust-e8afade8a880e78988e69cace6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2022/10/23/apache-dubbo-%E5%A4%9A%E8%AF%AD%E8%A8%80%E4%BD%93%E7%B3%BB%E5%86%8D%E6%B7%BB%E6%96%B0%E5%91%98%E9%A6%96%E4%B8%AA-rust-%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ title="Apache Dubbo 多语言体系再添新员:首个 Rust 语言版本正式发布" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20221023apache-dubbo-e5a49ae8afade8a880e4bd93e7b3bbe5868de6b7bbe696b0e59198e9a696e4b8aa-rust-e8afade8a880e78988e69cace6ada3e5bc8fe58f91e5b883><span>Dubbo 发布首个 Rust 语言版本实现</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnblogpixiu-li><input type=checkbox id=m-zh-cnblogpixiu-check>
<label for=m-zh-cnblogpixiu-check><a href=/zh-cn/blog/pixiu/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnblogpixiu><span>Pixiu</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20220219e8b088e8b088pixiue79a84filter-li><input type=checkbox id=m-zh-cnblog20220219e8b088e8b088pixiue79a84filter-check>
<label for=m-zh-cnblog20220219e8b088e8b088pixiue79a84filter-check><a href=/zh-cn/blog/2022/02/19/%E8%B0%88%E8%B0%88pixiu%E7%9A%84filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20220219e8b088e8b088pixiue79a84filter><span>谈谈Pixiu的Filter</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20210825dubbo-e8b7a8e8afade8a880e8b083e794a8e7a59ee585bddubbo-go-pixiu-li><input type=checkbox id=m-zh-cnblog20210825dubbo-e8b7a8e8afade8a880e8b083e794a8e7a59ee585bddubbo-go-pixiu-check>
<label for=m-zh-cnblog20210825dubbo-e8b7a8e8afade8a880e8b083e794a8e7a59ee585bddubbo-go-pixiu-check><a href=/zh-cn/blog/2021/08/25/dubbo-%E8%B7%A8%E8%AF%AD%E8%A8%80%E8%B0%83%E7%94%A8%E7%A5%9E%E5%85%BDdubbo-go-pixiu/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20210825dubbo-e8b7a8e8afade8a880e8b083e794a8e7a59ee585bddubbo-go-pixiu><span>Dubbo 跨语言调用神兽:dubbo-go-pixiu</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007apache-dubbo-e9a696e4b8aa-nodejs-30-alpha-e78988e69cace6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20231007apache-dubbo-e9a696e4b8aa-nodejs-30-alpha-e78988e69cace6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20231007apache-dubbo-e9a696e4b8aa-nodejs-30-alpha-e78988e69cace6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2023/10/07/apache-dubbo-%E9%A6%96%E4%B8%AA-node.js-3.0-alpha-%E7%89%88%E6%9C%AC%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007apache-dubbo-e9a696e4b8aa-nodejs-30-alpha-e78988e69cace6ada3e5bc8fe58f91e5b883><span>Apache Dubbo 首个 Node.js 3.0-alpha 版本正式发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnblog20231007web-e6b58fe8a788e599a8e9a1b5e99da2e4b99fe883bde8aebfe997aedubbogrpce5beaee69c8de58aa1dubbo-js-alphae78988e69cace6ada3e5bc8fe58f91e5b883-li><input type=checkbox id=m-zh-cnblog20231007web-e6b58fe8a788e599a8e9a1b5e99da2e4b99fe883bde8aebfe997aedubbogrpce5beaee69c8de58aa1dubbo-js-alphae78988e69cace6ada3e5bc8fe58f91e5b883-check>
<label for=m-zh-cnblog20231007web-e6b58fe8a788e599a8e9a1b5e99da2e4b99fe883bde8aebfe997aedubbogrpce5beaee69c8de58aa1dubbo-js-alphae78988e69cace6ada3e5bc8fe58f91e5b883-check><a href=/zh-cn/blog/2023/10/07/web-%E6%B5%8F%E8%A7%88%E5%99%A8%E9%A1%B5%E9%9D%A2%E4%B9%9F%E8%83%BD%E8%AE%BF%E9%97%AEdubbogrpc%E5%BE%AE%E6%9C%8D%E5%8A%A1dubbo-js-alpha%E7%89%88%E6%9C%AC%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnblog20231007web-e6b58fe8a788e599a8e9a1b5e99da2e4b99fe883bde8aebfe997aedubbogrpce5beaee69c8de58aa1dubbo-js-alphae78988e69cace6ada3e5bc8fe58f91e5b883><span>Web 浏览器页面也能访问dubbo、grpc微服务?Dubbo-js alpha版本正式发布</span></a></label></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://cn.dubbo.apache.org/zh-cn/blog/>博客</a></li><li class=breadcrumb-item><a href=https://cn.dubbo.apache.org/zh-cn/blog/proposals/>技术方案</a></li><li class="breadcrumb-item active" aria-current=page><a href=https://cn.dubbo.apache.org/zh-cn/blog/2023/02/20/%E6%8C%87%E6%A0%87%E5%9F%8B%E7%82%B9/ aria-disabled=true class="btn-link disabled">指标埋点</a></li></ol></nav><section id=deprecation-warning><div class="content deprecation-warning pageinfo outdated-blog"><p>该文章内容发布已经超过一年,请注意检查文章中内容是否过时。</p></div></section><div class=td-content><h1>指标埋点</h1><div class="td-byline mb-4">借由 <b>Song Xiaosheng</b> |
<time datetime=2023-02-20 class=text-muted>Monday, February 20, 2023</time></div><header class=article-meta></header><h1 id=概述>概述</h1><h2 id=1-指标接入说明>1. 指标接入说明</h2><h2 id=2-指标体系设计>2. 指标体系设计</h2><p>Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送</p><ul><li>指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储</li><li>本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出</li><li>指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus</li></ul><h2 id=3-结构设计>3. 结构设计</h2><ul><li>移除原来与 Metrics 相关的类</li><li>创建新模块 dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig 作为该模块的配置类</li><li>使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换</li></ul><h2 id=4-数据流转>4. 数据流转</h2><p><img src=/imgs/docs3-v2/java-sdk/observability/dataflow.png alt=img.png></p><h2 id=5-目标>5. 目标</h2><p>指标接口将提供一个 MetricsService,该 Service 不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> <span style=color:#268bd2>MetricsService</span> {
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * Default {@link MetricsService} extension name.
</span></span></span><span style=display:flex><span><span style=color:#586e75> */</span>
</span></span><span style=display:flex><span> String DEFAULT_EXTENSION_NAME <span style=color:#719e07>=</span> <span style=color:#2aa198>&#34;default&#34;</span>;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * The contract version of {@link MetricsService}, the future update must make sure compatible.
</span></span></span><span style=display:flex><span><span style=color:#586e75> */</span>
</span></span><span style=display:flex><span> String VERSION <span style=color:#719e07>=</span> <span style=color:#2aa198>&#34;1.0.0&#34;</span>;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * Get metrics by prefixes
</span></span></span><span style=display:flex><span><span style=color:#586e75> *
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param categories categories
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @return metrics - key=MetricCategory value=MetricsEntityList
</span></span></span><span style=display:flex><span><span style=color:#586e75> */</span>
</span></span><span style=display:flex><span> Map<span style=color:#719e07>&lt;</span>MetricsCategory, List<span style=color:#719e07>&lt;</span>MetricsEntity<span style=color:#719e07>&gt;&gt;</span> <span style=color:#268bd2>getMetricsByCategories</span>(List<span style=color:#719e07>&lt;</span>MetricsCategory<span style=color:#719e07>&gt;</span> categories);
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * Get metrics by interface and prefixes
</span></span></span><span style=display:flex><span><span style=color:#586e75> *
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param serviceUniqueName serviceUniqueName (eg.group/interfaceName:version)
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param categories categories
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @return metrics - key=MetricCategory value=MetricsEntityList
</span></span></span><span style=display:flex><span><span style=color:#586e75> */</span>
</span></span><span style=display:flex><span> Map<span style=color:#719e07>&lt;</span>MetricsCategory, List<span style=color:#719e07>&lt;</span>MetricsEntity<span style=color:#719e07>&gt;&gt;</span> <span style=color:#268bd2>getMetricsByCategories</span>(String serviceUniqueName, List<span style=color:#719e07>&lt;</span>MetricsCategory<span style=color:#719e07>&gt;</span> categories);
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * Get metrics by interface、method and prefixes
</span></span></span><span style=display:flex><span><span style=color:#586e75> *
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param serviceUniqueName serviceUniqueName (eg.group/interfaceName:version)
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param methodName methodName
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param parameterTypes method parameter types
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @param categories categories
</span></span></span><span style=display:flex><span><span style=color:#586e75> * @return metrics - key=MetricCategory value=MetricsEntityList
</span></span></span><span style=display:flex><span><span style=color:#586e75> */</span>
</span></span><span style=display:flex><span> Map<span style=color:#719e07>&lt;</span>MetricsCategory, List<span style=color:#719e07>&lt;</span>MetricsEntity<span style=color:#719e07>&gt;&gt;</span> <span style=color:#268bd2>getMetricsByCategories</span>(String serviceUniqueName, String methodName, Class<span style=color:#719e07>&lt;?&gt;[]</span> parameterTypes, List<span style=color:#719e07>&lt;</span>MetricsCategory<span style=color:#719e07>&gt;</span> categories);
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>其中 MetricsCategory 设计如下:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>enum</span> MetricsCategory {
</span></span><span style=display:flex><span> RT,
</span></span><span style=display:flex><span> QPS,
</span></span><span style=display:flex><span> REQUESTS,
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>MetricsEntity 设计如下</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsEntity</span> {
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String name;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> Map<span style=color:#719e07>&lt;</span>String, String<span style=color:#719e07>&gt;</span> tags;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> MetricsCategory category;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> Object value;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h1 id=指标收集>指标收集</h1><h2 id=1-嵌入位置>1. 嵌入位置</h2><p>Dubbo 架构图如下
<img src=/imgs/docs3-v2/java-sdk/observability/dubbo.png alt=img.png></p><p>在 provider 中添加一层 MetricsFilter 重写 invoke 方法嵌入调用链路用于收集指标,用 try-catch-finally 处理,核心代码如下</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>@Activate</span>(group <span style=color:#719e07>=</span> PROVIDER, order <span style=color:#719e07>=</span> <span style=color:#719e07>-</span>1)
</span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsFilter</span> <span style=color:#268bd2>implements</span> Filter, ScopeModelAware {
</span></span><span style=display:flex><span> <span style=color:#268bd2>@Override</span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> Result <span style=color:#268bd2>invoke</span>(Invoker<span style=color:#719e07>&lt;?&gt;</span> invoker, Invocation invocation) <span style=color:#268bd2>throws</span> RpcException {
</span></span><span style=display:flex><span> collector.increaseTotalRequests(interfaceName, methodName, group, version);
</span></span><span style=display:flex><span> collector.increaseProcessingRequests(interfaceName, methodName, group, version);
</span></span><span style=display:flex><span> Long startTime <span style=color:#719e07>=</span> System.currentTimeMillis();
</span></span><span style=display:flex><span> <span style=color:#719e07>try</span> {
</span></span><span style=display:flex><span> Result invoke <span style=color:#719e07>=</span> invoker.invoke(invocation);
</span></span><span style=display:flex><span> collector.increaseSucceedRequests(interfaceName, methodName, group, version);
</span></span><span style=display:flex><span> <span style=color:#719e07>return</span> invoke;
</span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (RpcException e) {
</span></span><span style=display:flex><span> collector.increaseFailedRequests(interfaceName, methodName, group, version);
</span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> e;
</span></span><span style=display:flex><span> } <span style=color:#719e07>finally</span> {
</span></span><span style=display:flex><span> Long endTime <span style=color:#719e07>=</span> System.currentTimeMillis();
</span></span><span style=display:flex><span> Long rt <span style=color:#719e07>=</span> endTime <span style=color:#719e07>-</span> startTime;
</span></span><span style=display:flex><span> collector.addRT(interfaceName, methodName, group, version, rt);
</span></span><span style=display:flex><span> collector.decreaseProcessingRequests(interfaceName, methodName, group, version);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=2-指标标识>2. 指标标识</h2><p>用以下五个属性作为隔离级别区分标识不同方法,也是各个 ConcurrentHashMap 的 key</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MethodMetric</span> {
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String applicationName;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String interfaceName;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String methodName;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String group;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String version;
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=3-基础指标>3. 基础指标</h2><p>指标通过 common 模块下的 MetricsCollector 存储所有指标数据</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>DefaultMetricsCollector</span> <span style=color:#268bd2>implements</span> MetricsCollector {
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> Boolean collectEnabled <span style=color:#719e07>=</span> <span style=color:#cb4b16>false</span>;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> List<span style=color:#719e07>&lt;</span>MetricsListener<span style=color:#719e07>&gt;</span> listeners <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ArrayList<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> ApplicationModel applicationModel;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> String applicationName;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> totalRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> succeedRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> failedRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> processingRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> lastRT <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, LongAccumulator<span style=color:#719e07>&gt;</span> minRT <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, LongAccumulator<span style=color:#719e07>&gt;</span> maxRT <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> avgRT <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> totalRT <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, AtomicLong<span style=color:#719e07>&gt;</span> rtCount <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> }
</span></span></code></pre></div><h1 id=本地聚合>本地聚合</h1><p>本地聚合指将一些简单的指标通过计算获取各分位数指标的过程</p><h2 id=1-参数设计>1. 参数设计</h2><p>收集指标时,默认只收集基础指标,而一些单机聚合指标则需要开启服务柔性或者本地聚合后另起线程计算。此处若开启服务柔性,则本地聚合默认开启</p><h3 id=11-本地聚合开启方式>1.1 本地聚合开启方式</h3><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=display:flex><span><span style=color:#268bd2>&lt;dubbo:metrics&gt;</span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>&lt;dubbo:aggregation</span> enable=<span style=color:#2aa198>&#34;true&#34;</span> <span style=color:#268bd2>/&gt;</span>
</span></span><span style=display:flex><span><span style=color:#268bd2>&lt;/dubbo:metrics&gt;</span>
</span></span></code></pre></div><h3 id=12-指标聚合参数>1.2 指标聚合参数</h3><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=display:flex><span><span style=color:#268bd2>&lt;dubbo:metrics&gt;</span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>&lt;dubbo:aggregation</span> enable=<span style=color:#2aa198>&#34;true&#34;</span> bucket-num=<span style=color:#2aa198>&#34;5&#34;</span> time-window-seconds=<span style=color:#2aa198>&#34;10&#34;</span><span style=color:#268bd2>/&gt;</span>
</span></span><span style=display:flex><span><span style=color:#268bd2>&lt;/dubbo:metrics&gt;</span>
</span></span></code></pre></div><h2 id=2-具体指标>2. 具体指标</h2><p>Dubbo的指标模块帮助用户从外部观察正在运行的系统的内部服务状况 ,Dubbo参考 <a href=https://sre.google/sre-book/monitoring-distributed-systems/>&ldquo;四大黄金信号&rdquo;</a><em>RED方法</em><em>USE方法</em>等理论并结合实际企业应用场景从不同维度统计了丰富的关键指标,关注这些核心指标对于提供可用性的服务是至关重要的。</p><p>Dubbo的关键指标包含:<strong>延迟(Latency)</strong><strong>流量(Traffic)</strong><strong>错误(Errors)</strong><strong>饱和度(Saturation)</strong> 等内容 。同时,为了更好的监测服务运行状态,Dubbo 还提供了对核心组件状态的监控,如Dubbo应用信息、线程池信息、三大中心交互的指标数据等。</p><p>在Dubbo中主要包含如下监控指标:</p><table><thead><tr><th style=text-align:left></th><th style=text-align:left>基础设施</th><th style=text-align:left>业务监控</th></tr></thead><tbody><tr><td style=text-align:left>延迟类</td><td style=text-align:left>IO 等待; 网络延迟;</td><td style=text-align:left>接口、服务的平均耗时、TP90、TP99、TP999 等</td></tr><tr><td style=text-align:left>流量类</td><td style=text-align:left>网络和磁盘 IO;</td><td style=text-align:left>服务层面的 QPS、</td></tr><tr><td style=text-align:left>错误类</td><td style=text-align:left>宕机; 磁盘(坏盘或文件系统错误); 进程或端口挂掉; 网络丢包;</td><td style=text-align:left>错误日志;业务状态码、错误码走势;</td></tr><tr><td style=text-align:left>饱和度类</td><td style=text-align:left>系统资源利用率: CPU、内存、磁盘、网络等; 饱和度:等待线程数,队列积压长度;</td><td style=text-align:left>这里主要包含JVM、线程池等</td></tr></tbody></table><ul><li>qps: 基于滑动窗口获取动态qps</li><li>rt: 基于滑动窗口获取动态rt</li><li>失败请求数: 基于滑动窗口获取最近时间内的失败请求数</li><li>成功请求数: 基于滑动窗口获取最近时间内的成功请求数</li><li>处理中请求数: 前后增加Filter简单统计</li><li>具体指标依赖滑动窗口,额外使用 AggregateMetricsCollector 收集</li></ul><p>输出到普罗米修斯的相关指标可以参考的内容如下:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-gdscript3 data-lang=gdscript3><span style=display:flex><span><span style=color:#586e75># HELP jvm_gc_live_data_size_bytes Size of long-lived heap memory pool after reclamation</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_gc_live_data_size_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_gc_live_data_size_bytes <span style=color:#2aa198>1.6086528E7</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP requests_succeed_aggregate Aggregated Succeed Requests</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE requests_succeed_aggregate gauge</span>
</span></span><span style=display:flex><span>requests_succeed_aggregate{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>39.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_buffer_memory_used_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_buffer_memory_used_bytes{id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;direct&#34;</span>,} <span style=color:#2aa198>1.679975E7</span>
</span></span><span style=display:flex><span>jvm_buffer_memory_used_bytes{id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;mapped&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the (young) heap memory pool after one GC to before the next</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_gc_memory_allocated_bytes_total counter</span>
</span></span><span style=display:flex><span>jvm_gc_memory_allocated_bytes_total <span style=color:#2aa198>2.9884416E9</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP requests_total_aggregate Aggregated Total Requests</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE requests_total_aggregate gauge</span>
</span></span><span style=display:flex><span>requests_total_aggregate{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>39.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP system_load_average_1m The sum of the number of runnable entities queued to available processors and the number of runnable entities running on the available processors averaged over a period of time</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE system_load_average_1m gauge</span>
</span></span><span style=display:flex><span>system_load_average_1m <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP system_cpu_usage The &#34;recent cpu usage&#34; for the whole system</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE system_cpu_usage gauge</span>
</span></span><span style=display:flex><span>system_cpu_usage <span style=color:#2aa198>0.015802269043760128</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_threads_peak_threads gauge</span>
</span></span><span style=display:flex><span>jvm_threads_peak_threads <span style=color:#2aa198>40.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP requests_processing Processing Requests</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE requests_processing gauge</span>
</span></span><span style=display:flex><span>requests_processing{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_memory_max_bytes The maximum amount of memory in bytes that can be used for memory management</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_memory_max_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;profiled nmethods&#39;&#34;</span>,} <span style=color:#2aa198>1.22912768E8</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Survivor Space&#34;</span>,} <span style=color:#719e07>-</span><span style=color:#2aa198>1.0</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Old Gen&#34;</span>,} <span style=color:#2aa198>9.52107008E8</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Metaspace&#34;</span>,} <span style=color:#719e07>-</span><span style=color:#2aa198>1.0</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Eden Space&#34;</span>,} <span style=color:#719e07>-</span><span style=color:#2aa198>1.0</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;non-nmethods&#39;&#34;</span>,} <span style=color:#2aa198>5828608.0</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Compressed Class Space&#34;</span>,} <span style=color:#2aa198>1.073741824E9</span>
</span></span><span style=display:flex><span>jvm_memory_max_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;non-profiled nmethods&#39;&#34;</span>,} <span style=color:#2aa198>1.22916864E8</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_threads_states_threads The current number of threads having BLOCKED state</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_threads_states_threads gauge</span>
</span></span><span style=display:flex><span>jvm_threads_states_threads{state<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;blocked&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span>jvm_threads_states_threads{state<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;runnable&#34;</span>,} <span style=color:#2aa198>10.0</span>
</span></span><span style=display:flex><span>jvm_threads_states_threads{state<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;waiting&#34;</span>,} <span style=color:#2aa198>16.0</span>
</span></span><span style=display:flex><span>jvm_threads_states_threads{state<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;timed-waiting&#34;</span>,} <span style=color:#2aa198>13.0</span>
</span></span><span style=display:flex><span>jvm_threads_states_threads{state<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;new&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span>jvm_threads_states_threads{state<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;terminated&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_buffer_total_capacity_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_buffer_total_capacity_bytes{id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;direct&#34;</span>,} <span style=color:#2aa198>1.6799749E7</span>
</span></span><span style=display:flex><span>jvm_buffer_total_capacity_bytes{id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;mapped&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_p99 Response Time P99</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_p99 gauge</span>
</span></span><span style=display:flex><span>rt_p99{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>1.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_memory_used_bytes The amount of used memory</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_memory_used_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Survivor Space&#34;</span>,} <span style=color:#2aa198>1048576.0</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;profiled nmethods&#39;&#34;</span>,} <span style=color:#2aa198>1.462464E7</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Old Gen&#34;</span>,} <span style=color:#2aa198>1.6098728E7</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Metaspace&#34;</span>,} <span style=color:#2aa198>4.0126952E7</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Eden Space&#34;</span>,} <span style=color:#2aa198>8.2837504E7</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;non-nmethods&#39;&#34;</span>,} <span style=color:#2aa198>1372032.0</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Compressed Class Space&#34;</span>,} <span style=color:#2aa198>4519248.0</span>
</span></span><span style=display:flex><span>jvm_memory_used_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;non-profiled nmethods&#39;&#34;</span>,} <span style=color:#2aa198>5697408.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP qps Query Per Seconds</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE qps gauge</span>
</span></span><span style=display:flex><span>qps{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>0.3333333333333333</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_min Min Response Time</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_min gauge</span>
</span></span><span style=display:flex><span>rt_min{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_buffer_count_buffers gauge</span>
</span></span><span style=display:flex><span>jvm_buffer_count_buffers{id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;mapped&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span>jvm_buffer_count_buffers{id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;direct&#34;</span>,} <span style=color:#2aa198>10.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP system_cpu_count The number of processors available to the Java virtual machine</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE system_cpu_count gauge</span>
</span></span><span style=display:flex><span>system_cpu_count <span style=color:#2aa198>2.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_classes_loaded_classes gauge</span>
</span></span><span style=display:flex><span>jvm_classes_loaded_classes <span style=color:#2aa198>7325.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_total Total Response Time</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_total gauge</span>
</span></span><span style=display:flex><span>rt_total{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>2783.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_last Last Response Time</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_last gauge</span>
</span></span><span style=display:flex><span>rt_last{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_gc_memory_promoted_bytes_total counter</span>
</span></span><span style=display:flex><span>jvm_gc_memory_promoted_bytes_total <span style=color:#2aa198>1.4450952E7</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_gc_pause_seconds Time spent in GC pause</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_gc_pause_seconds summary</span>
</span></span><span style=display:flex><span>jvm_gc_pause_seconds_count{action<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;end of minor GC&#34;</span>,cause<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Metadata GC Threshold&#34;</span>,} <span style=color:#2aa198>2.0</span>
</span></span><span style=display:flex><span>jvm_gc_pause_seconds_sum{action<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;end of minor GC&#34;</span>,cause<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Metadata GC Threshold&#34;</span>,} <span style=color:#2aa198>0.026</span>
</span></span><span style=display:flex><span>jvm_gc_pause_seconds_count{action<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;end of minor GC&#34;</span>,cause<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Evacuation Pause&#34;</span>,} <span style=color:#2aa198>37.0</span>
</span></span><span style=display:flex><span>jvm_gc_pause_seconds_sum{action<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;end of minor GC&#34;</span>,cause<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Evacuation Pause&#34;</span>,} <span style=color:#2aa198>0.156</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_gc_pause_seconds_max Time spent in GC pause</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_gc_pause_seconds_max gauge</span>
</span></span><span style=display:flex><span>jvm_gc_pause_seconds_max{action<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;end of minor GC&#34;</span>,cause<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Metadata GC Threshold&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span>jvm_gc_pause_seconds_max{action<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;end of minor GC&#34;</span>,cause<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Evacuation Pause&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_p95 Response Time P95</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_p95 gauge</span>
</span></span><span style=display:flex><span>rt_p95{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP requests_total Total Requests</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE requests_total gauge</span>
</span></span><span style=display:flex><span>requests_total{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>27738.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP process_cpu_usage The &#34;recent cpu usage&#34; for the Java Virtual Machine process</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE process_cpu_usage gauge</span>
</span></span><span style=display:flex><span>process_cpu_usage <span style=color:#2aa198>8.103727714748784E-4</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_max Max Response Time</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_max gauge</span>
</span></span><span style=display:flex><span>rt_max{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>4.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_gc_max_data_size_bytes Max size of long-lived heap memory pool</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_gc_max_data_size_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_gc_max_data_size_bytes <span style=color:#2aa198>9.52107008E8</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_threads_live_threads gauge</span>
</span></span><span style=display:flex><span>jvm_threads_live_threads <span style=color:#2aa198>39.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_threads_daemon_threads The current number of live daemon threads</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_threads_daemon_threads gauge</span>
</span></span><span style=display:flex><span>jvm_threads_daemon_threads <span style=color:#2aa198>36.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_classes_unloaded_classes_total counter</span>
</span></span><span style=display:flex><span>jvm_classes_unloaded_classes_total <span style=color:#2aa198>0.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE jvm_memory_committed_bytes gauge</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;profiled nmethods&#39;&#34;</span>,} <span style=color:#2aa198>1.4680064E7</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Survivor Space&#34;</span>,} <span style=color:#2aa198>1048576.0</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Old Gen&#34;</span>,} <span style=color:#2aa198>5.24288E7</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Metaspace&#34;</span>,} <span style=color:#2aa198>4.1623552E7</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;heap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;G1 Eden Space&#34;</span>,} <span style=color:#2aa198>9.0177536E7</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;non-nmethods&#39;&#34;</span>,} <span style=color:#2aa198>2555904.0</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;Compressed Class Space&#34;</span>,} <span style=color:#2aa198>5111808.0</span>
</span></span><span style=display:flex><span>jvm_memory_committed_bytes{area<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;nonheap&#34;</span>,id<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;CodeHeap &#39;non-profiled nmethods&#39;&#34;</span>,} <span style=color:#2aa198>5701632.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP requests_succeed Succeed Requests</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE requests_succeed gauge</span>
</span></span><span style=display:flex><span>requests_succeed{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>27738.0</span>
</span></span><span style=display:flex><span><span style=color:#586e75># HELP rt_avg Average Response Time</span>
</span></span><span style=display:flex><span><span style=color:#586e75># TYPE rt_avg gauge</span>
</span></span><span style=display:flex><span>rt_avg{application_name<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;metrics-provider&#34;</span>,group<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,hostname<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;iZ8lgm9icspkthZ&#34;</span>,interface<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;org.apache.dubbo.samples.metrics.prometheus.api.DemoService&#34;</span>,ip<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;172.28.236.104&#34;</span>,method<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;sayHello&#34;</span>,version<span style=color:#719e07>=</span><span style=color:#2aa198>&#34;&#34;</span>,} <span style=color:#2aa198>0.0</span>
</span></span></code></pre></div><h2 id=聚合收集器>聚合收集器</h2><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>AggregateMetricsCollector</span> <span style=color:#268bd2>implements</span> MetricsCollector, MetricsListener {
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#dc322f>int</span> bucketNum;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#dc322f>int</span> timeWindowSeconds;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, TimeWindowCounter<span style=color:#719e07>&gt;</span> totalRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, TimeWindowCounter<span style=color:#719e07>&gt;</span> succeedRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, TimeWindowCounter<span style=color:#719e07>&gt;</span> failedRequests <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, TimeWindowCounter<span style=color:#719e07>&gt;</span> qps <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Map<span style=color:#719e07>&lt;</span>MethodMetric, TimeWindowQuantile<span style=color:#719e07>&gt;</span> rt <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ConcurrentHashMap<span style=color:#719e07>&lt;&gt;</span>();
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> ApplicationModel applicationModel;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>static</span> <span style=color:#268bd2>final</span> Integer DEFAULT_COMPRESSION <span style=color:#719e07>=</span> 100;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>static</span> <span style=color:#268bd2>final</span> Integer DEFAULT_BUCKET_NUM <span style=color:#719e07>=</span> 10;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>static</span> <span style=color:#268bd2>final</span> Integer DEFAULT_TIME_WINDOW_SECONDS <span style=color:#719e07>=</span> 120;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#586e75>//在构造函数中解析配置信息</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>AggregateMetricsCollector</span>(ApplicationModel applicationModel) {
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.applicationModel <span style=color:#719e07>=</span> applicationModel;
</span></span><span style=display:flex><span> ConfigManager configManager <span style=color:#719e07>=</span> applicationModel.getApplicationConfigManager();
</span></span><span style=display:flex><span> MetricsConfig config <span style=color:#719e07>=</span> configManager.getMetrics().orElse(<span style=color:#cb4b16>null</span>);
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (config <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>&amp;&amp;</span> config.getAggregation() <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>&amp;&amp;</span> Boolean.TRUE.equals(config.getAggregation().getEnabled())) {
</span></span><span style=display:flex><span> <span style=color:#586e75>// only registered when aggregation is enabled.</span>
</span></span><span style=display:flex><span> registerListener();
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> AggregationConfig aggregation <span style=color:#719e07>=</span> config.getAggregation();
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.bucketNum <span style=color:#719e07>=</span> aggregation.getBucketNum() <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>?</span> DEFAULT_BUCKET_NUM : aggregation.getBucketNum();
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.timeWindowSeconds <span style=color:#719e07>=</span> aggregation.getTimeWindowSeconds() <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>?</span> DEFAULT_TIME_WINDOW_SECONDS : aggregation.getTimeWindowSeconds();
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>如果开启了本地聚合,则通过 spring 的 BeanFactory 添加监听,将 AggregateMetricsCollector 与 DefaultMetricsCollector 绑定,实现一种生产者消费者的模式,DefaultMetricsCollector 中使用监听器列表,方便扩展</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>private</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>registerListener</span>() {
</span></span><span style=display:flex><span> applicationModel.getBeanFactory().getBean(DefaultMetricsCollector.class).addListener(<span style=color:#719e07>this</span>);
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=3-指标聚合>3. 指标聚合</h2><p>滑动窗口
假设我们初始有6个bucket,每个窗口时间设置为2分钟
每次写入指标数据时,会将数据分别写入6个bucket内,每隔两分钟移动一个bucket并且清除原来bucket内的数据
读取指标时,读取当前current指向的bucket,以达到滑动窗口的效果
具体如下图所示,实现了当前 bucket 内存储了配置中设置的 bucket 生命周期内的数据,即近期数据
<img src=/imgs/docs3-v2/java-sdk/observability/aggre.png alt=img_1.png></p><p>在每个bucket内,使用<strong>TDigest 算法</strong>计算分位数指标</p><blockquote><p><strong>TDigest 算法</strong>(极端分位精确度高,如p1 p99,中间分位精确度低,如p50),相关资料如下</p><ul><li><a href=https://op8867555.github.io/posts/2018-04-09-tdigest.html>https://op8867555.github.io/posts/2018-04-09-tdigest.html</a></li><li><a href=https://blog.csdn.net/csdnnews/article/details/116246540>https://blog.csdn.net/csdnnews/article/details/116246540</a></li><li>开源实现:https://github.com/tdunning/t-digest</li></ul></blockquote><p>代码实现如下,除了 TimeWindowQuantile 用来计算分位数指标外,另外提供了 TimeWindowCounter 来收集时间区间内的指标数量</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>TimeWindowQuantile</span> {
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> <span style=color:#dc322f>double</span> compression;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> TDigest<span style=color:#719e07>[]</span> ringBuffer;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#dc322f>int</span> currentBucket;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#dc322f>long</span> lastRotateTimestampMillis;
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> <span style=color:#dc322f>long</span> durationBetweenRotatesMillis;
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>TimeWindowQuantile</span>(<span style=color:#dc322f>double</span> compression, <span style=color:#dc322f>int</span> bucketNum, <span style=color:#dc322f>int</span> timeWindowSeconds) {
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.compression <span style=color:#719e07>=</span> compression;
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.ringBuffer <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> TDigest<span style=color:#719e07>[</span>bucketNum<span style=color:#719e07>]</span>;
</span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (<span style=color:#dc322f>int</span> i <span style=color:#719e07>=</span> 0; i <span style=color:#719e07>&lt;</span> bucketNum; i<span style=color:#719e07>++</span>) {
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.ringBuffer<span style=color:#719e07>[</span>i<span style=color:#719e07>]</span> <span style=color:#719e07>=</span> TDigest.createDigest(compression);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.currentBucket <span style=color:#719e07>=</span> 0;
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.lastRotateTimestampMillis <span style=color:#719e07>=</span> System.currentTimeMillis();
</span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.durationBetweenRotatesMillis <span style=color:#719e07>=</span> TimeUnit.SECONDS.toMillis(timeWindowSeconds) <span style=color:#719e07>/</span> bucketNum;
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>synchronized</span> <span style=color:#dc322f>double</span> <span style=color:#268bd2>quantile</span>(<span style=color:#dc322f>double</span> q) {
</span></span><span style=display:flex><span> TDigest currentBucket <span style=color:#719e07>=</span> rotate();
</span></span><span style=display:flex><span> <span style=color:#719e07>return</span> currentBucket.quantile(q);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>synchronized</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>add</span>(<span style=color:#dc322f>double</span> value) {
</span></span><span style=display:flex><span> rotate();
</span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (TDigest bucket : ringBuffer) {
</span></span><span style=display:flex><span> bucket.add(value);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> TDigest <span style=color:#268bd2>rotate</span>() {
</span></span><span style=display:flex><span> <span style=color:#dc322f>long</span> timeSinceLastRotateMillis <span style=color:#719e07>=</span> System.currentTimeMillis() <span style=color:#719e07>-</span> lastRotateTimestampMillis;
</span></span><span style=display:flex><span> <span style=color:#719e07>while</span> (timeSinceLastRotateMillis <span style=color:#719e07>&gt;</span> durationBetweenRotatesMillis) {
</span></span><span style=display:flex><span> ringBuffer<span style=color:#719e07>[</span>currentBucket<span style=color:#719e07>]</span> <span style=color:#719e07>=</span> TDigest.createDigest(compression);
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>++</span>currentBucket <span style=color:#719e07>&gt;=</span> ringBuffer.length) {
</span></span><span style=display:flex><span> currentBucket <span style=color:#719e07>=</span> 0;
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> timeSinceLastRotateMillis <span style=color:#719e07>-=</span> durationBetweenRotatesMillis;
</span></span><span style=display:flex><span> lastRotateTimestampMillis <span style=color:#719e07>+=</span> durationBetweenRotatesMillis;
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> <span style=color:#719e07>return</span> ringBuffer<span style=color:#719e07>[</span>currentBucket<span style=color:#719e07>]</span>;
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h1 id=指标推送>指标推送</h1><p>指标推送只有用户在设置了&lt;dubbo:metrics />配置且配置protocol参数后才开启,若只开启指标聚合,则默认不推送指标。</p><h2 id=1-promehteus-pull-servicediscovery>1. Promehteus Pull ServiceDiscovery</h2><p>使用dubbo-admin等类似的中间层,启动时根据配置将本机 IP、Port、MetricsURL 推送地址信息至dubbo-admin(或任意中间层)的方式,暴露HTTP ServiceDiscovery供prometheus读取,配置方式如&lt;dubbo:metrics protocol=&ldquo;prometheus&rdquo; mode=&ldquo;pull&rdquo; address="${dubbo-admin.address}" port=&ldquo;20888&rdquo; url="/metrics"/>,其中在pull模式下address为可选参数,若不填则需用户手动在Prometheus配置文件中配置地址</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>private</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>exportHttpServer</span>() {
</span></span><span style=display:flex><span> <span style=color:#dc322f>boolean</span> exporterEnabled <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_EXPORTER_ENABLED_KEY, <span style=color:#cb4b16>false</span>);
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (exporterEnabled) {
</span></span><span style=display:flex><span> <span style=color:#dc322f>int</span> port <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_EXPORTER_METRICS_PORT_KEY, PROMETHEUS_DEFAULT_METRICS_PORT);
</span></span><span style=display:flex><span> String path <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_EXPORTER_METRICS_PATH_KEY, PROMETHEUS_DEFAULT_METRICS_PATH);
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>!</span>path.startsWith(<span style=color:#2aa198>&#34;/&#34;</span>)) {
</span></span><span style=display:flex><span> path <span style=color:#719e07>=</span> <span style=color:#2aa198>&#34;/&#34;</span> <span style=color:#719e07>+</span> path;
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#719e07>try</span> {
</span></span><span style=display:flex><span> prometheusExporterHttpServer <span style=color:#719e07>=</span> HttpServer.create(<span style=color:#719e07>new</span> InetSocketAddress(port), 0);
</span></span><span style=display:flex><span> prometheusExporterHttpServer.createContext(path, httpExchange <span style=color:#719e07>-&gt;</span> {
</span></span><span style=display:flex><span> String response <span style=color:#719e07>=</span> prometheusRegistry.scrape();
</span></span><span style=display:flex><span> httpExchange.sendResponseHeaders(200, response.getBytes().length);
</span></span><span style=display:flex><span> <span style=color:#719e07>try</span> (OutputStream os <span style=color:#719e07>=</span> httpExchange.getResponseBody()) {
</span></span><span style=display:flex><span> os.write(response.getBytes());
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> });
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> httpServerThread <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> Thread(prometheusExporterHttpServer::start);
</span></span><span style=display:flex><span> httpServerThread.start();
</span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (IOException e) {
</span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> RuntimeException(e);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=2-prometheus-push-pushgateway>2. Prometheus Push Pushgateway</h2><p>用户直接在Dubbo配置文件中配置Prometheus Pushgateway的地址即可,如&lt;dubbo:metrics protocol=&ldquo;prometheus&rdquo; mode=&ldquo;push&rdquo; address="${prometheus.pushgateway-url}" interval=&ldquo;5&rdquo; />,其中interval代表推送间隔</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#268bd2>private</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>schedulePushJob</span>() {
</span></span><span style=display:flex><span> <span style=color:#dc322f>boolean</span> pushEnabled <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_PUSHGATEWAY_ENABLED_KEY, <span style=color:#cb4b16>false</span>);
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (pushEnabled) {
</span></span><span style=display:flex><span> String baseUrl <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_PUSHGATEWAY_BASE_URL_KEY);
</span></span><span style=display:flex><span> String job <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_PUSHGATEWAY_JOB_KEY, PROMETHEUS_DEFAULT_JOB_NAME);
</span></span><span style=display:flex><span> <span style=color:#dc322f>int</span> pushInterval <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_PUSHGATEWAY_PUSH_INTERVAL_KEY, PROMETHEUS_DEFAULT_PUSH_INTERVAL);
</span></span><span style=display:flex><span> String username <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_PUSHGATEWAY_USERNAME_KEY);
</span></span><span style=display:flex><span> String password <span style=color:#719e07>=</span> url.getParameter(PROMETHEUS_PUSHGATEWAY_PASSWORD_KEY);
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> NamedThreadFactory threadFactory <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> NamedThreadFactory(<span style=color:#2aa198>&#34;prometheus-push-job&#34;</span>, <span style=color:#cb4b16>true</span>);
</span></span><span style=display:flex><span> pushJobExecutor <span style=color:#719e07>=</span> Executors.newScheduledThreadPool(1, threadFactory);
</span></span><span style=display:flex><span> PushGateway pushGateway <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> PushGateway(baseUrl);
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>!</span>StringUtils.isBlank(username)) {
</span></span><span style=display:flex><span> pushGateway.setConnectionFactory(<span style=color:#719e07>new</span> BasicAuthHttpConnectionFactory(username, password));
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> pushJobExecutor.scheduleWithFixedDelay(() <span style=color:#719e07>-&gt;</span> push(pushGateway, job), pushInterval, pushInterval, TimeUnit.SECONDS);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#268bd2>protected</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>push</span>(PushGateway pushGateway, String job) {
</span></span><span style=display:flex><span> <span style=color:#719e07>try</span> {
</span></span><span style=display:flex><span> pushGateway.pushAdd(prometheusRegistry.getPrometheusRegistry(), job);
</span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (IOException e) {
</span></span><span style=display:flex><span> logger.error(<span style=color:#2aa198>&#34;Error occurred when pushing metrics to prometheus: &#34;</span>, e);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h2 id=可视化展示>可视化展示</h2><p>目前推荐使用 Prometheus 来进行服务监控,Grafana 来展示指标数据。可以通过案例来快速入门 <a href=/zh-cn/overview/tasks/observability/grafana/>Dubbo 可视化监控</a></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/zh-cn/blog/2023/01/30/dubbo3-%E5%BA%94%E7%94%A8%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E8%AE%BE%E8%AE%A1/ aria-label="上一页 - Dubbo3 应用级服务发现设计" class="btn btn-primary"><span class=mr-1></span>上一页</a></li><li><a href=/zh-cn/blog/2023/05/26/google-paper-%E9%9D%A2%E5%90%91%E4%BA%91%E6%97%B6%E4%BB%A3%E7%9A%84%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E6%96%B0%E6%A8%A1%E5%BC%8F/ aria-label="下一页 - [Google Paper] 面向云时代的应用开发新模式" class="btn btn-primary">下一页<span class=ml-1></span></a></li></ul></div><div id=pre-footer><h2>反馈</h2><p class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 feedback--yes"></button>
<button class="btn btn-primary mb-4 feedback--no"></button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled"),no.disabled=!0,no.classList.add("feedback--button__disabled")};yes.addEventListener("click",()=>{sendFeedback(1),disableButtons(),document.querySelector(".feedback--response").classList.remove("feedback--response__hidden")}),no.addEventListener("click",()=>{sendFeedback(0),disableButtons(),document.querySelector(".feedback--response").classList.remove("feedback--response__hidden")})</script></main><div class="d-none d-xl-block col-xl-2 td-toc d-print-none"><div class="td-page-meta ml-2 pb-1 pt-2 mb-0"><a href=https://github.com/apache/dubbo-website/edit/master/content/zh-cn/blog/proposals/metrics.md target=_blank><i class="fa fa-edit fa-fw"></i> 编辑此页</a>
<a href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/blog/proposals/metrics.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" target=_blank><i class="fa fa-edit fa-fw"></i> 创建子页面</a>
<a href="https://github.com/apache/dubbo-website/issues/new?title=%e6%8c%87%e6%a0%87%e5%9f%8b%e7%82%b9" target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#1-指标接入说明>1. 指标接入说明</a></li><li><a href=#2-指标体系设计>2. 指标体系设计</a></li><li><a href=#3-结构设计>3. 结构设计</a></li><li><a href=#4-数据流转>4. 数据流转</a></li><li><a href=#5-目标>5. 目标</a></li></ul><ul><li><a href=#1-嵌入位置>1. 嵌入位置</a></li><li><a href=#2-指标标识>2. 指标标识</a></li><li><a href=#3-基础指标>3. 基础指标</a></li></ul><ul><li><a href=#1-参数设计>1. 参数设计</a><ul><li><a href=#11-本地聚合开启方式>1.1 本地聚合开启方式</a></li><li><a href=#12-指标聚合参数>1.2 指标聚合参数</a></li></ul></li><li><a href=#2-具体指标>2. 具体指标</a></li><li><a href=#聚合收集器>聚合收集器</a></li><li><a href=#3-指标聚合>3. 指标聚合</a></li></ul><ul><li><a href=#1-promehteus-pull-servicediscovery>1. Promehteus Pull ServiceDiscovery</a></li><li><a href=#2-prometheus-push-pushgateway>2. Prometheus Push Pushgateway</a></li><li><a href=#可视化展示>可视化展示</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/apachecon2023/ data-taxonomy-term=apachecon2023><span class=taxonomy-label>apachecon2023</span><span class=taxonomy-count>7</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/browser/ data-taxonomy-term=browser><span class=taxonomy-label>browser</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/dubbo-aot/ data-taxonomy-term=dubbo-aot><span class=taxonomy-label>dubbo aot</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/dubbo-js/ data-taxonomy-term=dubbo-js><span class=taxonomy-label>dubbo-js</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/go/ data-taxonomy-term=go><span class=taxonomy-label>Go</span><span class=taxonomy-count>28</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/graalvm/ data-taxonomy-term=graalvm><span class=taxonomy-label>GraalVM</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/java/ data-taxonomy-term=java><span class=taxonomy-label>Java</span><span class=taxonomy-count>92</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/metrics/ data-taxonomy-term=metrics><span class=taxonomy-label>metrics</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/native-image/ data-taxonomy-term=native-image><span class=taxonomy-label>Native Image</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/node.js/ data-taxonomy-term=node.js><span class=taxonomy-label>node.js</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/observability/ data-taxonomy-term=observability><span class=taxonomy-label>observability</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/opensergo/ data-taxonomy-term=opensergo><span class=taxonomy-label>opensergo</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/pixiu/ data-taxonomy-term=pixiu><span class=taxonomy-label>Pixiu</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/proposals/ data-taxonomy-term=proposals><span class=taxonomy-label>Proposals</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/protocol/ data-taxonomy-term=protocol><span class=taxonomy-label>protocol</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/release-notes/ data-taxonomy-term=release-notes><span class=taxonomy-label>Release Notes</span><span class=taxonomy-count>11</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/rust/ data-taxonomy-term=rust><span class=taxonomy-label>Rust</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/seata/ data-taxonomy-term=seata><span class=taxonomy-label>seata</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/spring-cloud/ data-taxonomy-term=spring-cloud><span class=taxonomy-label>spring-cloud</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/tracing/ data-taxonomy-term=tracing><span class=taxonomy-label>tracing</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/triple/ data-taxonomy-term=triple><span class=taxonomy-label>triple</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/web/ data-taxonomy-term=web><span class=taxonomy-label>web</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/%E6%94%BF%E9%87%87%E4%BA%91/ data-taxonomy-term=%E6%94%BF%E9%87%87%E4%BA%91><span class=taxonomy-label>政采云</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/%E6%96%B0%E9%97%BB%E5%8A%A8%E6%80%81/ data-taxonomy-term=%E6%96%B0%E9%97%BB%E5%8A%A8%E6%80%81><span class=taxonomy-label>新闻动态</span><span class=taxonomy-count>24</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/ data-taxonomy-term=%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90><span class=taxonomy-label>源码解析</span><span class=taxonomy-count>34</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/%E7%94%9F%E6%80%81/ data-taxonomy-term=%E7%94%9F%E6%80%81><span class=taxonomy-label>生态</span><span class=taxonomy-count>14</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/%E7%94%A8%E6%88%B7%E6%A1%88%E4%BE%8B/ data-taxonomy-term=%E7%94%A8%E6%88%B7%E6%A1%88%E4%BE%8B><span class=taxonomy-label>用户案例</span><span class=taxonomy-count>11</span></a></li><li><a class=taxonomy-term href=https://cn.dubbo.apache.org/zh-cn/tags/%E7%BD%91%E5%85%B3/ data-taxonomy-term=%E7%BD%91%E5%85%B3><span class=taxonomy-label>网关</span><span class=taxonomy-count>4</span></a></li></ul></div></div></div></div></div><footer class="bg-dark py-5 row d-print-none footer-margin-0"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Dubbo mailing list archive" aria-label="Dubbo mailing list archive"><a class=text-white target=_blank rel="noopener noreferrer" href=https://lists.apache.org/list.html?dev@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel="noopener noreferrer" href=https://github.com/apache/dubbo><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Subscribe to mailing list" aria-label="Subscribe to mailing list"><a class=text-white target=_blank rel="noopener noreferrer" href=mailto:dev-subscribe@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2024 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. 保留所有权利</small></div></div></div></footer><div class="row pt-2 pb-2 footer-margin-0"><div class="container-fluid mx-sm-5"><div class=text-center id=my-footer><img alt=apache_logo src=/imgs/apache_logo.png><ul><li><a href=https://www.apache.org>Foundation</a></li><li><a href=https://www.apache.org/licenses/>License</a></li><li><a href=https://dubbo.apache.org/en/overview/notices/>Security</a></li><li><a href=https://www.apache.org/events/current-event>Events</a></li><li><a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a href=https://privacy.apache.org/policies/privacy-policy-public.html>Privacy</a></li><li><a href=https://www.apache.org/foundation/thanks.html>Thanks</a></li></ul></div></div></div><script src=/js/popper.min.js integrity=sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49 crossorigin=anonymous></script><script src=/js/bootstrap.min.js integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy crossorigin=anonymous></script><script src=/js/main.min.b075178d232d3b0039b3cb6af2fc2e9d90071820167a60f4eea3a79169975ee8.js integrity="sha256-sHUXjSMtOwA5s8tq8vwunZAHGCAWemD07qOnkWmXXug=" crossorigin=anonymous></script><script async src=https://widget.kapa.ai/kapa-widget.bundle.js data-website-id=d763c4f2-f871-400b-aeca-d986c4af73c2 data-project-name="Apache Dubbo" data-project-color=#E8442E data-button-text="Ask AI" data-search-mode-enabled=true data-modal-open-on-command-k=true data-modal-disclaimer="The AI supports multiple languages, but it may not be accessible in China due to recaptcha, a proxy is required." data-project-logo=https://pbs.twimg.com/profile_images/1011849068283191302/FJbH5vbF_400x400.jpg data-modal-example-questions="What is Apache Dubbo?,How to run Apache Dubbo?" data-button-position-top data-button-position-right=20px data-button-position-bottom=200px data-button-position-left></script><script>(function(e,t,n,s){e[s]=e[s]||[];var a=t.getElementsByTagName(n)[0],i=t.createElement(n);i.async=!0,i.id="beacon-aplus",i.setAttribute("exparams","userid=&aplus&sidx=aplusSidex&ckx=aplusCkx"),i.src="//g.alicdn.com/alilog/mlog/aplus_v2.js",i.crossorigin="anonymous",a.parentNode.insertBefore(i,a)})(window,document,"script","aplus_queue"),function(e){var t=e.createElement("script");t.type="text/javascript",t.async=!0,t.src="//g.alicdn.com/aes/??tracker/3.3.4/index.js,tracker-plugin-pv/3.0.5/index.js,tracker-plugin-event/3.0.0/index.js,tracker-plugin-autolog/3.0.3/index.js,tracker-plugin-survey/3.0.3/index.js,tracker-plugin-jserror/3.0.3/index.js,tracker-plugin-resourceError/3.0.3/index.js",t.onload=function(){window.AES_CONFIG=window.AES_CONFIG||{env:"prod"},window.aes=new AES({pid:"zN245h",user_type:6}),window.AESPluginAutologConfig={exposure:"auto"},window.AEMPluginInstances=[aes.use(AESPluginPV,window.AESPluginPVConfig||{enableHistory:!0}),aes.use(AESPluginEvent,window.AESPluginEventConfig||{}),aes.use(AESPluginSurvey,window.AESPluginEventConfig||{}),aes.use(AESPluginAutolog,window.AESPluginAutologConfig||{}),aes.use(AESPluginJSError,window.AESPluginJSError||{}),aes.use(AESPluginResourceError,window.AESPluginResourceError||{})]},setTimeout(function(){e.getElementsByTagName("body")[0].appendChild(t)},800)}(document)</script></body></html>