| <!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.121.2"><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="本文介绍了 Dubbo SPI 的原理和实现细节"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/"><meta property="article:section" content="overview"><meta property="article:modified_time" content="2024-03-19T23:02:26+08:00"><meta itemprop=name content="扩展点开发指南"><meta itemprop=description content="本文介绍了 Dubbo SPI 的原理和实现细节"><meta itemprop=dateModified content="2024-03-19T23:02:26+08:00"><meta itemprop=wordCount content="2530"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="扩展点开发指南"><meta name=twitter:description content="本文介绍了 Dubbo SPI 的原理和实现细节"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="本文介绍了 Dubbo SPI 的原理和实现细节"><meta property="og:description" content="本文介绍了 Dubbo SPI 的原理和实现细节"><meta name=twitter:description content="本文介绍了 Dubbo SPI 的原理和实现细节"><meta property="og:url" content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/"><meta property="og:title" content="扩展点开发指南"><meta name=twitter:title content="扩展点开发指南"><meta name=twitter:image:alt content="Apache Dubbo"><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-link flex-column flex-md-row td-navbar navbar-parent" data-auto-burger=primary><div class=container-navbar><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 menu_navbar_list" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/overview/home/><span>文档</span></a></li><li class="nav-item dropdown d-lg-block community_after"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown 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=/zh-cn/blog/news/>新闻</a> |
| <a class=dropdown-item href=/zh-cn/overview/notices/>安全公告</a> |
| <a class=dropdown-item href=/zh-cn/contact/>贡献者指南</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/blog/><span>博客</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/download/><span>下载</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown 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=https://start.dubbo.apache.org/>代码生成</a> |
| <a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>可视化控制台</a> |
| <a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>无代理网格</a> |
| <a class=dropdown-item href=https://github.com/apache/dubbo-samples>更多样例</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link" href=/en/ role=tab aria-selected=false>EN |
| </a><a class="languagetab-btn nav-item nav-link active" href=/zh-cn/ role=tab aria-selected=true>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li class="nav-item d-lg-block"><div class="nav-item d-none d-lg-block"><div id=docsearch></div></div></li></ul><ul class="navbar-nav mt-lg-0 language_change_btn_mobile"><button type=button data-toggle=collapse data-target=#main_navbar aria-controls=main_navbar aria-expanded=false aria-label="Toggle navigation" style=border:0;margin-right:16px><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentcolor" class="bi bi-menu-app" viewBox="0 0 16 16"><path d="M0 1.5A1.5 1.5.0 011.5.0h2A1.5 1.5.0 015 1.5v2A1.5 1.5.0 013.5 5h-2A1.5 1.5.0 010 3.5zM1.5 1a.5.5.0 00-.5.5v2a.5.5.0 00.5.5h2a.5.5.0 00.5-.5v-2A.5.5.0 003.5 1zM0 8a2 2 0 012-2h12a2 2 0 012 2v5a2 2 0 01-2 2H2a2 2 0 01-2-2zm1 3v2a1 1 0 001 1h12a1 1 0 001-1v-2zm14-1V8a1 1 0 00-1-1H2A1 1 0 001 8v2zM2 8.5a.5.5.0 01.5-.5h9a.5.5.0 010 1h-9A.5.5.0 012 8.5m0 4a.5.5.0 01.5-.5h6a.5.5.0 010 1h-6a.5.5.0 01-.5-.5"/></svg></button><li class=nav-item><div class="nav-item d-block"><div id=docsearch></div></div></li></ul><a class="btn btn-dark ml-2 github-btn" href=https://github.com/apache/dubbo/>GITHUB</a></div></div></nav><div class="collapse navbar-collapse mobile_navbar_menu" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0 navbar-menus-list-mobile"><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/overview/home/><span>文档</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseCommunity role=button aria-expanded=false aria-controls=collapseMenu>联系社区<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentcolor" class="bi bi-caret-down-fill svg_arrow_down_community" viewBox="0 0 16 16"><path d="M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 01.753 1.659l-4.796 5.48a1 1 0 01-1.506.0z"/></svg></a><div class=collapse id=collapseCommunity><div class="card card-body" style="background-color:#f4f4f6;padding:10px 0;border:0"><a class=dropdown-item href=/zh-cn/blog/news/>新闻</a> |
| <a class=dropdown-item href=/zh-cn/overview/notices/>安全公告</a> |
| <a class=dropdown-item href=/zh-cn/contact/>贡献者指南</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/blog/><span>博客</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/download/><span>下载</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-controls=collapseMenu>生态<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentcolor" class="bi bi-caret-down-fill svg_arrow_down_ecosystem" viewBox="0 0 16 16"><path d="M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 01.753 1.659l-4.796 5.48a1 1 0 01-1.506.0z"/></svg></a><div class=collapse id=collapseEcosystem><div class="card card-body" style="background-color:#f4f4f6;padding:10px 0;border:0"><a class=dropdown-item href=https://start.dubbo.apache.org/>代码生成</a> |
| <a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>可视化控制台</a> |
| <a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>无代理网格</a> |
| <a class=dropdown-item href=https://github.com/apache/dubbo-samples>更多样例</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color:#f4f4f6;font-size:12px;line-height:16px;font-weight:400;display:none;@media only screen and (min-width:768px){display: inline-block;}}.menu_navbar_list{display:none;@media only screen and (min-width:768px){display: flex;}}.menu_navbar_language_change{.language_change_btn_pc { display: none; } .language_change_btn_mobile { display: flex; } @media only screen and (min-width: 768px) { .language_change_btn_mobile { display: none; } .language_change_btn_pc { display: flex; } }}.community_after{position:relative;padding-right:8px}.community_after::after{content:"";position:absolute;top:50%;transform:translateY(-50%);left:100%;width:1px;height:16px;background-color:#8fa8a6}.mobile_navbar_menu{top:64px;position:fixed;z-index:99999999;background:#f4f4f6;width:100vw;padding-left:20px;padding-bottom:20px}</style><div lang=zh-cn id=announcement style="background-color:#3371e3;color:#fff;background-image:linear-gradient(90deg,#0096ff 0%,#33beff 100%)"><aside><div class=announcement-main data-nosnippet><h4><img alt=announcement-apache-dubbo src=/imgs/contacts/wechat-account.jpg style=float:right;width:10%;height:auto> |
| <a href=/zh-cn/blog/2024/09/11/apache-dubbo-3.3-全新发布triple-x-领衔开启微服务通信新时代/>Apache Dubbo 3.3 全新版本</a> <em>正式上线!</em></h4><p>在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。<br><br>欢迎扫描右侧二维码关注 Apache Dubbo 微信公众号!</p></div></aside></div><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-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi").addClass("active"),$("#td-section-nav #m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi-li span").addClass("td-sidebar-nav-active-item"),$("#td-section-nav #m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi").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-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi-li").siblings("li").addClass("show"),$("#td-section-nav #m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi-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"><div id=docsearch></div><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-cnoverview-li><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewwhat-li><input type=checkbox id=m-zh-cnoverviewwhat-check> |
| <label for=m-zh-cnoverviewwhat-check><a href=/zh-cn/overview/what/ title="Dubbo 介绍" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewwhat><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-cnoverviewwhatoverview-li><input type=checkbox id=m-zh-cnoverviewwhatoverview-check> |
| <label for=m-zh-cnoverviewwhatoverview-check><a href=/zh-cn/overview/what/overview/ title="了解 Dubbo 核心概念和架构" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatoverview><span>概念与架构</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatxyz-difference-li><input type=checkbox id=m-zh-cnoverviewwhatxyz-difference-check> |
| <label for=m-zh-cnoverviewwhatxyz-difference-check><a href=/zh-cn/overview/what/xyz-difference/ title="与 gRPC、Spring Cloud、Istio 的关系" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatxyz-difference><span>与 gRPC、Spring Cloud、Istio 关系</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewwhatcore-features-li><input type=checkbox id=m-zh-cnoverviewwhatcore-features-check> |
| <label for=m-zh-cnoverviewwhatcore-features-check><a href=/zh-cn/overview/what/core-features/ title="Dubbo 核心特性" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewwhatcore-features><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-cnoverviewwhatcore-featuresservice-definition-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresservice-definition-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresservice-definition-check><a href=/zh-cn/overview/what/core-features/service-definition/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresservice-definition><span>微服务开发</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresservice-discovery-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresservice-discovery-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresservice-discovery-check><a href=/zh-cn/overview/what/core-features/service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresservice-discovery><span>服务发现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresload-balance-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresload-balance-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresload-balance-check><a href=/zh-cn/overview/what/core-features/load-balance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresload-balance><span>负载均衡</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewwhatcore-featurestraffic-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestraffic-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestraffic-check><a href=/zh-cn/overview/what/core-features/traffic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewwhatcore-featurestraffic><span>流量管控</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestrafficintroduction-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestrafficintroduction-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestrafficintroduction-check><a href=/zh-cn/overview/what/core-features/traffic/introduction/ title="Dubbo 路由(router)机制及其如何实现流量管控介绍" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestrafficintroduction><span>路由机制介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestrafficcondition-rule-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestrafficcondition-rule-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestrafficcondition-rule-check><a href=/zh-cn/overview/what/core-features/traffic/condition-rule/ title=条件路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestrafficcondition-rule><span>条件路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestraffictag-rule-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestraffictag-rule-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestraffictag-rule-check><a href=/zh-cn/overview/what/core-features/traffic/tag-rule/ title=标签路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestraffictag-rule><span>标签路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestrafficscript-rule-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestrafficscript-rule-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestrafficscript-rule-check><a href=/zh-cn/overview/what/core-features/traffic/script-rule/ title=脚本路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestrafficscript-rule><span>脚本路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestrafficconfiguration-rule-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestrafficconfiguration-rule-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestrafficconfiguration-rule-check><a href=/zh-cn/overview/what/core-features/traffic/configuration-rule/ title=动态配置规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestrafficconfiguration-rule><span>动态配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestrafficcircuit-breaking-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestrafficcircuit-breaking-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestrafficcircuit-breaking-check><a href=/zh-cn/overview/what/core-features/traffic/circuit-breaking/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestrafficcircuit-breaking><span>限流 & 熔断</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featurestrafficmesh-rule-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featurestrafficmesh-rule-check> |
| <label for=m-zh-cnoverviewwhatcore-featurestrafficmesh-rule-check><a href=/zh-cn/overview/what/core-features/traffic/mesh-rule/ title="Mesh 路由规则" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featurestrafficmesh-rule><span>Mesh 路由</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresprotocols-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresprotocols-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresprotocols-check><a href=/zh-cn/overview/what/core-features/protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresprotocols><span>通信协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresextensibility-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresextensibility-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresextensibility-check><a href=/zh-cn/overview/what/core-features/extensibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresextensibility><span>扩展适配</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresobservability-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresobservability-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresobservability-check><a href=/zh-cn/overview/what/core-features/observability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresobservability><span>观测服务</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuressecurity-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuressecurity-check> |
| <label for=m-zh-cnoverviewwhatcore-featuressecurity-check><a href=/zh-cn/overview/what/core-features/security/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuressecurity><span>认证鉴权</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresservice-mesh-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresservice-mesh-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresservice-mesh-check><a href=/zh-cn/overview/what/core-features/service-mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresservice-mesh><span>服务网格</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresecosystem-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresecosystem-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresecosystem-check><a href=/zh-cn/overview/what/core-features/ecosystem/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresecosystem><span>微服务生态</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatcore-featuresmore-li><input type=checkbox id=m-zh-cnoverviewwhatcore-featuresmore-check> |
| <label for=m-zh-cnoverviewwhatcore-featuresmore-check><a href=/zh-cn/overview/what/core-features/more/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatcore-featuresmore><span>更多高级功能</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewwhatadvantages-li><input type=checkbox id=m-zh-cnoverviewwhatadvantages-check> |
| <label for=m-zh-cnoverviewwhatadvantages-check><a href=/zh-cn/overview/what/advantages/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewwhatadvantages><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-cnoverviewwhatadvantagesusability-li><input type=checkbox id=m-zh-cnoverviewwhatadvantagesusability-check> |
| <label for=m-zh-cnoverviewwhatadvantagesusability-check><a href=/zh-cn/overview/what/advantages/usability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatadvantagesusability><span>快速易用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatadvantagesperformance-li><input type=checkbox id=m-zh-cnoverviewwhatadvantagesperformance-check> |
| <label for=m-zh-cnoverviewwhatadvantagesperformance-check><a href=/zh-cn/overview/what/advantages/performance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatadvantagesperformance><span>超高性能</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatadvantagesgovernance-li><input type=checkbox id=m-zh-cnoverviewwhatadvantagesgovernance-check> |
| <label for=m-zh-cnoverviewwhatadvantagesgovernance-check><a href=/zh-cn/overview/what/advantages/governance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatadvantagesgovernance><span>服务治理</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewwhatadvantagesproduction-ready-li><input type=checkbox id=m-zh-cnoverviewwhatadvantagesproduction-ready-check> |
| <label for=m-zh-cnoverviewwhatadvantagesproduction-ready-check><a href=/zh-cn/overview/what/advantages/production-ready/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewwhatadvantagesproduction-ready><span>生产环境验证</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-zh-cnoverviewmannual-li><input type=checkbox id=m-zh-cnoverviewmannual-check checked> |
| <label for=m-zh-cnoverviewmannual-check><a href=/zh-cn/overview/mannual/ title="Dubbo SDK 用户手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannual><span>用户手册</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdk-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdk-check> |
| <label for=m-zh-cnoverviewmannualjava-sdk-check><a href=/zh-cn/overview/mannual/java-sdk/ title="Java SDK 手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdk><span>Java SDK</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkversions-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkversions-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkversions-check><a href=/zh-cn/overview/mannual/java-sdk/versions/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkversions><span>版本信息</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkquick-start-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkquick-start-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkquick-start-check><a href=/zh-cn/overview/mannual/java-sdk/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkquick-start><span>快速入门</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkquick-startstarter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkquick-startstarter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkquick-startstarter-check><a href=/zh-cn/overview/mannual/java-sdk/quick-start/starter/ title="创建基于Spring Boot的微服务应用" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkquick-startstarter><span>创建基于Spring Boot的Dubbo应用</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasks-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasks-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasks-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/ title="跟随示例任务学习 Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasks><span>使用教程</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksdevelop-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdevelop-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdevelop-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/develop/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksdevelop><span>快速创建应用</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksdevelopspringboot-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdevelopspringboot-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdevelopspringboot-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/develop/springboot/ title="Spring Boot" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksdevelopspringboot><span>Spring Boot Starter</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksdevelopapi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdevelopapi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdevelopapi-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/develop/api/ title="使用原生 API 开发 Dubbo 应用" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksdevelopapi><span>纯 API 开发模式</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocols-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocols-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocols-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksprotocols><span>通信协议</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolsprotocol-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolsprotocol-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolsprotocol-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/protocol/ title="Dubbo 支持的 RPC 通信协议" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolsprotocol><span>选择 RPC 协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolsdubbo-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolsdubbo-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolsdubbo-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/dubbo/ title="基于 TCP 的 RPC 通信协议 - dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolsdubbo><span>dubbo协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriple-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriple-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolstriple-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/ title="基于 HTTP1/2 的 RPC 通信协议 - triple" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriple><span>triple协议</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleinterface-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleinterface-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleinterface-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/interface/ title="使用 Java 接口方式开发 triple 通信服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleinterface><span>Java接口方式</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleidl-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleidl-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleidl-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/ title="使用 Protobuf(IDL) 开发 triple 通信服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstripleidl><span>Protobuf(IDL)方式</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplestreaming-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplestreaming-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplestreaming-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/streaming/ title="Streaming 通信" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplestreaming><span>Streaming流式通信</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplegrpc-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplegrpc-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplegrpc-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/grpc/ title="使用 Dubbo 开发 gRPC 服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolstriplegrpc><span>发布/调用标准gRPC服务</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksprotocolsrest-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksprotocolsrest-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksprotocolsrest-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/protocols/rest/ title="发布 REST 风格的服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksprotocolsrest><span>rest协议</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksservice-discovery-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksservice-discovery-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksservice-discovery-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/service-discovery/ title=注册中心、服务发现与负载均衡 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksservice-discovery><span>服务发现</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryregistry-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryregistry-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryregistry-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/service-discovery/registry/ title=服务发现的工作方式、基本使用方法与配置细节 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryregistry><span>服务发现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryloadbalance-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryloadbalance-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryloadbalance-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/service-discovery/loadbalance/ title=负载均衡策略与配置细节 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryloadbalance><span>负载均衡</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryzookeeper-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryzookeeper-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryzookeeper-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/service-discovery/zookeeper/ title="使用 Zookeeper 作为注册中心实现自动服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoveryzookeeper><span>使用Zookeeper注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoverynacos-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksservice-discoverynacos-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksservice-discoverynacos-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/service-discovery/nacos/ title="使用 Nacos 作为注册中心实现自动服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoverynacos><span>使用Nacos注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoverykubernetes-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksservice-discoverykubernetes-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksservice-discoverykubernetes-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/service-discovery/kubernetes/ title="基于 Kubernetes Service 的服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksservice-discoverykubernetes><span>使用Kubernetes注册中心</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksobservability-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservability-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservability-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksobservability><span>观测服务</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilityconsole-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilityconsole-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilityconsole-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/console/ title=可观测性 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilityconsole><span>控制台</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilityprometheus-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilityprometheus-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilityprometheus-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/prometheus/ title="从 Prometheus 查询 Metrics 监控指标" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilityprometheus><span>Prometheus</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitygrafana-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitygrafana-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitygrafana-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/grafana/ title="使用 Grafana 可视化查看集群 Metrics 指标" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitygrafana><span>Grafana</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitylogging-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitylogging-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitylogging-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/logging/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitylogging><span>日志管理</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracing-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracing-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracing-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracing><span>全链路追踪</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingtracing-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingtracing-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingtracing-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/tracing/ title=全链路追踪使用与实现说明 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingtracing><span>链路追踪</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingotlp-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingotlp-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingotlp-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/otlp/ title=OTlp class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingotlp><span>OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingzipkin-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingzipkin-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingzipkin-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/zipkin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingzipkin><span>Zipkin</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingskywalking-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingskywalking-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingskywalking-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/skywalking/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksobservabilitytracingskywalking><span>Skywalking</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksdeploy-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdeploy-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdeploy-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/deploy/ title=打包并部署应用 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksdeploy><span>打包部署</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-vm-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-vm-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-vm-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-vm/ title="传统基于 Zookeeper、Nacos 的注册中心部署架构,部署 Dubbo 应用到虚拟机环境" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-vm><span>传统注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes/ title="部署 Dubbo 应用到 Kubernetes 环境" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes><span>Kubernetes</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-service-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-service-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-service-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes-service/ title="部署 Dubbo 应用到虚拟机环境" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksdeploydeploy-on-kubernetes-service><span>服务网格</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-management-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-management-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-management-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-management><span>流量管控</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarchitecture-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarchitecture-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarchitecture-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarchitecture><span>示例应用架构</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementtimeout-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementtimeout-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementtimeout-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/timeout/ title=动态调整服务超时时间 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementtimeout><span>调整超时时间</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementretry-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementretry-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementretry-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/retry/ title=通过重试提高服务调用成功率 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementretry><span>服务重试</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementaccesslog-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementaccesslog-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementaccesslog-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/accesslog/ title=通过动态开启访问日志跟踪服务调用情况 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementaccesslog><span>访问日志</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementregion-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementregion-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementregion-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/region/ title=同机房/区域优先 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementregion><span>同区域优先</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementisolation-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementisolation-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementisolation-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/isolation/ title=通过标签实现流量隔离环境(灰度、多套开发环境等) class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementisolation><span>环境隔离</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementroute-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementroute-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementroute-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/route/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementroute><span>基于条件的流量路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarguments-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarguments-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarguments-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/arguments/ title=根据请求参数引导流量分布 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementarguments><span>参数路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementweight-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementweight-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementweight-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/weight/ title=基于权重值的比例流量转发 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementweight><span>权重比例</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementmock-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementmock-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementmock-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/mock/ title=在大促之前对弱依赖调用进行服务降级 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementmock><span>服务降级</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementhost-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementhost-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementhost-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/traffic-management/host/ title="将流量点对点引导到一台机器 (如排查问题)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstraffic-managementhost><span>固定机器导流</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksframework-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframework-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframework-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/ title="Dubbo 作为轻量 RPC 框架解决组件通信问题" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksframework><span>RPC框架</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworklightweight-rpc-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworklightweight-rpc-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworklightweight-rpc-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/lightweight-rpc/ title="使用轻量的 Java SDK 开发 RPC Server 和 Client" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworklightweight-rpc><span>Server与Client</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkthreading-model-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkthreading-model-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkthreading-model-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/threading-model/ title=消费端线程模型,提供者端线程模型 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkthreading-model><span>线程模型</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkfilter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkfilter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkfilter-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/filter/ title="使用 Filter 过滤器动态拦截请求(request)或响应(response)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkfilter><span>Filter拦截器</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworktimeout-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworktimeout-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworktimeout-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/timeout/ title="为服务调用指定 timeout 超时时间" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworktimeout><span>超时时间</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkasync-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkasync-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkasync-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/async/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkasync><span>异步调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkversion_group-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkversion_group-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkversion_group-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/version_group/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkversion_group><span>版本与分组</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkattachment-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkattachment-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkattachment-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/attachment/ title=调用链路传递隐式参数 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkattachment><span>传递附加参数</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkfault-tolerent-strategy-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkfault-tolerent-strategy-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkfault-tolerent-strategy-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/fault-tolerent-strategy/ title=集群容错 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkfault-tolerent-strategy><span>集群容错(重试)</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkgeneric-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkgeneric-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkgeneric-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/generic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkgeneric><span>泛化调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmore-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmore-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmore-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/ title="Dubbo 作为轻量 RPC 框架解决组件通信问题" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmore><span>更多特性</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoregeneric-impl-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoregeneric-impl-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoregeneric-impl-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/generic-impl/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoregeneric-impl><span>泛化实现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreecho-service-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreecho-service-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreecho-service-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/echo-service/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreecho-service><span>回声测试</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorespecify-ip-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorespecify-ip-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorespecify-ip-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/specify-ip/ title="动态指定 IP 调用" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorespecify-ip><span>运行时动态指定 IP 调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreexplicit-target-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreexplicit-target-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreexplicit-target-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/explicit-target/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreexplicit-target><span>直连提供者</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreevents-notify-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreevents-notify-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreevents-notify-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/events-notify/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreevents-notify><span>调用触发事件通知</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorecallback-parameter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorecallback-parameter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorecallback-parameter-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/callback-parameter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorecallback-parameter><span>服务端对客户端进行回调</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-mock-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-mock-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-mock-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/local-mock/ title=服务讲解(本地伪装) class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-mock><span>服务降级</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-stub-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-stub-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-stub-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/local-stub/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-stub><span>本地存根</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-call-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-call-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-call-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/local-call/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorelocal-call><span>本地调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconcurrency-control-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconcurrency-control-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconcurrency-control-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/concurrency-control/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconcurrency-control><span>并发控制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconfig-connections-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconfig-connections-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconfig-connections-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/config-connections/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreconfig-connections><span>连接控制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreset-host-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreset-host-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreset-host-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/set-host/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreset-host><span>主机配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreresult-cache-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreresult-cache-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreresult-cache-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/result-cache/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreresult-cache><span>调用结果缓存</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereference-config-cache-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereference-config-cache-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereference-config-cache-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/reference-config-cache/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereference-config-cache><span>服务引用配置对象缓存</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorerouter-snapshot-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorerouter-snapshot-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorerouter-snapshot-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/router-snapshot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorerouter-snapshot><span>路由状态采集</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreparameter-validation-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreparameter-validation-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreparameter-validation-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/parameter-validation/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmoreparameter-validation><span>参数校验</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereactive-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereactive-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereactive-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/framework/more/reactive/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksframeworkmorereactive><span>响应式编程</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksextensibility-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksextensibility-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksextensibility-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/extensibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksextensibility><span>自定义扩展</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityspi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksextensibilityspi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksextensibilityspi-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/extensibility/spi/ title="自定义 SPI 扩展的基本步骤" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityspi><span>如何自定义扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityfilter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksextensibilityfilter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksextensibilityfilter-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/extensibility/filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityfilter><span>Filter</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityprotocol-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksextensibilityprotocol-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksextensibilityprotocol-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/extensibility/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityprotocol><span>Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityregistry-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksextensibilityregistry-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksextensibilityregistry-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/extensibility/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityregistry><span>Registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityrouter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksextensibilityrouter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksextensibilityrouter-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/extensibility/router/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksextensibilityrouter><span>Router</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktaskstrasaction-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstrasaction-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstrasaction-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/trasaction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktaskstrasaction><span>分布式事务</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstrasactiondistributed-transaction-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstrasactiondistributed-transaction-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstrasactiondistributed-transaction-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/trasaction/distributed-transaction/ title="使用 Seata 支持分布式事务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstrasactiondistributed-transaction><span>使用Seata让Dubbo支持分布式事务</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksgateway-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksgateway-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksgateway-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/gateway/ title=HTTP流量接入 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksgateway><span>HTTP网关接入</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksgatewayarchitecture-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksgatewayarchitecture-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksgatewayarchitecture-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/gateway/architecture/ title="前端 http 流量接入 Dubbo 后端微服务体系的基础架构" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksgatewayarchitecture><span>基本架构</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksgatewaydubbo-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksgatewaydubbo-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksgatewaydubbo-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/gateway/dubbo/ title="通过网关将 http 流量接入 Dubbo 后端服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksgatewaydubbo><span>dubbo协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksgatewaytriple-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksgatewaytriple-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksgatewaytriple-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/gateway/triple/ title="通过网关将 http 流量接入 Dubbo 后端服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksgatewaytriple><span>triple协议</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktasksrate-limit-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksrate-limit-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksrate-limit-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/rate-limit/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktasksrate-limit><span>限流降级</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksrate-limitsentinel-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksrate-limitsentinel-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksrate-limitsentinel-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/rate-limit/sentinel/ title="使用 Sentinel 应对突发流量,保护您的应用" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksrate-limitsentinel><span>Sentinel限流</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksrate-limitconcurrency-control-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksrate-limitconcurrency-control-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksrate-limitconcurrency-control-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/rate-limit/concurrency-control/ title="Dubbo 框架内置的并发控制策略" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksrate-limitconcurrency-control><span>框架内置限流</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktasksrate-limitadaptive-concurrency-control-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktasksrate-limitadaptive-concurrency-control-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktasksrate-limitadaptive-concurrency-control-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/rate-limit/adaptive-concurrency-control/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktasksrate-limitadaptive-concurrency-control><span>自适应限流</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktaskssecurity-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskssecurity-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskssecurity-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/security/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktaskssecurity><span>安全策略</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskssecurityclass-check-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskssecurityclass-check-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskssecurityclass-check-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/security/class-check/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskssecurityclass-check><span>类检查机制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskssecuritytoken-authorization-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskssecuritytoken-authorization-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskssecuritytoken-authorization-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/security/token-authorization/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskssecuritytoken-authorization><span>权限控制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskssecuritytls-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskssecuritytls-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskssecuritytls-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/security/tls/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskssecuritytls><span>TLS支持</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskssecurityauth-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskssecurityauth-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskssecurityauth-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/security/auth/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskssecurityauth><span>服务鉴权</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshoot-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstroubleshoot-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstroubleshoot-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/troubleshoot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshoot><span>故障排查</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootprofiler-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootprofiler-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstroubleshootprofiler-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/troubleshoot/profiler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootprofiler><span>请求耗时采样</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootstart-failed-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootstart-failed-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstroubleshootstart-failed-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/troubleshoot/start-failed/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootstart-failed><span>应用启动失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootno-provider-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootno-provider-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstroubleshootno-provider-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/troubleshoot/no-provider/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootno-provider><span>地址找不到异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootrequest-failed-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootrequest-failed-check> |
| <label for=m-zh-cnoverviewmannualjava-sdktaskstroubleshootrequest-failed-check><a href=/zh-cn/overview/mannual/java-sdk/tasks/troubleshoot/request-failed/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdktaskstroubleshootrequest-failed><span>请求成功率低</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manual-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manual-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manual-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manual><span>参考手册</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/ title=配置手册 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig><span>配置说明</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspring-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspring-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspring-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/spring/ title=配置手册 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspring><span>Spring</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringspring-boot-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringspring-boot-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringspring-boot-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringspring-boot><span>Spring Boot</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringxml-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringxml-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringxml-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/spring/xml/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigspringxml><span>XML 配置</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapi-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/api/ title=配置手册 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapi><span>原生API</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapiapi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapiapi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapiapi-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/api/api/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigapiapi><span>API 配置</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigmaven-plugin-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigmaven-plugin-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigmaven-plugin-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/maven-plugin/ title="Dubbo Maven Plugin 的配置方式" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigmaven-plugin><span>Maven Plugin 配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigprinciple-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigprinciple-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigprinciple-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/principle/ title=配置工作原理 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigprinciple><span>配置加载流程</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigproperties-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigproperties-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfigproperties-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config/properties/ title=配置项参考手册 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfigproperties><span>配置项手册</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserialization-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserialization-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserialization-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/ title=序列化 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualserialization><span>序列化协议</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/serialization/ title="Dubbo 序列化机制介绍" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization><span>序列化概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriple-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriple-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriple-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/ title="triple 协议支持的序列化" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriple><span>triple</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtripleprotobuf-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtripleprotobuf-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtripleprotobuf-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/protobuf/ title="如何在 triple 协议场景下使用 protobuf、json 序列化" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtripleprotobuf><span>Protobuf</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriplewrapper-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriplewrapper-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriplewrapper-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/wrapper/ title="基于 Java 接口模式开发 triple 服务时,底层的序列化机制实现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationtriplewrapper><span>Protobuf Wrapper</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbo-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbo-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbo-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/ title="dubbo 协议支持的序列化" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbo><span>dubbo</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbohessian-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbohessian-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbohessian-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/hessian/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbohessian><span>Hessian</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson2-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson2-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson2-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fastjson2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson2><span>Fastjson2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fastjson/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofastjson><span>Fastjson</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubboavro-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubboavro-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubboavro-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/avro/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubboavro><span>Avro</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofst-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofst-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofst-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fst/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbofst><span>FST</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbogson-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbogson-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbogson-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/gson/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbogson><span>Gson</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbokryo-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbokryo-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbokryo-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/kryo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbokryo><span>Kryo</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbomsgpack-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbomsgpack-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbomsgpack-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/dubbo/msgpack/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationdubbomsgpack><span>MessagePack</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-upgrade-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-upgrade-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-upgrade-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/serialization-upgrade/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualserializationserialization-upgrade><span>序列化协议升级</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocol-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocol-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocol-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/ title="RPC 协议" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocol><span>RPC协议</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoloverview-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoloverview-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoloverview-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoloverview><span>协议概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/ title=协议概述 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple><span>triple</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoldubbo-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoldubbo-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoldubbo-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/dubbo/ title=Dubbo协议 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoldubbo><span>dubbo</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolmulti-protocols-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolmulti-protocols-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolmulti-protocols-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/multi-protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolmulti-protocols><span>多协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-33-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-33-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-33-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple-3.3/ title="Tripe 3.3 新特性" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltriple-33><span>tripe-3.3新特性</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltripe-rest-manual-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltripe-rest-manual-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltripe-rest-manual-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/tripe-rest-manual/ title="Triple Rest 用户手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocoltripe-rest-manual><span>triple-rest用户手册</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothers-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothers-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothers-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/ title="Dubbo 提供的更多 RPC 扩展协议实现" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothers><span>扩展实现</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersredis-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersredis-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersredis-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/redis/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersredis><span>Redis 协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersthrift-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersthrift-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersthrift-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/thrift/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersthrift><span>Thrift 协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersmemcached-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersmemcached-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersmemcached-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/memcached/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersmemcached><span>Memcached 协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersv32_rest_protocol_design-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersv32_rest_protocol_design-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersv32_rest_protocol_design-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/v3.2_rest_protocol_design/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersv32_rest_protocol_design><span>Rest 协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersrmi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersrmi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersrmi-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/rmi/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothersrmi><span>Rmi协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothershessian-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothershessian-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothershessian-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/hessian/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolothershessian><span>Hessian协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolotherswebservice-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolotherswebservice-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolotherswebservice-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/others/webservice/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualprotocolotherswebservice><span>Webservice协议</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistry-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistry-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistry-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/ title=注册中心、服务发现与负载均衡 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistry><span>注册中心与服务发现</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryoverview-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryoverview-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryoverview-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryoverview><span>注册中心概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryzookeeper-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryzookeeper-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryzookeeper-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/zookeeper/ title="使用 Zookeeper 作为注册中心实现自动服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryzookeeper><span>zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistrynacos-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistrynacos-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistrynacos-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/nacos/ title="使用 Nacos 作为注册中心实现自动服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistrynacos><span>nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistrymultiple-registry-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistrymultiple-registry-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistrymultiple-registry-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/multiple-registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistrymultiple-registry><span>多注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryservice-discovery-application-vs-interface-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryservice-discovery-application-vs-interface-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryservice-discovery-application-vs-interface-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/service-discovery-application-vs-interface/ title="应用级服务发现 vs 接口级服务发现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryservice-discovery-application-vs-interface><span>应用级vs接口级</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothers-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothers-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothers-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/others/ title=注册中心、服务发现与负载均衡 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothers><span>扩展实现</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersmulticast-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersmulticast-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersmulticast-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/others/multicast/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersmulticast><span>Multicast</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersconsul-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersconsul-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersconsul-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/others/consul/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersconsul><span>Consul</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersetcd-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersetcd-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersetcd-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/others/etcd/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersetcd><span>Etcd</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersredis-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersredis-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersredis-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/registry/others/redis/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualregistryothersredis><span>Redis</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-center-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-center-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-center-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-center><span>配置中心</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerintroduction-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerintroduction-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerintroduction-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/introduction/ title=配置中心 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerintroduction><span>配置中心概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerzookeeper-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerzookeeper-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerzookeeper-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerzookeeper><span>Zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centernacos-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centernacos-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centernacos-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centernacos><span>Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerapollo-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerapollo-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerapollo-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/apollo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerapollo><span>Apollo</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerothers-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerothers-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerothers-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/others/ title=更多配置中心扩展实现 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualconfig-centerothers><span>扩展实现</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-center-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-center-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-center-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-center><span>元数据中心</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centeroverview-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centeroverview-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centeroverview-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centeroverview><span>元数据中心概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centernacos-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centernacos-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centernacos-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centernacos><span>Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerzookeeper-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerzookeeper-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerzookeeper-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerzookeeper><span>Zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerothers-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerothers-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerothers-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/others/ title=更多元数据中心扩展实现 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualmetadata-centerothers><span>扩展实现</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformance-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualperformance-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualperformance-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/performance/ title=性能参考手册 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformance><span>性能Benchmark</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancerpc-benchmarking-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancerpc-benchmarking-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualperformancerpc-benchmarking-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/performance/rpc-benchmarking/ title="RPC 协议 Triple&Dubbo 基准测试" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancerpc-benchmarking><span>RPC 基准</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancepage-benchmarking-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancepage-benchmarking-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualperformancepage-benchmarking-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/performance/page-benchmarking/ title="RPC 基准测试 控制台" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancepage-benchmarking><span>RPC 控制台</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancebenchmarking-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancebenchmarking-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualperformancebenchmarking-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/performance/benchmarking/ title=应用级服务发现基准测试 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualperformancebenchmarking><span>应用级服务发现基准</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvm-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvm-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvm-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/graalvm/ title="Dubbo 集成 Graalvm参考手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvm><span>GraalVM</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvmsupport-graalvm-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvmsupport-graalvm-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvmsupport-graalvm-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/graalvm/support-graalvm/ title="Dubbo AOT -- 如何使用 GraalVM Native Image 实现 Dubbo 应用静态化" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualgraalvmsupport-graalvm><span>支持 GraalVM Native Image</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspi-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/ title="SPI 插件扩展点使用手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualspi><span>SPI插件扩展点</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspioverview-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspioverview-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspioverview-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/overview/ title="Dubbo SPI 概述" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspioverview><span>SPI 概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspispi-list-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspispi-list-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspispi-list-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/spi-list/ title="Dubbo SPI 插件及详情" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspispi-list><span>SPI 插件列表</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescription-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescription-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescription-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/ title="Dubbo SPI 插件定义及使用详细介绍" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescription><span>部分重点SPI使用说明</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionprotocol-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionprotocol-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionprotocol-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionprotocol><span>协议扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionfilter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionfilter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionfilter-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionfilter><span>调用拦截扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioninvoker-listener-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioninvoker-listener-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioninvoker-listener-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/invoker-listener/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioninvoker-listener><span>引用监听扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexporter-listener-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexporter-listener-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexporter-listener-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/exporter-listener/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexporter-listener><span>暴露监听扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncluster-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncluster-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncluster-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/cluster/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncluster><span>集群扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionrouter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionrouter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionrouter-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/router/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionrouter><span>路由扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionload-balance-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionload-balance-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionload-balance-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/load-balance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionload-balance><span>负载均衡扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmerger-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmerger-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmerger-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/merger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmerger><span>合并结果扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionregistry-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionregistry-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionregistry-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionregistry><span>注册中心扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmonitor-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmonitor-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmonitor-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/monitor/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmonitor><span>监控中心扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionextension-factory-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionextension-factory-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionextension-factory-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/extension-factory/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionextension-factory><span>扩展点加载扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionliveness-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionliveness-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionliveness-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/liveness/ title="Liveness 存活探针" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionliveness><span>存活探针</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionproxy-factory-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionproxy-factory-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionproxy-factory-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/proxy-factory/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionproxy-factory><span>动态代理扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionreadiness-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionreadiness-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionreadiness-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/readiness/ title="Readiness 就绪探针" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionreadiness><span>就绪探针</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstartup-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstartup-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstartup-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/startup/ title="Startup 启动探针" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstartup><span>启动探针</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncompiler-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncompiler-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncompiler-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/compiler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncompiler><span>编译器扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionconfig-center-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionconfig-center-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionconfig-center-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/config-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionconfig-center><span>配置中心扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmetadata-report-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmetadata-report-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmetadata-report-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/metadata-report/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionmetadata-report><span>元数据中心扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiondispatcher-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiondispatcher-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiondispatcher-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dispatcher/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiondispatcher><span>消息派发扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionthreadpool-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionthreadpool-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionthreadpool-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/threadpool/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionthreadpool><span>线程池扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionserialize-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionserialize-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionserialize-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/serialize/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionserialize><span>序列化扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionremoting-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionremoting-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionremoting-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/remoting/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionremoting><span>网络传输扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexchanger-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexchanger-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexchanger-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/exchanger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionexchanger><span>信息交换扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionpage-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionpage-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionpage-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/page/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionpage><span>对等网络节点组网器扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionnetworker-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionnetworker-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionnetworker-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/networker/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionnetworker><span>组网扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiontelnet-handler-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiontelnet-handler-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiontelnet-handler-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/telnet-handler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptiontelnet-handler><span>Telnet 命令扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstatus-checker-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstatus-checker-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstatus-checker-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/status-checker/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionstatus-checker><span>状态检查扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncontainer-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncontainer-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncontainer-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/container/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncontainer><span>容器扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncache-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncache-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncache-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/cache/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptioncache><span>缓存扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionvalidation-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionvalidation-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionvalidation-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/validation/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionvalidation><span>验证扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionlogger-adapter-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionlogger-adapter-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionlogger-adapter-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/logger-adapter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionlogger-adapter><span>日志适配扩展</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionqos-permission-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionqos-permission-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionqos-permission-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/qos-permission/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualspidescriptionqos-permission><span>QoS匿名访问权限验证扩展</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqos-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqos-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqos-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/ title="QOS 操作手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualqos><span>单机运维命令(QOS)</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosoverview-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosoverview-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosoverview-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosoverview><span>QOS 概述</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosqos-list-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosqos-list-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosqos-list-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/qos-list/ title="QoS 命令列表,命令大全" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosqos-list><span>命令列表</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroduction-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroduction-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroduction-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/ title=包含对每个命令的使用方法、效果的详细说明 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroduction><span>部分命令详解</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductioncommand-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductioncommand-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductioncommand-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/command/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductioncommand><span>基础命令手册</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionservice-management-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionservice-management-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionservice-management-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/service-management/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionservice-management><span>服务管理命令</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprobe-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprobe-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprobe-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/probe/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprobe><span>框架状态命令</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionlogger-management-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionlogger-management-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionlogger-management-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/logger-management/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionlogger-management><span>日志框架运行时管理</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprofiler-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprofiler-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprofiler-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/profiler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionprofiler><span>性能采样命令</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionrouter-snapshot-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionrouter-snapshot-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionrouter-snapshot-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/router-snapshot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionrouter-snapshot><span>路由状态命令</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionsecurity-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionsecurity-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionsecurity-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/security/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductionsecurity><span>序列化安全审计</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductiondefault_metrics-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductiondefault_metrics-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductiondefault_metrics-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/qos/introduction/default_metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualqosintroductiondefault_metrics><span>默认监控指标命令</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualrouting-rule-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualrouting-rule-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualrouting-rule-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/routing-rule/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualrouting-rule><span>路由规则</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecture-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecture-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecture-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecture><span>源码架构</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-protocol-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-protocol-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-protocol-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/multi-protocol/ title=单端口多协议实现原理解析 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-protocol><span>单端口多协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturecode-architecture-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturecode-architecture-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturecode-architecture-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/code-architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturecode-architecture><span>代码架构</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitectureservice-invocation-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitectureservice-invocation-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitectureservice-invocation-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/service-invocation/ title=服务调用扩展点 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitectureservice-invocation><span>服务调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instance-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instance-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instance-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instance><span>多实例部署</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemulti-instance-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemulti-instance-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemulti-instance-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/multi-instance/ title=多实例部署的设计理念 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemulti-instance><span>多实例设计理念</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemodel-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemodel-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemodel-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/model/ title=多实例相关的模型与概念定义 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancemodel><span>模型与概念</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instanceworkflow-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instanceworkflow-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instanceworkflow-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/workflow/ title=多实例启动流程与模块依赖关系 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instanceworkflow><span>启动流程与模块依赖关系</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancedevelop-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancedevelop-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancedevelop-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/develop/ title="多实例让源码开发更复杂,学习如何正确的扩展 SPI 实现" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturemulti-instancedevelop><span>如果在源码中操作实例</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualarchitecturedubbo-spi><span>扩展点开发指南</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq><span>错误码 FAQ</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq0-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq0-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq0-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq0><span>0 - Common 层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq01-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq01-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq01-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq01><span>0-1 - 线程池资源枯竭</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq02-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq02-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq02-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq02><span>0-2 - 非法属性值</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq03-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq03-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq03-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq03><span>0-3 - 无法访问缓存路径</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq04-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq04-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq04-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq04><span>0-4 - 缓存条目超限</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq05-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq05-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq05-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq05><span>0-5 - 缓存文件大小超限</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq06-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq06-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq06-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq06><span>0-6 - 线程中断异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq07-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq07-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq07-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq07><span>0-7 - 未找到反射类</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq08-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq08-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq08-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq08><span>0-8 - 反射失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq09-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq09-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq09-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq09><span>0-9 - 通知事件失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq010-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq010-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq010-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq010><span>0-10 - 当前调用不在支持</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq011-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq011-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq011-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq011><span>0-11 - 服务停止失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq012-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq012-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq012-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq012><span>0-12 - 未知异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq013-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq013-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq013-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq013><span>0-13 - 指标收集器发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq014-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq014-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq014-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq014><span>0-14 - 监控异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq015-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq015-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq015-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq015><span>0-15 - 加载扩展类时发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq016-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq016-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq016-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq016><span>0-16 - 没有可用的执行器</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq017-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq017-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq017-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq017><span>0-17 - 执行器在关闭时发生未知异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq018-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq018-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq018-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq018><span>0-18 - 线程池执行器被错误使用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq019-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq019-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq019-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq019><span>0-19 - 处理任务时发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq020-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq020-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq020-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq020><span>0-20 - 存储堆栈信息时发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq021-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq021-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq021-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/21/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq021><span>0-21 - 构建的实例过多</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq022-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq022-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq022-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/22/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq022><span>0-22 - 输入输出流异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq023-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq023-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq023-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/23/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq023><span>0-23 - 序列化数据转换异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq024-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq024-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq024-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/24/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq024><span>0-24 - 覆盖字段值异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq025-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq025-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq025-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/25/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq025><span>0-25 - 加载映射错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq026-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq026-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq026-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/26/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq026><span>0-26 - 元数据发布服务时的警告信息</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq027-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq027-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq027-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/27/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq027><span>0-27 - 线程池隔离配置异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq028-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq028-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq028-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/28/ title="0-28 - 操作了可能会引起危险的行为" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq028><span>0-28 - 危险的行为</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq029-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq029-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq029-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/29/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq029><span>0-29 - 未找到Tracer依赖</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq099-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq099-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq099-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/0/99/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq099><span>0-99 - 调用了过时 (Deprecated) 的方法</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq1-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq1-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq1-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq1><span>1 - 注册中心层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq11-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq11-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq11-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq11><span>1-1 - 地址非法</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq13-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq13-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq13-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq13><span>1-3 - URL 销毁失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq14-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq14-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq14-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq14><span>1-4 - 空地址</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq15-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq15-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq15-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq15><span>1-5 - 接收到没有任何参数的 URL</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq16-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq16-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq16-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq16><span>1-6 - 清空URL缓存出错</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq17-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq17-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq17-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/7/ title="1-7 - 通知注册事件失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq17><span>1-7 - 读写注册中心服务缓存失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq18-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq18-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq18-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq18><span>1-8 - 销毁时注销(取消订阅)地址失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq19-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq19-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq19-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq19><span>1-9 - 读写注册中心服务缓存失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq110-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq110-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq110-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq110><span>1-10 - 读写注册中心服务缓存失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq111-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq111-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq111-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq111><span>1-11 - 注册服务实例创建失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq112-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq112-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq112-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq112><span>1-12 - “注册服务” 的实例均已销毁</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq113-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq113-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq113-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq113><span>1-13 - 执行重试任务失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq114-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq114-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq114-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq114><span>1-14 - 动态配置识别失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq115-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq115-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq115-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq115><span>1-15 - 销毁服务失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq116-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq116-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq116-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq116><span>1-16 - 存在不支持的类别</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq117-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq117-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq117-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq117><span>1-17 - metadata Server 失效</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq118-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq118-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq118-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/18/ title="1-18 - 未提供 metadata service 端口" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq118><span>1-18 - 未提供 metadata service 端口</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq119-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq119-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq119-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/19/ title="1-19 - K8S监听异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq119><span>1-19 - K8S监听异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq120-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq120-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq120-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/20/ title="1-20 - K8S Pod不存在" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq120><span>1-20 - K8S Pod不存在</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq121-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq121-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq121-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/21/ title="1-21 - K8S 无可用服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq121><span>1-21 - K8S 无可用服务</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq122-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq122-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq122-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/22/ title="1-22 - K8S 配置地址错误" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq122><span>1-22 - K8S 配置地址错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq126-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq126-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq126-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/26/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq126><span>1-26 - xDS 证书生成失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq127-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq127-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq127-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/27/ title="1-27 - K8S监听异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq127><span>1-27 - K8S监听异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq128-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq128-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq128-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/28/ title="1-28 - xDS 存根错误" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq128><span>1-28 - xDS 存根错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq129-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq129-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq129-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/29/ title="1-29 - xDS 读取文件失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq129><span>1-29 - xDS 读取文件失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq130-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq130-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq130-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/30/ title="1-30 - xDS 请求失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq130><span>1-30 - xDS 请求失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq131-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq131-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq131-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/31/ title="1-31 - xDS 响应失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq131><span>1-31 - xDS 响应失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq132-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq132-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq132-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/32/ title="1-32 - xDS Channel 初始化失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq132><span>1-32 - xDS Channel 初始化失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq133-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq133-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq133-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/33/ title="1-33 - xDS 服务发现初始化失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq133><span>1-33 - xDS 服务发现初始化失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq134-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq134-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq134-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/34/ title="1-34 - xDS 解析发生错误" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq134><span>1-34 - xDS 解析发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq135-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq135-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq135-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/35/ title="1-35 - ZK 异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq135><span>1-35 - ZK 异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq136-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq136-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq136-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/36/ title="1-36 - 未知异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq136><span>1-36 - 未知异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq137-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq137-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq137-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/37/ title="1-37 - Nacos 异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq137><span>1-37 - Nacos 异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq138-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq138-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq138-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/38/ title="1-38 - Socket 连接异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq138><span>1-38 - Socket 连接异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq139-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq139-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq139-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/39/ title="1-39 - 获取元数据失败" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq139><span>1-39 - 获取元数据失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq140-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq140-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq140-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/40/ title="1-40 - 路由等待时间过长" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq140><span>1-40 - 路由等待时间过长</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq141-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq141-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq141-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/41/ title="1-41 - Istio 异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq141><span>1-41 - Istio 异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq142-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq142-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq142-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/1/42/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq142><span>1-42 - Nacos 存在低版本服务</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq2-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq2-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq2-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq2><span>2 - 路由层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq21-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq21-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq21-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq21><span>2-1 - 路由选址执行失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq22-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq22-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq22-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq22><span>2-2 - 没有可用的 Provider(地址找不到)</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq23-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq23-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq23-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq23><span>2-3 - 路由关闭失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq24-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq24-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq24-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq24><span>2-4 - Merger接口加载失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq25-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq25-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq25-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq25><span>2-5 - 筛选提供方失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq26-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq26-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq26-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq26><span>2-6 - 条件路由筛选提供方列表为空</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq27-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq27-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq27-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq27><span>2-7 - 条件路由执行异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq28-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq28-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq28-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq28><span>2-8 - 提供方返回异常响应</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq29-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq29-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq29-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq29><span>2-9 - 增加超时检查任务失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq210-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq210-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq210-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq210><span>2-10 - 调用服务提供方失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq211-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq211-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq211-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq211><span>2-11 - 标签路由规则不合法</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq212-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq212-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq212-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq212><span>2-12 - 标签路由获取提供方应用名为空</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq213-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq213-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq213-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq213><span>2-13 - 接收加载mesh的路由规则失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq214-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq214-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq214-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq214><span>2-14 - 脚本路由执行失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq215-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq215-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq215-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq215><span>2-15 - 路由规则解析失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq216-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq216-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq216-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq216><span>2-16 - 请求重试多次失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq217-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq217-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq217-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq217><span>2-17 - mock请求失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq218-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq218-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq218-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq218><span>2-18 - mesh路由规则未被监听</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq219-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq219-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq219-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq219><span>2-19 - 异步请求失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq220-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq220-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq220-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/2/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq220><span>2-20 - 获取分组结果合并时失败</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq3-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq3-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq3-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq3><span>3 - 动态代理层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq31-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq31-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq31-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq31><span>3-1 - 将地址转换成 Invoker 失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq32-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq32-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq32-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq32><span>3-2 - 发布或推送服务失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq33-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq33-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq33-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq33><span>3-3 - 通过Javassist生成字节码失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq34-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq34-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq34-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq34><span>3-4 - 客户端发送请求超时</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq35-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq35-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq35-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq35><span>3-5 - 异步响应出现异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq36-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq36-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq36-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq36><span>3-6 - 代理执行服务发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq37-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq37-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq37-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq37><span>3-7 - 服务端响应结果超时</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq38-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq38-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq38-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/3/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq38><span>3-8 - 代理失败</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq4-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq4-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq4-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq4><span>4 - 协议层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq41-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq41-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq41-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq41><span>4-1 - 不支持的协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq42-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq42-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq42-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq42><span>4-2 - 序列化优化器初始发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq43-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq43-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq43-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq43><span>4-3 - 接口引用调用失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq44-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq44-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq44-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq44><span>4-4 - 非安全序列化方式</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq45-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq45-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq45-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq45><span>4-5 - 流关闭异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq46-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq46-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq46-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq46><span>4-6 - 反序列化失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq47-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq47-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq47-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq47><span>4-7 - 关闭客户端时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq48-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq48-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq48-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq48><span>4-8 - 关闭服务端时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq49-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq49-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq49-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq49><span>4-9 - 解析失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq410-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq410-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq410-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq410><span>4-10 - Triple 序列化结果失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq411-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq411-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq411-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq411><span>4-11 - 发起请求失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq412-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq412-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq412-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq412><span>4-12 - 创建Triple流失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq413-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq413-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq413-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq413><span>4-13 - 服务端超时</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq414-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq414-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq414-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq414><span>4-14 - 响应结果失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq415-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq415-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq415-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq415><span>4-15 - 客户端流监听器</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq416-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq416-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq416-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq416><span>4-16 - 服务已关闭</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq417-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq417-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq417-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq417><span>4-17 - 关闭所有调用程序时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq418-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq418-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq418-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq418><span>4-18 - 无法从调用中获取服务模型</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq419-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq419-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq419-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq419><span>4-19 - 参数值有出错的可能</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq420-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq420-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq420-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq420><span>4-20 - 数据解码失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq421-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq421-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq421-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/21/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq421><span>4-21 - 检测到不安全的序列化数据</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq5-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq5-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq5-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq5><span>5 - 配置(中心)层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq51-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq51-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq51-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq51><span>5-1 - 配置中心连接失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq52-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq52-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq52-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq52><span>5-2 - 注册/注销关闭钩子方法失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq53-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq53-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq53-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq53><span>5-3 - 销毁方法调用时发生意外错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq54-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq54-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq54-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq54><span>5-4 - 服务接口中找不到方法</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq55-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq55-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq55-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq55><span>5-5 - 无法获得env变量</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq56-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq56-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq56-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq56><span>5-6 - 接口类型的属性冲突</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq57-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq57-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq57-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq57><span>5-7 - 取消导出时发生意外错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq58-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq58-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq58-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq58><span>5-8 - 协议将使用随机可用端口</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq59-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq59-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq59-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq59><span>5-9 - 服务配置导出失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq510-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq510-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq510-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq510><span>5-10 - 服务的注册接口应用程序映射失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq511-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq511-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq511-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq511><span>5-11 - 注册实例错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq512-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq512-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq512-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq512><span>5-12 - 刷新实例和元数据错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq513-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq513-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq513-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq513><span>5-13 - 无法销毁模型</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq514-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq514-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq514-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq514><span>5-14 - 模型启动错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq515-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq515-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq515-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq515><span>5-15 - 模型引用错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq516-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq516-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq516-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq516><span>5-16 - 无法找到任何有效的协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq517-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq517-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq517-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq517><span>5-17 - 参数值格式错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq518-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq518-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq518-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq518><span>5-18 - 通知注册事件失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq520-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq520-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq520-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq520><span>5-20 - 停止 dubbo 模块时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq521-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq521-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq521-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/21/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq521><span>5-21 - 服务销毁时发生异常错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq522-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq522-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq522-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/22/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq522><span>5-22 - 注册中心在初始化时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq523-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq523-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq523-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/23/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq523><span>5-23 - 等待导出/引用服务发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq524-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq524-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq524-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/24/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq524><span>5-24 - 异步等待引用服务发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq525-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq525-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq525-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/25/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq525><span>5-25 - 自定义实现发生未定义异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq526-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq526-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq526-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/26/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq526><span>5-26 - 元数据已导出</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq527-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq527-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq527-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/27/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq527><span>5-27 - 内部类API被错误使用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq528-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq528-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq528-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/28/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq528><span>5-28 - 未发现可用注解</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq529-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq529-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq529-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/29/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq529><span>5-29 - 扫描包未配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq530-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq530-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq530-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/30/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq530><span>5-30 - 声明bean定义重复</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq531-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq531-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq531-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/31/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq531><span>5-31 - 状态检查错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq532-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq532-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq532-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/32/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq532><span>5-32 - Apollo 断开连接时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq533-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq533-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq533-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/33/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq533><span>5-33 - Apollo 配置更新事件发生异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq534-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq534-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq534-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/34/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq534><span>5-34 - NACOS 发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq535-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq535-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq535-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/35/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq535><span>5-35 - 容器初始化失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq536-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq536-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq536-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/36/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq536><span>5-36 - 过滤器校验时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq537-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq537-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq537-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/37/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq537><span>5-37 - 动态配置监听处理发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq538-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq538-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq538-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/38/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq538><span>5-38 - 配置参数未定义</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq539-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq539-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq539-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/39/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq539><span>5-39 - Dubbo配置bean初始化器发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq540-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq540-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq540-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/40/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq540><span>5-40 - Dubbo配置bean未找到</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq541-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq541-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq541-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/41/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq541><span>5-41 - SSL证书读取失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq542-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq542-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq542-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/42/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq542><span>5-42 - Dubbo 证书签发失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq543-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq543-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq543-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/5/43/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq543><span>5-43 - Dubbo 证书签发连接不安全</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq6-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq6-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq6-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq6><span>6 - 网络传输层</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq61-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq61-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq61-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq61><span>6-1 - 服务端连接失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq62-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq62-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq62-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq62><span>6-2 - 客户端超时</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq63-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq63-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq63-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq63><span>6-3 - 网络连接关闭失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq64-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq64-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq64-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq64><span>6-4 - 网络通讯层未知异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq65-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq65-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq65-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq65><span>6-5 - 网络连接断开失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq66-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq66-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq66-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq66><span>6-6 - 不支持的消息</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq67-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq67-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq67-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/7/ title="6-7 - 线程连接数超限警告" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq67><span>6-7 - 服务端连接失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq68-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq68-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq68-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq68><span>6-8 - 返回数据解码失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq69-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq69-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq69-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/9/ title="6-9 - 序列号ID存在重复" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq69><span>6-9 - 服务端连接失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq610-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq610-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq610-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq610><span>6-10 - 超过有效载荷限制异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq611-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq611-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq611-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq611><span>6-11 - 字符集不被支持</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq612-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq612-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq612-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq612><span>6-12 - ZK客户端销毁时发生错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq613-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq613-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq613-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq613><span>6-13 - 流关闭异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq614-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq614-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq614-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq614><span>6-14 - 服务端响应失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq615-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq615-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq615-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq615><span>6-15 - 跳过未读完的流数据</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq616-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq616-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq616-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/6/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq616><span>6-16 - 重连时发生异常</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq7-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq7-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq7-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq7><span>7 - QoS 插件模块</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq71-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq71-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq71-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq71><span>7-1 - QOS 已关闭</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq72-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq72-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq72-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq72><span>7-2 - QOS 已开启</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq73-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq73-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq73-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq73><span>7-3 - 设置超时时间的警告百分比值</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq74-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq74-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq74-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq74><span>7-4 - QOS 服务启动失败</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq75-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq75-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq75-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq75><span>7-5 - QOS 命令未找到</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq76-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq76-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq76-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq76><span>7-6 - QOS 发生未知异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq77-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq77-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq77-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/7/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq77><span>7-7 - QOS 无权限访问</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq81-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq81-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq81-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/81/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq81><span>81 - 单元测试辅助模块(注册中心)</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq811-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq811-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq811-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/81/1/ title="81-1 - ZK 启动异常" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq811><span>81-1 - ZK 启动异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq812-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq812-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq812-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/81/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq812><span>81-2 - ZK 销毁异常</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq813-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq813-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq813-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/81/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq813><span>81-3 - 通过url无法下载文件</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq814-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq814-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq814-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/81/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq814><span>81-4 - 嵌入式ZooKeeper运行异常</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq99-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq99-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq99-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/99/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq99><span>99 - 其它未知错误</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq990-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq990-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq990-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/99/0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq990><span>99-0 - 内部未知错误</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq991-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq991-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaq991-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/99/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaq991><span>99-1 - 程序被打断</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaqintro-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualfaqintro-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualfaqintro-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/faq/intro/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualfaqintro><span>错误码机制的介绍</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibility-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibility-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibility-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibility><span>升级和兼容性</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration/ title="从 dubbo2 升级到 dubbo3(涵盖 2.5.x、2.6.x、2.7.x 等版本)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration><span>升级到Dubbo3</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-triple-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-triple-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-triple-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-triple><span>升级到triple协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-service-discovery-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-service-discovery-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-service-discovery-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilitymigration-service-discovery><span>升级到应用级服务发现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion><span>版本变更记录</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion2x-to-3x-compatibility-guide-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion2x-to-3x-compatibility-guide-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion2x-to-3x-compatibility-guide-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/2.x-to-3.x-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion2x-to-3x-compatibility-guide><span>2.x 升级至 3.x</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion30-to-31-compatibility-guide-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion30-to-31-compatibility-guide-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion30-to-31-compatibility-guide-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.0-to-3.1-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion30-to-31-compatibility-guide><span>3.0 升级至 3.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion31-to-32-compatibility-guide-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion31-to-32-compatibility-guide-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion31-to-32-compatibility-guide-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.1-to-3.2-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion31-to-32-compatibility-guide><span>3.1 升级至 3.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion32-to-33-compatibility-guide-li><input type=checkbox id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion32-to-33-compatibility-guide-check> |
| <label for=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion32-to-33-compatibility-guide-check><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.2-to-3.3-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualjava-sdkreference-manualupgrades-and-compatibilityversion32-to-33-compatibility-guide><span>3.2 升级至 3.3</span></a></label></li></ul></li></ul></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdk-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdk-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdk-check><a href=/zh-cn/overview/mannual/golang-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdk><span>Golang SDK</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkversions-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkversions-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkversions-check><a href=/zh-cn/overview/mannual/golang-sdk/versions/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkversions><span>版本信息</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkintroduction-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkintroduction-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkintroduction-check><a href=/zh-cn/overview/mannual/golang-sdk/introduction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkintroduction><span>框架介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdkquickstart-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkquickstart-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkquickstart-check><a href=/zh-cn/overview/mannual/golang-sdk/quickstart/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdkquickstart><span>快速开始</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkquickstartrpc-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkquickstartrpc-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkquickstartrpc-check><a href=/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/ title="开发 RPC Server & RPC Client" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkquickstartrpc><span>开发RPC服务</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkquickstartmicroservices-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkquickstartmicroservices-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkquickstartmicroservices-check><a href=/zh-cn/overview/mannual/golang-sdk/quickstart/microservices/ title=开发微服务 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkquickstartmicroservices><span>开发微服务应用</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorial-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorial-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorial-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorial><span>使用教程</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpc-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpc-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpc-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialrpc><span>RPC框架</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcstreaming-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcstreaming-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcstreaming-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/streaming/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcstreaming><span>流式通信</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpctimeout-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpctimeout-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpctimeout-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/timeout/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpctimeout><span>超时时间</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpchealthcheck-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpchealthcheck-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpchealthcheck-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/healthcheck/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpchealthcheck><span>健康检查</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcretry-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcretry-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcretry-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/retry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcretry><span>请求重试</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcprotocol-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcprotocol-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcprotocol-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcprotocol><span>通信协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcerror-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcerror-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcerror-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/error/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcerror><span>异常类型返回值</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcattachments-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcattachments-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcattachments-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/attachments/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcattachments><span>传递附加参数</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcstart-check-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcstart-check-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcstart-check-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/start-check/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcstart-check><span>启动时检查</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcfilter-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialrpcfilter-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialrpcfilter-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialrpcfilter><span>filter拦截器</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discovery-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discovery-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialservice-discovery-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discovery><span>地址发现</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverynacos-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverynacos-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverynacos-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverynacos><span>使用 Nacos 作为注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoveryzookeeper-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoveryzookeeper-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoveryzookeeper-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoveryzookeeper><span>使用 Zookeeper 作为注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverymulti_registry-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverymulti_registry-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverymulti_registry-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/multi_registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialservice-discoverymulti_registry><span>多注册中心</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialload-balance-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialload-balance-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialload-balance-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/load-balance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialload-balance><span>负载均衡</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialload-balanceloadbalance-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialload-balanceloadbalance-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialload-balanceloadbalance-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/load-balance/loadbalance/ title=负载均衡策略与配置细节 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialload-balanceloadbalance><span>负载均衡</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialconfiguration-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialconfiguration-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialconfiguration-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/configuration/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialconfiguration><span>配置文件</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationfile-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationfile-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationfile-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/configuration/file/ title="使用 dubbogo.yml 配置文件开发应用" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationfile><span>本地配置文件</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationremote-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationremote-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationremote-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/configuration/remote/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialconfigurationremote><span>远程配置文件</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialobservability-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialobservability-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialobservability-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/observability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialobservability><span>可视化观测</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitylogger-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitylogger-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitylogger-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/observability/logger/ title=配置和管理框架日志 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitylogger><span>框架日志</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilityrpc_metrics-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilityrpc_metrics-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialobservabilityrpc_metrics-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilityrpc_metrics><span>metrics监控</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitytracing-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitytracing-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitytracing-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/observability/tracing/ title=链路追踪 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialobservabilitytracing><span>全链路追踪</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialtraffic-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialtraffic-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialtraffic-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialtraffic><span>流量管控</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialtrafficrouter-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialtrafficrouter-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialtrafficrouter-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/router/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialtrafficrouter><span>路由规则</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialtrafficsentinel-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialtrafficsentinel-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialtrafficsentinel-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/sentinel/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialtrafficsentinel><span>Sentinel限流降级</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialgateway-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialgateway-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialgateway-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/ title=HTTP流量接入 class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialgateway><span>HTTP网关接入</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialgatewayhttp_triple-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialgatewayhttp_triple-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialgatewayhttp_triple-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/http_triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialgatewayhttp_triple><span>接入 Ingress 流量</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialgatewaypixiu-nacos-triple-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialgatewaypixiu-nacos-triple-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialgatewaypixiu-nacos-triple-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/pixiu-nacos-triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialgatewaypixiu-nacos-triple><span>使用 Pixiu 暴露 Dubbo-go 服务</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialtransaction-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialtransaction-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialtransaction-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/transaction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialtransaction><span>分布式事务</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialtransactionseata-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialtransactionseata-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialtransactionseata-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/transaction/seata/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialtransactionseata><span>Seata分布式事务</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbo-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbo-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbo-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbo><span>与dubbo-java互通</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_triple_protobuf-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_triple_protobuf-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_triple_protobuf-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java_protocol_triple_protobuf/ title="基于 protobuf 实现 triple 协议互通(适用于两边都用 protobuf 开发的场景)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_triple_protobuf><span>protobuf+triple 协议互通</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_dubbo_non_protobuf-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_dubbo_non_protobuf-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_dubbo_non_protobuf-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java_protocol_dubbo_non_protobuf/ title="非protoubf模式协议互通(适用于老版本 dubbo java 应用)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubbocall_java_protocol_dubbo_non_protobuf><span>非protoubf模式协议互通</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubboservice-discovery-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubboservice-discovery-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubboservice-discovery-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/service-discovery/ title=基于应用级服务发现实现地址互通 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-dubboservice-discovery><span>服务发现实现地址互通</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpc-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpc-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpc-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpc><span>与grpc互通</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpccall_grpc-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpccall_grpc-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpccall_grpc-check><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/call_grpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdktutorialinterop-grpccall_grpc><span>与 gRPC 应用互通</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdkrefer-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefer-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefer-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdkrefer><span>参考手册</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkreferecology-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkreferecology-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkreferecology-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/ecology/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkreferecology><span>生态组件</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefergeneric-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefergeneric-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefergeneric-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/generic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefergeneric><span>泛化调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkreferuse_dubbogo_cli-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkreferuse_dubbogo_cli-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkreferuse_dubbogo_cli-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkreferuse_dubbogo_cli><span>使用 dubbogo-cli 工具</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecode-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecode-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecode-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecode><span>源码解读</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeprotocol-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeprotocol-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeprotocol-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeprotocol><span>网络协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecoderegistry-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecoderegistry-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecoderegistry-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecoderegistry><span>注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecode30_feature-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecode30_feature-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecode30_feature-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/3.0_feature/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecode30_feature><span>新特性</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/generic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric><span>泛化调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-2-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-2-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-2-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/generic-2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodegeneric-2><span>泛化调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeaop_and_extension-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeaop_and_extension-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeaop_and_extension-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/aop_and_extension/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeaop_and_extension><span>AOP 与可扩展机制</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeapp_and_interface-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeapp_and_interface-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeapp_and_interface-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/app_and_interface/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodeapp_and_interface><span>Dubbo的应用和接口</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodearchitecture-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodearchitecture-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefersourcecodearchitecture-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefersourcecodearchitecture><span>架构</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualgolang-sdkrefernacos-li><input type=checkbox id=m-zh-cnoverviewmannualgolang-sdkrefernacos-check> |
| <label for=m-zh-cnoverviewmannualgolang-sdkrefernacos-check><a href=/zh-cn/overview/mannual/golang-sdk/refer/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualgolang-sdkrefernacos><span>使用 Nacos 作为注册中心</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualnodejs-sdk-li><input type=checkbox id=m-zh-cnoverviewmannualnodejs-sdk-check> |
| <label for=m-zh-cnoverviewmannualnodejs-sdk-check><a href=/zh-cn/overview/mannual/nodejs-sdk/ title="Node.js SDK 手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualnodejs-sdk><span>Node.js SDK</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualnodejs-sdkquick-start-li><input type=checkbox id=m-zh-cnoverviewmannualnodejs-sdkquick-start-check> |
| <label for=m-zh-cnoverviewmannualnodejs-sdkquick-start-check><a href=/zh-cn/overview/mannual/nodejs-sdk/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualnodejs-sdkquick-start><span>快速开始</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualweb-sdk-li><input type=checkbox id=m-zh-cnoverviewmannualweb-sdk-check> |
| <label for=m-zh-cnoverviewmannualweb-sdk-check><a href=/zh-cn/overview/mannual/web-sdk/ title="Web SDK 手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualweb-sdk><span>Web SDK</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualweb-sdkquick-start-li><input type=checkbox id=m-zh-cnoverviewmannualweb-sdkquick-start-check> |
| <label for=m-zh-cnoverviewmannualweb-sdkquick-start-check><a href=/zh-cn/overview/mannual/web-sdk/quick-start/ title="Web 浏览器访问 Dubbo 服务" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualweb-sdkquick-start><span>Web浏览器访问Dubbo服务</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualrust-sdk-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdk-check> |
| <label for=m-zh-cnoverviewmannualrust-sdk-check><a href=/zh-cn/overview/mannual/rust-sdk/ title="Rust SDK 手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualrust-sdk><span>Rust SDK</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualrust-sdkquick-start-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdkquick-start-check> |
| <label for=m-zh-cnoverviewmannualrust-sdkquick-start-check><a href=/zh-cn/overview/mannual/rust-sdk/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualrust-sdkquick-start><span>快速开始</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualrust-sdkjava-interoperability-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdkjava-interoperability-check> |
| <label for=m-zh-cnoverviewmannualrust-sdkjava-interoperability-check><a href=/zh-cn/overview/mannual/rust-sdk/java-interoperability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualrust-sdkjava-interoperability><span>Rust和Java互相调用</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualrust-sdkservice-discovery-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdkservice-discovery-check> |
| <label for=m-zh-cnoverviewmannualrust-sdkservice-discovery-check><a href=/zh-cn/overview/mannual/rust-sdk/service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualrust-sdkservice-discovery><span>服务发现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualrust-sdkrouter-module-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdkrouter-module-check> |
| <label for=m-zh-cnoverviewmannualrust-sdkrouter-module-check><a href=/zh-cn/overview/mannual/rust-sdk/router-module/ title=服务路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualrust-sdkrouter-module><span>服务路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualrust-sdkstreaming-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdkstreaming-check> |
| <label for=m-zh-cnoverviewmannualrust-sdkstreaming-check><a href=/zh-cn/overview/mannual/rust-sdk/streaming/ title="Streaming 通信模型" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualrust-sdkstreaming><span>Streaming通信模型</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualrust-sdkunix-transport-li><input type=checkbox id=m-zh-cnoverviewmannualrust-sdkunix-transport-check> |
| <label for=m-zh-cnoverviewmannualrust-sdkunix-transport-check><a href=/zh-cn/overview/mannual/rust-sdk/unix-transport/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualrust-sdkunix-transport><span>使用Unix套接字连接器通信</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewmannualcontrol-plane-li><input type=checkbox id=m-zh-cnoverviewmannualcontrol-plane-check> |
| <label for=m-zh-cnoverviewmannualcontrol-plane-check><a href=/zh-cn/overview/mannual/control-plane/ title="Admin 控制台操作手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewmannualcontrol-plane><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-cnoverviewmannualcontrol-planearchitecture-li><input type=checkbox id=m-zh-cnoverviewmannualcontrol-planearchitecture-check> |
| <label for=m-zh-cnoverviewmannualcontrol-planearchitecture-check><a href=/zh-cn/overview/mannual/control-plane/architecture/ title="Admin 整体架构与安装步骤" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualcontrol-planearchitecture><span>架构与安装</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualcontrol-planesearch-li><input type=checkbox id=m-zh-cnoverviewmannualcontrol-planesearch-check> |
| <label for=m-zh-cnoverviewmannualcontrol-planesearch-check><a href=/zh-cn/overview/mannual/control-plane/search/ title="Admin 服务查询" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualcontrol-planesearch><span>文档查询</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualcontrol-planetest-li><input type=checkbox id=m-zh-cnoverviewmannualcontrol-planetest-check> |
| <label for=m-zh-cnoverviewmannualcontrol-planetest-check><a href=/zh-cn/overview/mannual/control-plane/test/ title="Admin 服务测试功能简介" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualcontrol-planetest><span>服务测试</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewmannualcontrol-planemock-li><input type=checkbox id=m-zh-cnoverviewmannualcontrol-planemock-check> |
| <label for=m-zh-cnoverviewmannualcontrol-planemock-check><a href=/zh-cn/overview/mannual/control-plane/mock/ title="Admin 服务 Mock 功能简介" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewmannualcontrol-planemock><span>服务Mock</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreference-li><input type=checkbox id=m-zh-cnoverviewreference-check> |
| <label for=m-zh-cnoverviewreference-check><a href=/zh-cn/overview/reference/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreference><span>其他</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencemetrics-li><input type=checkbox id=m-zh-cnoverviewreferencemetrics-check> |
| <label for=m-zh-cnoverviewreferencemetrics-check><a href=/zh-cn/overview/reference/metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencemetrics><span>Metrics</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencemetricsstandard_metrics-li><input type=checkbox id=m-zh-cnoverviewreferencemetricsstandard_metrics-check> |
| <label for=m-zh-cnoverviewreferencemetricsstandard_metrics-check><a href=/zh-cn/overview/reference/metrics/standard_metrics/ title="Dubbo 框架标准监控指标" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencemetricsstandard_metrics><span>标准监控指标</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferenceintegrations-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrations-check> |
| <label for=m-zh-cnoverviewreferenceintegrations-check><a href=/zh-cn/overview/reference/integrations/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferenceintegrations><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-cnoverviewreferenceintegrationsprometheus-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationsprometheus-check> |
| <label for=m-zh-cnoverviewreferenceintegrationsprometheus-check><a href=/zh-cn/overview/reference/integrations/prometheus/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationsprometheus><span>Prometheus</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceintegrationsgrafana-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationsgrafana-check> |
| <label for=m-zh-cnoverviewreferenceintegrationsgrafana-check><a href=/zh-cn/overview/reference/integrations/grafana/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationsgrafana><span>Grafana</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceintegrationsskywalking-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationsskywalking-check> |
| <label for=m-zh-cnoverviewreferenceintegrationsskywalking-check><a href=/zh-cn/overview/reference/integrations/skywalking/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationsskywalking><span>Skywalking</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceintegrationszipkin-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationszipkin-check> |
| <label for=m-zh-cnoverviewreferenceintegrationszipkin-check><a href=/zh-cn/overview/reference/integrations/zipkin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationszipkin><span>Zipkin</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceintegrationsnacos-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationsnacos-check> |
| <label for=m-zh-cnoverviewreferenceintegrationsnacos-check><a href=/zh-cn/overview/reference/integrations/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationsnacos><span>Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceintegrationshigress-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationshigress-check> |
| <label for=m-zh-cnoverviewreferenceintegrationshigress-check><a href=/zh-cn/overview/reference/integrations/higress/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationshigress><span>Higress</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceintegrationszookeeper-li><input type=checkbox id=m-zh-cnoverviewreferenceintegrationszookeeper-check> |
| <label for=m-zh-cnoverviewreferenceintegrationszookeeper-check><a href=/zh-cn/overview/reference/integrations/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceintegrationszookeeper><span>Zookeeper</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferenceproposals-li><input type=checkbox id=m-zh-cnoverviewreferenceproposals-check> |
| <label for=m-zh-cnoverviewreferenceproposals-check><a href=/zh-cn/overview/reference/proposals/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferenceproposals><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-cnoverviewreferenceproposalsprotocol-http-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsprotocol-http-check> |
| <label for=m-zh-cnoverviewreferenceproposalsprotocol-http-check><a href=/zh-cn/overview/reference/proposals/protocol-http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsprotocol-http><span>Rest 协议</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsregistry-config-meta-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsregistry-config-meta-check> |
| <label for=m-zh-cnoverviewreferenceproposalsregistry-config-meta-check><a href=/zh-cn/overview/reference/proposals/registry-config-meta/ title=注册中心、配置中心和元数据中心 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsregistry-config-meta><span>注册&配置&元数据中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsadmin-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsadmin-check> |
| <label for=m-zh-cnoverviewreferenceproposalsadmin-check><a href=/zh-cn/overview/reference/proposals/admin/ title="Dubbo Admin 控制面总体架构设计" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsadmin><span>Admin 架构设计</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsmetrics-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsmetrics-check> |
| <label for=m-zh-cnoverviewreferenceproposalsmetrics-check><a href=/zh-cn/overview/reference/proposals/metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsmetrics><span>指标埋点</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsheuristic-flow-control-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsheuristic-flow-control-check> |
| <label for=m-zh-cnoverviewreferenceproposalsheuristic-flow-control-check><a href=/zh-cn/overview/reference/proposals/heuristic-flow-control/ title=自适应负载均衡与限流 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsheuristic-flow-control><span>服务柔性</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsservice-discovery-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsservice-discovery-check> |
| <label for=m-zh-cnoverviewreferenceproposalsservice-discovery-check><a href=/zh-cn/overview/reference/proposals/service-discovery/ title="Dubbo3 应用级服务发现设计" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsservice-discovery><span>应用级服务发现</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalssupport-more-content-types-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalssupport-more-content-types-check> |
| <label for=m-zh-cnoverviewreferenceproposalssupport-more-content-types-check><a href=/zh-cn/overview/reference/proposals/support-more-content-types/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalssupport-more-content-types><span>Triple协议Http标准能力增强-多Content-Type支持</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferenceprotocols-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocols-check> |
| <label for=m-zh-cnoverviewreferenceprotocols-check><a href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferenceprotocols><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-cnoverviewreferenceprotocolstriple-spec-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolstriple-spec-check> |
| <label for=m-zh-cnoverviewreferenceprotocolstriple-spec-check><a href=/zh-cn/overview/reference/protocols/triple-spec/ title="Triple 协议设计理念与规范" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolstriple-spec><span>Triple 协议规范</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolstriple-check> |
| <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a href=/zh-cn/overview/reference/protocols/triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 协议优势与目标</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolstcp-check> |
| <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 协议规范</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolshttp-check> |
| <label for=m-zh-cnoverviewreferenceprotocolshttp-check><a href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 协议规范</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferenceerlang-sdk-li><input type=checkbox id=m-zh-cnoverviewreferenceerlang-sdk-check> |
| <label for=m-zh-cnoverviewreferenceerlang-sdk-check><a href=/zh-cn/overview/reference/erlang-sdk/ title="Erlang SDK 手册" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferenceerlang-sdk><span>Erlang SDK</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceerlang-sdkquick-start-li><input type=checkbox id=m-zh-cnoverviewreferenceerlang-sdkquick-start-check> |
| <label for=m-zh-cnoverviewreferenceerlang-sdkquick-start-check><a href=/zh-cn/overview/reference/erlang-sdk/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceerlang-sdkquick-start><span>快速开始</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceerlang-sdkreference-li><input type=checkbox id=m-zh-cnoverviewreferenceerlang-sdkreference-check> |
| <label for=m-zh-cnoverviewreferenceerlang-sdkreference-check><a href=/zh-cn/overview/reference/erlang-sdk/reference/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceerlang-sdkreference><span>消费者配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceerlang-sdkservice-li><input type=checkbox id=m-zh-cnoverviewreferenceerlang-sdkservice-check> |
| <label for=m-zh-cnoverviewreferenceerlang-sdkservice-check><a href=/zh-cn/overview/reference/erlang-sdk/service/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceerlang-sdkservice><span>提供者配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceerlang-sdkserialization-li><input type=checkbox id=m-zh-cnoverviewreferenceerlang-sdkserialization-check> |
| <label for=m-zh-cnoverviewreferenceerlang-sdkserialization-check><a href=/zh-cn/overview/reference/erlang-sdk/serialization/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceerlang-sdkserialization><span>序列化配置项</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiu-li><input type=checkbox id=m-zh-cnoverviewreferencepixiu-check> |
| <label for=m-zh-cnoverviewreferencepixiu-check><a href=/zh-cn/overview/reference/pixiu/ title="Dubbo Go Pixiu 简介" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiu><span>Pixiu gateway</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuoverview-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuoverview-check> |
| <label for=m-zh-cnoverviewreferencepixiuoverview-check><a href=/zh-cn/overview/reference/pixiu/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuoverview><span>入门概述</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuoverviewwhat-is-pixiu-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuoverviewwhat-is-pixiu-check> |
| <label for=m-zh-cnoverviewreferencepixiuoverviewwhat-is-pixiu-check><a href=/zh-cn/overview/reference/pixiu/overview/what-is-pixiu/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuoverviewwhat-is-pixiu><span>Pixiu 是什么</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuoverviewterminology-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuoverviewterminology-check> |
| <label for=m-zh-cnoverviewreferencepixiuoverviewterminology-check><a href=/zh-cn/overview/reference/pixiu/overview/terminology/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuoverviewterminology><span>Pixiu 术语</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuoverviewfaq-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuoverviewfaq-check> |
| <label for=m-zh-cnoverviewreferencepixiuoverviewfaq-check><a href=/zh-cn/overview/reference/pixiu/overview/faq/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuoverviewfaq><span>Pixiu 常见问题</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuuser-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuser-check> |
| <label for=m-zh-cnoverviewreferencepixiuuser-check><a href=/zh-cn/overview/reference/pixiu/user/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuuser><span>用户文档</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserquickstart-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserquickstart-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserquickstart-check><a href=/zh-cn/overview/reference/pixiu/user/quickstart/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserquickstart><span>快速开始</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserconfigurations-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserconfigurations-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserconfigurations-check><a href=/zh-cn/overview/reference/pixiu/user/configurations/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserconfigurations><span>启动和配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserdeployment-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserdeployment-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserdeployment-check><a href=/zh-cn/overview/reference/pixiu/user/deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserdeployment><span>部署操作</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuuserlistener-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserlistener-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserlistener-check><a href=/zh-cn/overview/reference/pixiu/user/listener/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuuserlistener><span>Listener 介绍</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserlistenerhttp-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserlistenerhttp-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserlistenerhttp-check><a href=/zh-cn/overview/reference/pixiu/user/listener/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserlistenerhttp><span>Http Listener 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserlistenerhttp2-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserlistenerhttp2-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserlistenerhttp2-check><a href=/zh-cn/overview/reference/pixiu/user/listener/http2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserlistenerhttp2><span>Http2 Listener 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserlistenertcp-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserlistenertcp-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserlistenertcp-check><a href=/zh-cn/overview/reference/pixiu/user/listener/tcp/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserlistenertcp><span>TCP Listener 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserlistenertriple-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserlistenertriple-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserlistenertriple-check><a href=/zh-cn/overview/reference/pixiu/user/listener/triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserlistenertriple><span>Triple Listener 介绍</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuusernetworkfilter-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusernetworkfilter-check> |
| <label for=m-zh-cnoverviewreferencepixiuusernetworkfilter-check><a href=/zh-cn/overview/reference/pixiu/user/networkfilter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuusernetworkfilter><span>Network Filter 介绍</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuusernetworkfilterhttp-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusernetworkfilterhttp-check> |
| <label for=m-zh-cnoverviewreferencepixiuusernetworkfilterhttp-check><a href=/zh-cn/overview/reference/pixiu/user/networkfilter/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuusernetworkfilterhttp><span>Http NetWorkFilter 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuusernetworkfiltergrpc-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusernetworkfiltergrpc-check> |
| <label for=m-zh-cnoverviewreferencepixiuusernetworkfiltergrpc-check><a href=/zh-cn/overview/reference/pixiu/user/networkfilter/grpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuusernetworkfiltergrpc><span>Grpc NetWorkFilter 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuusernetworkfilterdubbo-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusernetworkfilterdubbo-check> |
| <label for=m-zh-cnoverviewreferencepixiuusernetworkfilterdubbo-check><a href=/zh-cn/overview/reference/pixiu/user/networkfilter/dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuusernetworkfilterdubbo><span>Dubbo NetWorkFilter 介绍</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuuseradapter-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuseradapter-check> |
| <label for=m-zh-cnoverviewreferencepixiuuseradapter-check><a href=/zh-cn/overview/reference/pixiu/user/adapter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuuseradapter><span>Adapter 介绍</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuseradapterdubbo-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuseradapterdubbo-check> |
| <label for=m-zh-cnoverviewreferencepixiuuseradapterdubbo-check><a href=/zh-cn/overview/reference/pixiu/user/adapter/dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuseradapterdubbo><span>Dubbo 集群中心 Adapter</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuseradapterspringcloud-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuseradapterspringcloud-check> |
| <label for=m-zh-cnoverviewreferencepixiuuseradapterspringcloud-check><a href=/zh-cn/overview/reference/pixiu/user/adapter/springcloud/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuseradapterspringcloud><span>Spring Cloud 集群中心 Adapter</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuuserhttpfilter-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserhttpfilter-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserhttpfilter-check><a href=/zh-cn/overview/reference/pixiu/user/httpfilter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuuserhttpfilter><span>Http Filter 介绍</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserhttpfilterdubbo-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserhttpfilterdubbo-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserhttpfilterdubbo-check><a href=/zh-cn/overview/reference/pixiu/user/httpfilter/dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserhttpfilterdubbo><span>Dubbo HttpFilter 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserhttpfilterratelimit-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserhttpfilterratelimit-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserhttpfilterratelimit-check><a href=/zh-cn/overview/reference/pixiu/user/httpfilter/ratelimit/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserhttpfilterratelimit><span>RateLimiter 介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserhttpfilterhystrix-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserhttpfilterhystrix-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserhttpfilterhystrix-check><a href=/zh-cn/overview/reference/pixiu/user/httpfilter/hystrix/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserhttpfilterhystrix><span>断路器介绍</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuusersamples-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusersamples-check> |
| <label for=m-zh-cnoverviewreferencepixiuusersamples-check><a href=/zh-cn/overview/reference/pixiu/user/samples/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuusersamples><span>案例介绍</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuusersampleshttp_proxy-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusersampleshttp_proxy-check> |
| <label for=m-zh-cnoverviewreferencepixiuusersampleshttp_proxy-check><a href=/zh-cn/overview/reference/pixiu/user/samples/http_proxy/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuusersampleshttp_proxy><span>Http Proxy 案例介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuusersampleshttp_to_dubbo-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusersampleshttp_to_dubbo-check> |
| <label for=m-zh-cnoverviewreferencepixiuusersampleshttp_to_dubbo-check><a href=/zh-cn/overview/reference/pixiu/user/samples/http_to_dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuusersampleshttp_to_dubbo><span>Http to Dubbo 案例介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuusersampleshttps-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuusersampleshttps-check> |
| <label for=m-zh-cnoverviewreferencepixiuusersampleshttps-check><a href=/zh-cn/overview/reference/pixiu/user/samples/https/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuusersampleshttps><span>Https 案例介绍</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuuserquality-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserquality-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserquality-check><a href=/zh-cn/overview/reference/pixiu/user/quality/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuuserquality><span>质量指标</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserqualitystability-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserqualitystability-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserqualitystability-check><a href=/zh-cn/overview/reference/pixiu/user/quality/stability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserqualitystability><span>稳定性</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserqualityperformance-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserqualityperformance-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserqualityperformance-check><a href=/zh-cn/overview/reference/pixiu/user/quality/performance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserqualityperformance><span>性能</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiuuserappendix-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserappendix-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserappendix-check><a href=/zh-cn/overview/reference/pixiu/user/appendix/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiuuserappendix><span>附录</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiuuserappendixhttp-to-dubbo-default-stragety-li><input type=checkbox id=m-zh-cnoverviewreferencepixiuuserappendixhttp-to-dubbo-default-stragety-check> |
| <label for=m-zh-cnoverviewreferencepixiuuserappendixhttp-to-dubbo-default-stragety-check><a href=/zh-cn/overview/reference/pixiu/user/appendix/http-to-dubbo-default-stragety/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiuuserappendixhttp-to-dubbo-default-stragety><span>HTTP to Dubbo 默认转换协议</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewreferencepixiudev-li><input type=checkbox id=m-zh-cnoverviewreferencepixiudev-check> |
| <label for=m-zh-cnoverviewreferencepixiudev-check><a href=/zh-cn/overview/reference/pixiu/dev/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferencepixiudev><span>开发者指南</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiudevfilter-extension-li><input type=checkbox id=m-zh-cnoverviewreferencepixiudevfilter-extension-check> |
| <label for=m-zh-cnoverviewreferencepixiudevfilter-extension-check><a href=/zh-cn/overview/reference/pixiu/dev/filter-extension/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiudevfilter-extension><span>Pixiu Filter体系介绍</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiudevdubbo-pilot-li><input type=checkbox id=m-zh-cnoverviewreferencepixiudevdubbo-pilot-check> |
| <label for=m-zh-cnoverviewreferencepixiudevdubbo-pilot-check><a href=/zh-cn/overview/reference/pixiu/dev/dubbo-pilot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiudevdubbo-pilot><span>dubbo-pilot Control Plane 部署</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferencepixiudevtrie-li><input type=checkbox id=m-zh-cnoverviewreferencepixiudevtrie-check> |
| <label for=m-zh-cnoverviewreferencepixiudevtrie-check><a href=/zh-cn/overview/reference/pixiu/dev/trie/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferencepixiudevtrie><span>Trie 前缀树介绍</span></a></label></li></ul></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-zh-cnoverviewnotices-li><input type=checkbox id=m-zh-cnoverviewnotices-check> |
| <label for=m-zh-cnoverviewnotices-check><a href=/zh-cn/overview/notices/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewnotices><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-cnoverviewnoticesserialization-li><input type=checkbox id=m-zh-cnoverviewnoticesserialization-check> |
| <label for=m-zh-cnoverviewnoticesserialization-check><a href=/zh-cn/overview/notices/serialization/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesserialization><span>序列化安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticesprotocol-li><input type=checkbox id=m-zh-cnoverviewnoticesprotocol-check> |
| <label for=m-zh-cnoverviewnoticesprotocol-check><a href=/zh-cn/overview/notices/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesprotocol><span>RPC 协议安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticesregistry-li><input type=checkbox id=m-zh-cnoverviewnoticesregistry-check> |
| <label for=m-zh-cnoverviewnoticesregistry-check><a href=/zh-cn/overview/notices/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesregistry><span>注册中心安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticesadmin-li><input type=checkbox id=m-zh-cnoverviewnoticesadmin-check> |
| <label for=m-zh-cnoverviewnoticesadmin-check><a href=/zh-cn/overview/notices/admin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesadmin><span>Dubbo Admin 安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticeslog4j-li><input type=checkbox id=m-zh-cnoverviewnoticeslog4j-check> |
| <label for=m-zh-cnoverviewnoticeslog4j-check><a href=/zh-cn/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticeslog4j><span>Log4j 漏洞影响</span></a></label></li></ul></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=/zh-cn/overview/>文档</a></li><li class=breadcrumb-item><a href=/zh-cn/overview/mannual/>用户手册</a></li><li class=breadcrumb-item><a href=/zh-cn/overview/mannual/java-sdk/>Java SDK</a></li><li class=breadcrumb-item><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/>参考手册</a></li><li class=breadcrumb-item><a href=/zh-cn/overview/mannual/java-sdk/reference-manual/architecture/>源码架构</a></li><li class="breadcrumb-item active" aria-current=page>扩展点开发指南</li></ol></nav><div class=td-content><h1>扩展点开发指南</h1><div class=lead>本文介绍了 Dubbo SPI 的原理和实现细节</div><header class=article-meta></header><h2 id=1-dubbo-spi-扩展简介>1. Dubbo SPI 扩展简介</h2><p>Dubbo 中的扩展机制与 <a href=https://www.baeldung.com/java-spi target=_blank>JDK 标准的 SPI 扩展点</a> 原理类似。Dubbo 对其做了一定的改造与加强:</p><ul><li>JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。</li><li>如果扩展点加载失败,JDK SPI 没给出详细信息,不方便定位问题,Dubbo SPI 在失败时记录真正的失败原因,并打印出来</li><li>增加 <a href=#23-ioc-%E6%9C%BA%E5%88%B6>IOC</a>、<a href=#24-aop-%E6%9C%BA%E5%88%B6>AOP</a> 能力</li><li>增加排序能力</li><li>增加条件激活能力</li><li>提供了一系列更灵活的 API,如<a href=./#21-%E6%8C%89%E5%90%8D%E7%A7%B0%E8%8E%B7%E5%8F%96%E6%8C%87%E5%AE%9A%E6%89%A9%E5%B1%95%E7%B1%BB>获取所有 SPI 扩展实现</a>、<a href=./#211-%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E6%8B%93%E5%B1%95%E7%B1%BB>根据名称查询某个扩展实现</a>、根据类型查询扩展实现、查询匹配条件的扩展实现等。</li></ul><h3 id=11-spi定义>1.1 SPI定义</h3><p>Dubbo 中的 SPI 插件是标准的 Java Interface 定义,并且必须包含 <code>@org.apache.dubbo.common.extension.SPI</code> 注解:</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>@SPI</span>(value <span style=color:#719e07>=</span> <span style=color:#2aa198>"dubbo"</span>, scope <span style=color:#719e07>=</span> ExtensionScope.FRAMEWORK) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> <span style=color:#268bd2>Protocol</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// ...</span> |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p><code>@SPI</code> 注解的定义如下:</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>@Documented</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Retention</span>(RetentionPolicy.RUNTIME) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Target</span>({ElementType.TYPE}) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>@interface</span> SPI { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>/** |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * default extension name |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> String <span style=color:#268bd2>value</span>() <span style=color:#719e07>default</span> <span style=color:#2aa198>""</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> * scope of SPI, default value is application scope. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> ExtensionScope <span style=color:#268bd2>scope</span>() <span style=color:#719e07>default</span> ExtensionScope.APPLICATION; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h3 id=12-spi加载流程>1.2 SPI加载流程</h3><p>Dubbo 加载扩展的整个流程如下:</p><p><img src=/imgs/v3/concepts/extension-load.png alt=//imgs/v3/concepts/extension-load.png></p><p>主要步骤为 4 个:</p><ul><li>读取并解析配置文件</li><li>缓存所有扩展实现</li><li>基于用户执行的扩展名,实例化对应的扩展实现</li><li>进行扩展实例属性的 IOC 注入以及实例化扩展的包装类,实现 AOP 特性</li></ul><h2 id=2-dubbo-spi-源码分析>2. Dubbo SPI 源码分析</h2><h3 id=21-按名称获取指定扩展类>2.1 按名称获取指定扩展类</h3><p>Dubbo 中,SPI 加载固定扩展类的入口是 ExtensionLoader 的 getExtension 方法,下面我们对拓展类对象的获取过程进行详细的分析。</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> T <span style=color:#268bd2>getExtension</span>(String name) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (name <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>||</span> name.length() <span style=color:#719e07>==</span> 0) |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalArgumentException(<span style=color:#2aa198>"Extension name == null"</span>); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#2aa198>"true"</span>.equals(name)) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 获取默认的拓展实现类</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> getDefaultExtension(); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// Holder,顾名思义,用于持有目标对象</span> |
| </span></span><span style=display:flex><span> Holder<span style=color:#719e07><</span>Object<span style=color:#719e07>></span> holder <span style=color:#719e07>=</span> cachedInstances.get(name); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 这段逻辑保证了只有一个线程能够创建 Holder 对象</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (holder <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> cachedInstances.putIfAbsent(name, <span style=color:#719e07>new</span> Holder<span style=color:#719e07><</span>Object<span style=color:#719e07>></span>()); |
| </span></span><span style=display:flex><span> holder <span style=color:#719e07>=</span> cachedInstances.get(name); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> Object instance <span style=color:#719e07>=</span> holder.get(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 双重检查</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (instance <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>synchronized</span> (holder) { |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> holder.get(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (instance <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 创建拓展实例</span> |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> createExtension(name); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 设置实例到 holder 中</span> |
| </span></span><span style=display:flex><span> holder.set(instance); |
| </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:#719e07>return</span> (T) instance; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><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-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>private</span> T <span style=color:#268bd2>createExtension</span>(String name, <span style=color:#dc322f>boolean</span> wrap) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 从配置文件中加载所有的拓展类,可得到“配置项名称”到“配置类”的映射关系表</span> |
| </span></span><span style=display:flex><span> Class<span style=color:#719e07><?></span> clazz <span style=color:#719e07>=</span> getExtensionClasses().get(name); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果没有该接口的扩展,或者该接口的实现类不允许重复但实际上重复了,直接抛出异常</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (clazz <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>||</span> unacceptableExceptions.contains(name)) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> findException(name); |
| </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> T instance <span style=color:#719e07>=</span> (T) EXTENSION_INSTANCES.get(clazz); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 这段代码保证了扩展类只会被构造一次,也就是单例的.</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (instance <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> EXTENSION_INSTANCES.putIfAbsent(clazz, clazz.getDeclaredConstructor().newInstance()); |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> (T) EXTENSION_INSTANCES.get(clazz); |
| </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> injectExtension(instance); |
| </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>// 比如我基于 Protocol 定义了 DubboProtocol 的扩展,但实际上在 Dubbo 中不是直接使用的 DubboProtocol, 而是其包装类</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// ProtocolListenerWrapper</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (wrap) { |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> List<span style=color:#719e07><</span>Class<span style=color:#719e07><?>></span> wrapperClassesList <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ArrayList<span style=color:#719e07><></span>(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (cachedWrapperClasses <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> wrapperClassesList.addAll(cachedWrapperClasses); |
| </span></span><span style=display:flex><span> wrapperClassesList.sort(WrapperComparator.COMPARATOR); |
| </span></span><span style=display:flex><span> Collections.reverse(wrapperClassesList); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 循环创建 Wrapper 实例</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (CollectionUtils.isNotEmpty(wrapperClassesList)) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (Class<span style=color:#719e07><?></span> wrapperClass : wrapperClassesList) { |
| </span></span><span style=display:flex><span> Wrapper wrapper <span style=color:#719e07>=</span> wrapperClass.getAnnotation(Wrapper.class); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (wrapper <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>||</span> (ArrayUtils.contains(wrapper.matches(), name) <span style=color:#719e07>&&</span> <span style=color:#719e07>!</span>ArrayUtils.contains(wrapper.mismatches(), name))) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 将当前 instance 作为参数传给 Wrapper 的构造方法,并通过反射创建 Wrapper 实例。</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 然后向 Wrapper 实例中注入依赖,最后将 Wrapper 实例再次赋值给 instance 变量</span> |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> injectExtension((T) wrapperClass.getConstructor(type).newInstance(instance)); |
| </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></span><span style=display:flex><span> <span style=color:#586e75>// 初始化</span> |
| </span></span><span style=display:flex><span> initExtension(instance); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> instance; |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (Throwable t) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"Extension instance (name: "</span> <span style=color:#719e07>+</span> name <span style=color:#719e07>+</span> <span style=color:#2aa198>", class: "</span> <span style=color:#719e07>+</span> |
| </span></span><span style=display:flex><span> type <span style=color:#719e07>+</span> <span style=color:#2aa198>") couldn't be instantiated: "</span> <span style=color:#719e07>+</span> t.getMessage(), t); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>createExtension 方法的逻辑稍复杂一下,包含了如下的步骤:</p><ol><li>通过 getExtensionClasses 获取所有的拓展类</li><li>通过反射创建拓展对象</li><li>向拓展对象中注入依赖</li><li>将拓展对象包裹在相应的 Wrapper 对象中</li><li>初始化拓展对象</li></ol><p>以上步骤中,第一个步骤是加载拓展类的关键,第三和第四个步骤是 Dubbo IOC 与 AOP 的具体实现。在接下来的章节中,将会重点分析 getExtensionClasses 方法的逻辑,以及简单介绍 Dubbo IOC 的具体实现。</p><h4 id=211-获取所有拓展类>2.1.1 获取所有拓展类</h4><p>我们在通过名称获取拓展类之前,首先需要根据配置文件解析出拓展项名称到拓展类的映射关系表(Map<名称, 拓展类>),之后再根据拓展项名称从映射关系表中取出相应的拓展类即可。相关过程的代码分析如下:</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> Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> getExtensionClasses() { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 从缓存中获取已加载的拓展类</span> |
| </span></span><span style=display:flex><span> Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> classes <span style=color:#719e07>=</span> cachedClasses.get(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 双重检查</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (classes <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>synchronized</span> (cachedClasses) { |
| </span></span><span style=display:flex><span> classes <span style=color:#719e07>=</span> cachedClasses.get(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (classes <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 加载拓展类</span> |
| </span></span><span style=display:flex><span> classes <span style=color:#719e07>=</span> loadExtensionClasses(); |
| </span></span><span style=display:flex><span> cachedClasses.set(classes); |
| </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:#719e07>return</span> classes; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>这里也是先检查缓存,若缓存未命中,则通过 synchronized 加锁。加锁后再次检查缓存,并判空。此时如果 classes 仍为 null,则通过 loadExtensionClasses 加载拓展类。下面分析 loadExtensionClasses 方法的逻辑。</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> Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> loadExtensionClasses() { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 缓存默认的 SPI 扩展名</span> |
| </span></span><span style=display:flex><span> cacheDefaultExtensionName(); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> extensionClasses <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> HashMap<span style=color:#719e07><></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>// 目前有四种策略,分别读取 META-INF/services/ META-INF/dubbo/ META-INF/dubbo/internal/ META-INF/dubbo/external/ 这四个目录下的配置文件</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (LoadingStrategy strategy : strategies) { |
| </span></span><span style=display:flex><span> loadDirectory(extensionClasses, strategy.directory(), type.getName(), strategy.preferExtensionClassLoader(), strategy.overridden(), strategy.excludedPackages()); |
| </span></span><span style=display:flex><span> loadDirectory(extensionClasses, strategy.directory(), type.getName().replace(<span style=color:#2aa198>"org.apache"</span>, <span style=color:#2aa198>"com.alibaba"</span>), strategy.preferExtensionClassLoader(), strategy.overridden(), strategy.excludedPackages()); |
| </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>return</span> extensionClasses; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>loadExtensionClasses 方法总共做了两件事情,一是对 SPI 注解进行解析,二是调用 loadDirectory 方法加载指定文件夹配置文件。SPI 注解解析过程比较简单,无需多说。下面我们来看一下 loadDirectory 做了哪些事情。</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>loadDirectory</span>(Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> extensionClasses, String dir, String type, |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>boolean</span> extensionLoaderClassLoaderFirst, <span style=color:#dc322f>boolean</span> overridden, String... excludedPackages) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// fileName = 文件夹路径 + type 全限定名 </span> |
| </span></span><span style=display:flex><span> String fileName <span style=color:#719e07>=</span> dir <span style=color:#719e07>+</span> type; |
| </span></span><span style=display:flex><span> <span style=color:#719e07>try</span> { |
| </span></span><span style=display:flex><span> Enumeration<span style=color:#719e07><</span>java.net.URL<span style=color:#719e07>></span> urls <span style=color:#719e07>=</span> <span style=color:#cb4b16>null</span>; |
| </span></span><span style=display:flex><span> ClassLoader classLoader <span style=color:#719e07>=</span> findClassLoader(); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// try to load from ExtensionLoader's ClassLoader first</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (extensionLoaderClassLoaderFirst) { |
| </span></span><span style=display:flex><span> ClassLoader extensionLoaderClassLoader <span style=color:#719e07>=</span> ExtensionLoader.class.getClassLoader(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (ClassLoader.getSystemClassLoader() <span style=color:#719e07>!=</span> extensionLoaderClassLoader) { |
| </span></span><span style=display:flex><span> urls <span style=color:#719e07>=</span> extensionLoaderClassLoader.getResources(fileName); |
| </span></span><span style=display:flex><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:#719e07>if</span> (urls <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>||</span> <span style=color:#719e07>!</span>urls.hasMoreElements()) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (classLoader <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> urls <span style=color:#719e07>=</span> classLoader.getResources(fileName); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>else</span> { |
| </span></span><span style=display:flex><span> urls <span style=color:#719e07>=</span> ClassLoader.getSystemResources(fileName); |
| </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:#719e07>if</span> (urls <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>while</span> (urls.hasMoreElements()) { |
| </span></span><span style=display:flex><span> java.net.URL resourceURL <span style=color:#719e07>=</span> urls.nextElement(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 加载资源</span> |
| </span></span><span style=display:flex><span> loadResource(extensionClasses, classLoader, resourceURL, overridden, excludedPackages); |
| </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>catch</span> (Throwable t) { |
| </span></span><span style=display:flex><span> logger.error(<span style=color:#2aa198>"Exception occurred when loading extension class (interface: "</span> <span style=color:#719e07>+</span> |
| </span></span><span style=display:flex><span> type <span style=color:#719e07>+</span> <span style=color:#2aa198>", description file: "</span> <span style=color:#719e07>+</span> fileName <span style=color:#719e07>+</span> <span style=color:#2aa198>")."</span>, t); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>loadDirectory 方法先通过 classLoader 获取所有资源链接,然后再通过 loadResource 方法加载资源。我们继续跟下去,看一下 loadResource 方法的实现。</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>loadResource</span>(Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> extensionClasses, ClassLoader classLoader, |
| </span></span><span style=display:flex><span> java.net.URL resourceURL, <span style=color:#dc322f>boolean</span> overridden, String... excludedPackages) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>try</span> { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>try</span> (BufferedReader reader <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> BufferedReader(<span style=color:#719e07>new</span> InputStreamReader(resourceURL.openStream(), StandardCharsets.UTF_8))) { |
| </span></span><span style=display:flex><span> String line; |
| </span></span><span style=display:flex><span> String clazz <span style=color:#719e07>=</span> <span style=color:#cb4b16>null</span>; |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 按行读取配置内容</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>while</span> ((line <span style=color:#719e07>=</span> reader.readLine()) <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 定位 # 字符</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>final</span> <span style=color:#dc322f>int</span> ci <span style=color:#719e07>=</span> line.indexOf(<span style=color:#2aa198>'#'</span>); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (ci <span style=color:#719e07>>=</span> 0) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 截取 # 之前的字符串,# 之后的内容为注释,需要忽略</span> |
| </span></span><span style=display:flex><span> line <span style=color:#719e07>=</span> line.substring(0, ci); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> line <span style=color:#719e07>=</span> line.trim(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (line.length() <span style=color:#719e07>></span> 0) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>try</span> { |
| </span></span><span style=display:flex><span> String name <span style=color:#719e07>=</span> <span style=color:#cb4b16>null</span>; |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 以等于号 = 为界,截取键与值</span> |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>int</span> i <span style=color:#719e07>=</span> line.indexOf(<span style=color:#2aa198>'='</span>); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (i <span style=color:#719e07>></span> 0) { |
| </span></span><span style=display:flex><span> name <span style=color:#719e07>=</span> line.substring(0, i).trim(); |
| </span></span><span style=display:flex><span> clazz <span style=color:#719e07>=</span> line.substring(i <span style=color:#719e07>+</span> 1).trim(); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>else</span> { |
| </span></span><span style=display:flex><span> clazz <span style=color:#719e07>=</span> line; |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 加载类,并通过 loadClass 方法对类进行缓存</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (StringUtils.isNotEmpty(clazz) <span style=color:#719e07>&&</span> <span style=color:#719e07>!</span>isExcluded(clazz, excludedPackages)) { |
| </span></span><span style=display:flex><span> loadClass(extensionClasses, resourceURL, Class.forName(clazz, <span style=color:#cb4b16>true</span>, classLoader), name, overridden); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (Throwable t) { |
| </span></span><span style=display:flex><span> IllegalStateException e <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"Failed to load extension class (interface: "</span> <span style=color:#719e07>+</span> type <span style=color:#719e07>+</span> <span style=color:#2aa198>", class line: "</span> <span style=color:#719e07>+</span> line <span style=color:#719e07>+</span> <span style=color:#2aa198>") in "</span> <span style=color:#719e07>+</span> resourceURL <span style=color:#719e07>+</span> <span style=color:#2aa198>", cause: "</span> <span style=color:#719e07>+</span> t.getMessage(), t); |
| </span></span><span style=display:flex><span> exceptions.put(line, e); |
| </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></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (Throwable t) { |
| </span></span><span style=display:flex><span> logger.error(<span style=color:#2aa198>"Exception occurred when loading extension class (interface: "</span> <span style=color:#719e07>+</span> |
| </span></span><span style=display:flex><span> type <span style=color:#719e07>+</span> <span style=color:#2aa198>", class file: "</span> <span style=color:#719e07>+</span> resourceURL <span style=color:#719e07>+</span> <span style=color:#2aa198>") in "</span> <span style=color:#719e07>+</span> resourceURL, t); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>loadResource 方法用于读取和解析配置文件,并通过反射加载类,最后调用 loadClass 方法进行其他操作。loadClass 方法用于主要用于操作缓存,该方法的逻辑如下:</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>loadClass</span>(Map<span style=color:#719e07><</span>String, Class<span style=color:#719e07><?>></span> extensionClasses, java.net.URL resourceURL, Class<span style=color:#719e07><?></span> clazz, String name, |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>boolean</span> overridden) <span style=color:#268bd2>throws</span> NoSuchMethodException { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>!</span>type.isAssignableFrom(clazz)) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"Error occurred when loading extension class (interface: "</span> <span style=color:#719e07>+</span> |
| </span></span><span style=display:flex><span> type <span style=color:#719e07>+</span> <span style=color:#2aa198>", class line: "</span> <span style=color:#719e07>+</span> clazz.getName() <span style=color:#719e07>+</span> <span style=color:#2aa198>"), class "</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>+</span> clazz.getName() <span style=color:#719e07>+</span> <span style=color:#2aa198>" is not subtype of interface."</span>); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 检测目标类上是否有 Adaptive 注解</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (clazz.isAnnotationPresent(Adaptive.class)) { |
| </span></span><span style=display:flex><span> cacheAdaptiveClass(clazz, overridden); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>else</span> <span style=color:#719e07>if</span> (isWrapperClass(clazz)) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 缓存包装类</span> |
| </span></span><span style=display:flex><span> cacheWrapperClass(clazz); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>else</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 进入到这里,表明只是该类只是一个普通的拓展类</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 检测 clazz 是否有默认的构造方法,如果没有,则抛出异常</span> |
| </span></span><span style=display:flex><span> clazz.getConstructor(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (StringUtils.isEmpty(name)) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果 name 为空,则尝试从 Extension 注解中获取 name,或使用小写的类名作为 name</span> |
| </span></span><span style=display:flex><span> name <span style=color:#719e07>=</span> findAnnotationName(clazz); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (name.length() <span style=color:#719e07>==</span> 0) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"No such extension name for the class "</span> <span style=color:#719e07>+</span> clazz.getName() <span style=color:#719e07>+</span> <span style=color:#2aa198>" in the config "</span> <span style=color:#719e07>+</span> resourceURL); |
| </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> String<span style=color:#719e07>[]</span> names <span style=color:#719e07>=</span> NAME_SEPARATOR.split(name); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (ArrayUtils.isNotEmpty(names)) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果类上有 Activate 注解,则使用 names 数组的第一个元素作为键,</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 存储 name 到 Activate 注解对象的映射关系</span> |
| </span></span><span style=display:flex><span> cacheActivateClass(clazz, names<span style=color:#719e07>[</span>0<span style=color:#719e07>]</span>); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (String n : names) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 存储 Class 到名称的映射关系</span> |
| </span></span><span style=display:flex><span> cacheName(clazz, n); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 存储 name 到 Class 的映射关系.</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果存在同一个扩展名对应多个实现类,基于 override 参数是否允许覆盖,如果不允许,则抛出异常.</span> |
| </span></span><span style=display:flex><span> saveInExtensionClass(extensionClasses, clazz, n, overridden); |
| </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></span></code></pre></div><p>如上,loadClass 方法操作了不同的缓存,比如 cachedAdaptiveClass、cachedWrapperClasses 和 cachedNames 等等。除此之外,该方法没有其他什么逻辑了。</p><p>到此,关于缓存类加载的过程就分析完了。整个过程没什么特别复杂的地方,大家按部就班的分析即可,不懂的地方可以调试一下。</p><h3 id=22-加载自适应扩展类>2.2 加载自适应扩展类</h3><p>先说明下自适应扩展类的使用场景。比如我们有需求,在调用某一个方法时,基于参数选择调用到不同的实现类,这和工厂方法有些类似,基于不同的参数,构造出不同的实例对象。在 Dubbo 中实现的思路和这个差不多,不过 Dubbo 的实现更加灵活,它的实现和策略模式有些类似。每一种扩展类相当于一种策略,基于 URL 消息总线,将参数传递给 ExtensionLoader,通过 ExtensionLoader 基于参数加载对应的扩展类,实现运行时动态调用到目标实例上。</p><p>自适应扩展类的含义是说,基于参数,在运行时动态选择到具体的目标类,然后执行。</p><p>在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,拓展就无法被加载。对于这个矛盾的问题,Dubbo 通过自适应拓展机制很好的解决了。自适应拓展机制的实现逻辑比较复杂,首先 Dubbo 会为拓展接口生成具有代理功能的代码。然后通过 javassist 或 jdk 编译这段代码,得到 Class 类。最后再通过反射创建代理类,整个过程比较复杂。</p><p>加载自适应扩展类的入口是 ExtensionLoader 的 getAdaptiveExtension 方法。</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> T <span style=color:#268bd2>getAdaptiveExtension</span>() { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 从缓存中获取自适应拓展</span> |
| </span></span><span style=display:flex><span> Object instance <span style=color:#719e07>=</span> cachedAdaptiveInstance.get(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (instance <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果存在异常,则直接抛出</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (createAdaptiveInstanceError <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"Failed to create adaptive instance: "</span> <span style=color:#719e07>+</span> |
| </span></span><span style=display:flex><span> createAdaptiveInstanceError.toString(), |
| </span></span><span style=display:flex><span> createAdaptiveInstanceError); |
| </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>synchronized</span> (cachedAdaptiveInstance) { |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> cachedAdaptiveInstance.get(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// double check</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (instance <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>try</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 创建自适应拓展</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 这里分为两种情况:一种是存在 Adaptive 类,另一个是需要生成 Adaptive 类</span> |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> createAdaptiveExtension(); |
| </span></span><span style=display:flex><span> cachedAdaptiveInstance.set(instance); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (Throwable t) { |
| </span></span><span style=display:flex><span> createAdaptiveInstanceError <span style=color:#719e07>=</span> t; |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"Failed to create adaptive instance: "</span> <span style=color:#719e07>+</span> t.toString(), t); |
| </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></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> (T) instance; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>getAdaptiveExtension 方法首先会检查缓存,缓存未命中,则调用 createAdaptiveExtension 方法创建自适应拓展。下面,我们看一下 createAdaptiveExtension 方法的代码。</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> T <span style=color:#268bd2>createAdaptiveExtension</span>() { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>try</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 获取自适应拓展类,并通过反射实例化</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> injectExtension((T) getAdaptiveExtensionClass().newInstance()); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (Exception e) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"Can not create adaptive extension ..."</span>); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>createAdaptiveExtension 方法的代码比较少,但却包含了三个逻辑,分别如下:</p><ol><li>调用 getAdaptiveExtensionClass 方法获取自适应拓展 Class 对象</li><li>通过反射进行实例化</li><li>调用 injectExtension 方法向拓展实例中注入依赖</li></ol><p>前两个逻辑比较好理解,第三个逻辑用于向自适应拓展对象中注入依赖。这个逻辑看似多余,但有存在的必要,这里简单说明一下。前面说过,Dubbo 中有两种类型的自适应拓展,一种是手工编码的,一种是自动生成的。手工编码的自适应拓展中可能存在着一些依赖,而自动生成的 Adaptive 拓展则不会依赖其他类。这里调用 injectExtension 方法的目的是为手工编码的自适应拓展注入依赖,这一点需要大家注意一下。关于 injectExtension 方法,前文已经分析过了,这里不再赘述。接下来,分析 getAdaptiveExtensionClass 方法的逻辑。</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> Class<span style=color:#719e07><?></span> getAdaptiveExtensionClass() { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 通过 SPI 获取所有的拓展类</span> |
| </span></span><span style=display:flex><span> getExtensionClasses(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 检查缓存,若缓存不为空,则直接返回缓存</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (cachedAdaptiveClass <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> cachedAdaptiveClass; |
| </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:#719e07>return</span> cachedAdaptiveClass <span style=color:#719e07>=</span> createAdaptiveExtensionClass(); |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>getAdaptiveExtensionClass 方法同样包含了三个逻辑,如下:</p><ol><li>调用 getExtensionClasses 获取所有的拓展类</li><li>检查缓存,若缓存不为空,则返回缓存</li><li>若缓存为空,则调用 createAdaptiveExtensionClass 创建自适应拓展类</li></ol><p>这三个逻辑看起来平淡无奇,似乎没有多讲的必要。但是这些平淡无奇的代码中隐藏了着一些细节,需要说明一下。首先从第一个逻辑说起,getExtensionClasses 这个方法用于获取某个接口的所有实现类。比如该方法可以获取 Protocol 接口的 DubboProtocol、HttpProtocol、InjvmProtocol 等实现类。在获取实现类的过程中,如果某个实现类被 Adaptive 注解修饰了,那么该类就会被赋值给 cachedAdaptiveClass 变量。此时,上面步骤中的第二步条件成立(缓存不为空),直接返回 cachedAdaptiveClass 即可。如果所有的实现类均未被 Adaptive 注解修饰,那么执行第三步逻辑,创建自适应拓展类。相关代码如下:</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> Class<span style=color:#719e07><?></span> createAdaptiveExtensionClass() { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 构建自适应拓展代码</span> |
| </span></span><span style=display:flex><span> String code <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> AdaptiveClassCodeGenerator(type, cachedDefaultName).generate(); |
| </span></span><span style=display:flex><span> ClassLoader classLoader <span style=color:#719e07>=</span> findClassLoader(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 获取编译器实现类</span> |
| </span></span><span style=display:flex><span> org.apache.dubbo.common.compiler.Compiler compiler <span style=color:#719e07>=</span> ExtensionLoader.getExtensionLoader(org.apache.dubbo.common.compiler.Compiler.class).getAdaptiveExtension(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 编译代码,生成 Class</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> compiler.compile(code, classLoader); |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>createAdaptiveExtensionClass 方法用于生成自适应拓展类,该方法首先会生成自适应拓展类的源码,然后通过 Compiler 实例(Dubbo 默认使用 javassist 作为编译器)编译源码,得到代理类 Class 实例。接下来,我们把重点放在代理类代码生成的逻辑上,其他逻辑大家自行分析。</p><h4 id=221-自适应拓展类代码生成>2.2.1 自适应拓展类代码生成</h4><p>AdaptiveClassCodeGenerator#generate 方法生成扩展类代码</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> String <span style=color:#268bd2>generate</span>() { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果该接口中没有方法被 @Adaptive 注解修饰,直接抛出异常</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>!</span>hasAdaptiveMethod()) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException(<span style=color:#2aa198>"No adaptive method exist on extension "</span> <span style=color:#719e07>+</span> type.getName() <span style=color:#719e07>+</span> <span style=color:#2aa198>", refuse to create the adaptive class!"</span>); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> StringBuilder code <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> StringBuilder(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 生成包名、import、方法等.</span> |
| </span></span><span style=display:flex><span> code.append(generatePackageInfo()); |
| </span></span><span style=display:flex><span> code.append(generateImports()); |
| </span></span><span style=display:flex><span> code.append(generateClassDeclaration()); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> Method<span style=color:#719e07>[]</span> methods <span style=color:#719e07>=</span> type.getMethods(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (Method method : methods) { |
| </span></span><span style=display:flex><span> code.append(generateMethod(method)); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> code.append(<span style=color:#2aa198>"}"</span>); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (logger.isDebugEnabled()) { |
| </span></span><span style=display:flex><span> logger.debug(code.toString()); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> code.toString(); |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h4 id=222-生成方法>2.2.2 生成方法</h4><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-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>private</span> String <span style=color:#268bd2>generateMethod</span>(Method method) { |
| </span></span><span style=display:flex><span> String methodReturnType <span style=color:#719e07>=</span> method.getReturnType().getCanonicalName(); |
| </span></span><span style=display:flex><span> String methodName <span style=color:#719e07>=</span> method.getName(); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 生成方法内容</span> |
| </span></span><span style=display:flex><span> String methodContent <span style=color:#719e07>=</span> generateMethodContent(method); |
| </span></span><span style=display:flex><span> String methodArgs <span style=color:#719e07>=</span> generateMethodArguments(method); |
| </span></span><span style=display:flex><span> String methodThrows <span style=color:#719e07>=</span> generateMethodThrows(method); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> String.format(CODE_METHOD_DECLARATION, methodReturnType, methodName, methodArgs, methodThrows, methodContent); |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>generateMethodContent 分析</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> String <span style=color:#268bd2>generateMethodContent</span>(Method method) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 该方法上必须有 @Adaptive 注解修饰</span> |
| </span></span><span style=display:flex><span> Adaptive adaptiveAnnotation <span style=color:#719e07>=</span> method.getAnnotation(Adaptive.class); |
| </span></span><span style=display:flex><span> StringBuilder code <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> StringBuilder(512); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (adaptiveAnnotation <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 没有 @Adaptive 注解修饰,生成异常信息</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> generateUnsupported(method); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>else</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 获取 URL 在参数列表上的索引</span> |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>int</span> urlTypeIndex <span style=color:#719e07>=</span> getUrlTypeIndex(method); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (urlTypeIndex <span style=color:#719e07>!=</span> <span style=color:#719e07>-</span>1) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果参数列表上存在 URL,生成对 URL 进行空检查</span> |
| </span></span><span style=display:flex><span> code.append(generateUrlNullCheck(urlTypeIndex)); |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>else</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果参数列表不存在 URL 类型的参数,那么就看参数列表上参数对象中是否包含 getUrl 方法</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 有的话,生成 URL 空检查</span> |
| </span></span><span style=display:flex><span> code.append(generateUrlAssignmentIndirectly(method)); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 解析 Adaptive 注解上的 value 属性</span> |
| </span></span><span style=display:flex><span> String<span style=color:#719e07>[]</span> value <span style=color:#719e07>=</span> getMethodAdaptiveValue(adaptiveAnnotation); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 如果参数列表上有 Invocation 类型的参数,生成空检查并获取 methodName.</span> |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>boolean</span> hasInvocation <span style=color:#719e07>=</span> hasInvocationArgument(method); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> code.append(generateInvocationArgumentNullCheck(method)); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 这段逻辑主要就是为了生成 extName(也就是扩展名)</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 分为多种情况:</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 1.defaultExtName 是否存在</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 2.参数中是否存在 invocation 类型参数</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 3.是否是为 protocol 生成代理</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 为什么要对 protocol 单独考虑了?因为 URL 中有获取 protocol 值的方法</span> |
| </span></span><span style=display:flex><span> code.append(generateExtNameAssignment(value, hasInvocation)); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// check extName == null?</span> |
| </span></span><span style=display:flex><span> code.append(generateExtNameNullCheck(value)); |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 生成获取扩展(使用 ExtensionLoader.getExtension 方法)</span> |
| </span></span><span style=display:flex><span> code.append(generateExtensionAssignment()); |
| </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> code.append(generateReturnAndInvocation(method)); |
| </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>return</span> code.toString(); |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>上面那段逻辑主要做了如下几件事: |
| 1.检查方法上是否 Adaptive 注解修饰 |
| 2.为方法生成代码的时候,参数列表上要有 URL(或参数对象中有 URL) |
| 3.使用 ExtensionLoader.getExtension 获取扩展 |
| 4.执行对应的方法</p><h4 id=223-附一个动态生成代码后的例子>2.2.3 附一个动态生成代码后的例子</h4><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:#719e07>package</span> org.apache.dubbo.common.extension.adaptive; |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>import</span> org.apache.dubbo.common.extension.ExtensionLoader; |
| </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>class</span> <span style=color:#268bd2>HasAdaptiveExt$Adaptive</span> <span style=color:#268bd2>implements</span> org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt { |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> java.lang.String <span style=color:#268bd2>echo</span>(org.apache.dubbo.common.URL arg0, |
| </span></span><span style=display:flex><span> java.lang.String arg1) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// URL 空校验</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (arg0 <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalArgumentException(<span style=color:#2aa198>"url == null"</span>); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> org.apache.dubbo.common.URL url <span style=color:#719e07>=</span> arg0; |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 获取扩展名</span> |
| </span></span><span style=display:flex><span> String extName <span style=color:#719e07>=</span> url.getParameter(<span style=color:#2aa198>"has.adaptive.ext"</span>, <span style=color:#2aa198>"adaptive"</span>); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 扩展名空校验</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (extName <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalStateException( |
| </span></span><span style=display:flex><span> <span style=color:#2aa198>"Failed to get extension (org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt) name from url ("</span> <span style=color:#719e07>+</span> |
| </span></span><span style=display:flex><span> url.toString() <span style=color:#719e07>+</span> <span style=color:#2aa198>") use keys([has.adaptive.ext])"</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> org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt extension <span style=color:#719e07>=</span> (org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt) ExtensionLoader.getExtensionLoader(org.apache.dubbo.common.extension.adaptive.HasAdaptiveExt.class) |
| </span></span><span style=display:flex><span> .getExtension(extName); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 执行对应的方法</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> extension.echo(arg0, arg1); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h3 id=23-ioc-机制>2.3 IOC 机制</h3><p>Dubbo IOC 是通过 setter 方法注入依赖。Dubbo 首先会通过反射获取到实例的所有方法,然后再遍历方法列表,检测方法名是否具有 setter 方法特征。若有,则通过 ObjectFactory 获取依赖对象,最后通过反射调用 setter 方法将依赖设置到目标对象中。整个过程对应的代码如下:</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> T <span style=color:#268bd2>injectExtension</span>(T instance) { |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (objectFactory <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> instance; |
| </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> <span style=color:#586e75>// 遍历目标类的所有方法</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (Method method : instance.getClass().getMethods()) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 检测方法是否以 set 开头,且方法仅有一个参数,且方法访问级别为 public</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>!</span>isSetter(method)) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>continue</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> * 检测是否有 DisableInject 注解修饰. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (method.getAnnotation(DisableInject.class) <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>continue</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:#586e75>/** |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * 检测是否实现了ScopeModelAware、ExtensionAccessorAware类,如果实现则不注入 |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (method.getDeclaringClass() <span style=color:#719e07>==</span> ScopeModelAware.class) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>continue</span>; |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (instance <span style=color:#719e07>instanceof</span> ScopeModelAware <span style=color:#719e07>||</span> instance <span style=color:#719e07>instanceof</span> ExtensionAccessorAware) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (ignoredInjectMethodsDesc.contains(ReflectUtils.getDesc(method))) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>continue</span>; |
| </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:#586e75>// 基本类型不注入</span> |
| </span></span><span style=display:flex><span> Class<span style=color:#719e07><?></span> pt <span style=color:#719e07>=</span> method.getParameterTypes()<span style=color:#719e07>[</span>0<span style=color:#719e07>]</span>; |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (ReflectUtils.isPrimitives(pt)) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>continue</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:#719e07>try</span> { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 获取属性名,比如 setName 方法对应属性名 name</span> |
| </span></span><span style=display:flex><span> String property <span style=color:#719e07>=</span> getSetterProperty(method); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 从 ObjectFactory 中获取依赖对象</span> |
| </span></span><span style=display:flex><span> Object object <span style=color:#719e07>=</span> objectFactory.getExtension(pt, property); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (object <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 注入</span> |
| </span></span><span style=display:flex><span> method.invoke(instance, object); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> } <span style=color:#719e07>catch</span> (Exception e) { |
| </span></span><span style=display:flex><span> logger.error(<span style=color:#2aa198>"Failed to inject via method "</span> <span style=color:#719e07>+</span> method.getName() |
| </span></span><span style=display:flex><span> <span style=color:#719e07>+</span> <span style=color:#2aa198>" of interface "</span> <span style=color:#719e07>+</span> type.getName() <span style=color:#719e07>+</span> <span style=color:#2aa198>": "</span> <span style=color:#719e07>+</span> e.getMessage(), e); |
| </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:#719e07>catch</span> (Exception e) { |
| </span></span><span style=display:flex><span> logger.error(e.getMessage(), e); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> instance; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>在上面代码中,objectFactory 变量的类型为 AdaptiveExtensionFactory,AdaptiveExtensionFactory 内部维护了一个 ExtensionFactory 列表,用于存储其他类型的 ExtensionFactory。Dubbo 目前提供了两种 ExtensionFactory,分别是 SpiExtensionFactory 和 SpringExtensionFactory。前者用于创建自适应的拓展,后者是用于从 Spring 的 IOC 容器中获取所需的拓展。这两个类的类的代码不是很复杂,这里就不一一分析了。</p><p>Dubbo IOC 目前仅支持 setter 方式注入,总的来说,逻辑比较简单易懂。</p><h3 id=24-aop-机制>2.4 AOP 机制</h3><p>Dubbo AOP 机制采用 wrapper 设计模式实现,要成为一个 AOP wrapper 类,必须同时满足以下几个条件:</p><ol><li>wrapper 类必须实现 SPI 接口,如以下示例中的 <code>class QosProtocolWrapper implements Protocol</code></li><li>构造器 constructor 必须包含一个相同的 SPI 参数,如以下示例中 <code>QosProtocolWrapper(Protocol protocol)</code></li><li>wrapper 类必须和普通的 SPI 实现一样写入配置文件,如以下示例 <code>resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol</code></li></ol><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>QosProtocolWrapper</span> <span style=color:#268bd2>implements</span> Protocol, ScopeModelAware { |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> <span style=color:#268bd2>final</span> Protocol protocol; |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>QosProtocolWrapper</span>(Protocol protocol) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (protocol <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>throw</span> <span style=color:#719e07>new</span> IllegalArgumentException(<span style=color:#2aa198>"protocol == null"</span>); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span> <span style=color:#719e07>this</span>.protocol <span style=color:#719e07>=</span> protocol; |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><p>写入配置文件 <code>resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol</code>:</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-properties data-lang=properties><span style=display:flex><span>qos<span style=color:#719e07>=</span><span style=color:#2aa198>org.apache.dubbo.qos.protocol.QosProtocolWrapper</span> |
| </span></span></code></pre></div><p>在通过 <code>getExtension(name)</code> 尝试获取并加载 SPI 扩展实例时,Dubbo 框架会判断所有满足以上 3 个条件的 wrapper 类实现,并将 wrapper 类按顺序包在实例外面,从而达到 AOP 拦截的效果。</p><p>以下是 wrapper 判断与加载的实现逻辑,你还可以使用 @Wrapper 注解来控制 wrapper 类的激活条件:</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> T <span style=color:#268bd2>createExtension</span>(String name, <span style=color:#dc322f>boolean</span> wrap) { |
| </span></span><span style=display:flex><span> Class<span style=color:#719e07><?></span> clazz <span style=color:#719e07>=</span> getExtensionClasses().get(name); |
| </span></span><span style=display:flex><span> T instance <span style=color:#719e07>=</span> (T) extensionInstances.get(clazz); |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// ...</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (wrap) { <span style=color:#586e75>// 如果调用方告知需要 AOP,即 wrap=true</span> |
| </span></span><span style=display:flex><span> List<span style=color:#719e07><</span>Class<span style=color:#719e07><?>></span> wrapperClassesList <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ArrayList<span style=color:#719e07><></span>(); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (cachedWrapperClasses <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span>) { |
| </span></span><span style=display:flex><span> wrapperClassesList.addAll(cachedWrapperClasses); |
| </span></span><span style=display:flex><span> wrapperClassesList.sort(WrapperComparator.COMPARATOR); |
| </span></span><span style=display:flex><span> Collections.reverse(wrapperClassesList); |
| </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>if</span> (CollectionUtils.isNotEmpty(wrapperClassesList)) { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> (Class<span style=color:#719e07><?></span> wrapperClass : wrapperClassesList) { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// 通过 @Wrapper 注解判断当前 wrapper 类是否要生效</span> |
| </span></span><span style=display:flex><span> Wrapper wrapper <span style=color:#719e07>=</span> wrapperClass.getAnnotation(Wrapper.class); |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>boolean</span> match <span style=color:#719e07>=</span> (wrapper <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span>) |
| </span></span><span style=display:flex><span> <span style=color:#719e07>||</span> ((ArrayUtils.isEmpty(wrapper.matches()) |
| </span></span><span style=display:flex><span> <span style=color:#719e07>||</span> ArrayUtils.contains(wrapper.matches(), name)) |
| </span></span><span style=display:flex><span> <span style=color:#719e07>&&</span> <span style=color:#719e07>!</span>ArrayUtils.contains(wrapper.mismatches(), name)); |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (match) { |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> injectExtension( |
| </span></span><span style=display:flex><span> (T) wrapperClass.getConstructor(type).newInstance(instance)); |
| </span></span><span style=display:flex><span> instance <span style=color:#719e07>=</span> postProcessAfterInitialization(instance, name); |
| </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></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h3 id=25-activate激活条件>2.5 Activate激活条件</h3><p>可以使用 <code>@org.apache.dubbo.common.extension.Activate</code> 来控制 SPI 扩展实现在什么场景下加载生效。相比于任何场景下都生效,能精确的控制扩展实现的生效条件会让实现变得更灵活。</p><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-java data-lang=java><span style=display:flex><span><span style=color:#586e75>// 不加 @Activate 注解,getActivateExtension() 时不会加载,其他 getExtension() 方法仍可正常加载</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsProviderFilter</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span></code></pre></div><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:#586e75>// 不加任何参数,表示在 getActivateExtension() 时无条件自动返回</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Activate</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsProviderFilter</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span></code></pre></div><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:#586e75>// group 支持 consumer、provider 两个固定值,getActivateExtension() 调用加载扩展点时自动过滤</span> |
| </span></span><span style=display:flex><span><span style=color:#586e75>// provider 表示在提供者端会被加载;consumer 表示在消费者端会被加载</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Activate</span>(group<span style=color:#719e07>=</span><span style=color:#2aa198>"provider"</span>) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsProviderFilter</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span></code></pre></div><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:#586e75>// URL 参数中有 cache 这个 key 时,调用 getActivateExtension() 才会加载</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Activate</span>(value<span style=color:#719e07>=</span><span style=color:#2aa198>"cache"</span>) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsProviderFilter</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span></code></pre></div><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:#586e75>// URL 参数中有 cache 这个 key 并且值为 test 时,调用 getActivateExtension() 才会加载</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Activate</span>(value<span style=color:#719e07>=</span><span style=color:#2aa198>"cache:test"</span>) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>MetricsProviderFilter</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span></code></pre></div><p>以下是 <code>@Activate</code> 注解的具体定义:</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:#586e75>/** |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * Activate. This annotation is useful for automatically activate certain extensions with the given criteria, |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * for examples: <code>@Activate</code> can be used to load certain <code>Filter</code> extension when there are |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * multiple implementations. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * <ol> |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * <li>{@link Activate#group()} specifies group criteria. Framework SPI defines the valid group values. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * <li>{@link Activate#value()} specifies parameter key in {@link URL} criteria. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * </ol> |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * SPI provider can call {@link ExtensionLoader#getActivateExtension(URL, String, String)} to find out all activated |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * extensions with the given criteria. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Documented</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Retention</span>(RetentionPolicy.RUNTIME) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Target</span>({ElementType.TYPE, ElementType.METHOD}) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>@interface</span> Activate { |
| </span></span><span style=display:flex><span> <span style=color:#586e75>/** |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * Activate the current extension when one of the groups matches. The group passed into |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * {@link ExtensionLoader#getActivateExtension(URL, String, String)} will be used for matching. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @return group names to match |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @see ExtensionLoader#getActivateExtension(URL, String, String) |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> String<span style=color:#719e07>[]</span> <span style=color:#268bd2>group</span>() <span style=color:#719e07>default</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> * Activate the current extension when the specified keys appear in the URL's parameters. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * <p> |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * For example, given <code>@Activate("cache, validation")</code>, the current extension will be return only when |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * there's either <code>cache</code> or <code>validation</code> key appeared in the URL's parameters. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * </p> |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @return URL parameter keys |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @see ExtensionLoader#getActivateExtension(URL, String) |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @see ExtensionLoader#getActivateExtension(URL, String, String) |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> String<span style=color:#719e07>[]</span> <span style=color:#268bd2>value</span>() <span style=color:#719e07>default</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> * Absolute ordering info, optional |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * Ascending order, smaller values will be in the front o the list. |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @return absolute ordering info |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>int</span> <span style=color:#268bd2>order</span>() <span style=color:#719e07>default</span> 0; |
| </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> * Activate loadClass when the current extension when the specified className all match |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> * @return className names to all match |
| </span></span></span><span style=display:flex><span><span style=color:#586e75> */</span> |
| </span></span><span style=display:flex><span> String<span style=color:#719e07>[]</span> <span style=color:#268bd2>onClass</span>() <span style=color:#719e07>default</span> {}; |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h3 id=26-扩展点排序>2.6 扩展点排序</h3><p>排序同样使用 <code>@Activate</code> 注解设置,以下是使用示例,<code>order</code> 值越小加载优先级越高。</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>(order<span style=color:#719e07>=</span>100) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>FilterImpl1</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Activate</span>(order<span style=color:#719e07>=</span>200) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>FilterImpl2</span> <span style=color:#268bd2>implements</span> Filter{} |
| </span></span></code></pre></div><h2 id=3-dubbo-spi-扩展示例>3. Dubbo SPI 扩展示例</h2><h3 id=31--加载固定扩展类>3.1 加载固定扩展类</h3><h4 id=311-编写-spi-接口及实现类>3.1.1 编写 SPI 接口及实现类</h4><p>不管是 Java SPI,还是 Dubbo 中实现的 SPI,都需要编写接口。不过 Dubbo 中的接口需要被 @SPI 注解修饰。</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>@SPI</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> <span style=color:#268bd2>DemoSpi</span> { |
| </span></span><span style=display:flex><span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>say</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>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>DemoSpiImpl</span> <span style=color:#268bd2>implements</span> DemoSpi { |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>say</span>() { |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h4 id=312-将实现类放在特定目录下>3.1.2 将实现类放在特定目录下</h4><p>从上面的代码可知,dubbo 在加载扩展类的时候,会从四个目录中读取。我们在 META-INF/dubbo 目录下新建一个以 DemoSpi 接口名为文件名的文件,内容如下:</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-text data-lang=text><span style=display:flex><span>demoSpiImpl = com.xxx.xxx.DemoSpiImpl(为 DemoSpi 接口实现类的全类名) |
| </span></span></code></pre></div><h4 id=313-使用>3.1.3 使用</h4><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>DubboSPITest</span> { |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Test</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>sayHello</span>() <span style=color:#268bd2>throws</span> Exception { |
| </span></span><span style=display:flex><span> ExtensionLoader<span style=color:#719e07><</span>DemoSpi<span style=color:#719e07>></span> extensionLoader <span style=color:#719e07>=</span> |
| </span></span><span style=display:flex><span> ExtensionLoader.getExtensionLoader(DemoSpi.class); |
| </span></span><span style=display:flex><span> DemoSpi dmeoSpi <span style=color:#719e07>=</span> extensionLoader.getExtension(<span style=color:#2aa198>"demoSpiImpl"</span>); |
| </span></span><span style=display:flex><span> optimusPrime.sayHello(); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h3 id=32-加载自适应扩展类>3.2 加载自适应扩展类</h3><p>这个以 Protocol 为例进行说明</p><h4 id=321-protocol-接口抽取部分核心方法>3.2.1 Protocol 接口(抽取部分核心方法)</h4><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>@SPI</span>(<span style=color:#2aa198>"dubbo"</span>) |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> <span style=color:#268bd2>Protocol</span> { |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Adaptive</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07><</span>T<span style=color:#719e07>></span> Exporter<span style=color:#719e07><</span>T<span style=color:#719e07>></span> <span style=color:#268bd2>export</span>(Invoker<span style=color:#719e07><</span>T<span style=color:#719e07>></span> invoker) <span style=color:#268bd2>throws</span> RpcException; |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Adaptive</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07><</span>T<span style=color:#719e07>></span> Invoker<span style=color:#719e07><</span>T<span style=color:#719e07>></span> <span style=color:#268bd2>refer</span>(Class<span style=color:#719e07><</span>T<span style=color:#719e07>></span> type, URL url) <span style=color:#268bd2>throws</span> RpcException; |
| </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>class</span> <span style=color:#268bd2>DubboProtocol</span> <span style=color:#268bd2>extends</span> AbstractProtocol { |
| </span></span><span style=display:flex><span> ...... |
| </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> <span style=color:#719e07><</span>T<span style=color:#719e07>></span> Invoker<span style=color:#719e07><</span>T<span style=color:#719e07>></span> <span style=color:#268bd2>refer</span>(Class<span style=color:#719e07><</span>T<span style=color:#719e07>></span> type, URL url) <span style=color:#268bd2>throws</span> RpcException { |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> protocolBindingRefer(type, url); |
| </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>@Override</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#719e07><</span>T<span style=color:#719e07>></span> Exporter<span style=color:#719e07><</span>T<span style=color:#719e07>></span> <span style=color:#268bd2>export</span>(Invoker<span style=color:#719e07><</span>T<span style=color:#719e07>></span> invoker) <span style=color:#268bd2>throws</span> RpcException { |
| </span></span><span style=display:flex><span> ...... |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> exporter; |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></div><h4 id=322-将实现类放在特定目录下>3.2.2 将实现类放在特定目录下</h4><p>在 dubbo 中,该配置路径 META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol</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-text data-lang=text><span style=display:flex><span>dubbo=org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol |
| </span></span></code></pre></div><p>需要说明一点的是,在 dubbo 中,并不是直接使用 DubboProtocol 的,而是使用的是其包装类。</p><h4 id=323-使用>3.2.3 使用</h4><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>DubboAdaptiveTest</span> { |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Test</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>sayHello</span>() <span style=color:#268bd2>throws</span> Exception { |
| </span></span><span style=display:flex><span> URL url <span style=color:#719e07>=</span> URL.valueOf(<span style=color:#2aa198>"dubbo://localhost/test"</span>); |
| </span></span><span style=display:flex><span> Protocol adaptiveProtocol <span style=color:#719e07>=</span> ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); |
| </span></span><span style=display:flex><span> adaptiveProtocol.refer(type, url); |
| </span></span><span style=display:flex><span> } |
| </span></span><span style=display:flex><span>} |
| </span></span></code></pre></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><div class=td-page-meta__lastmod>最后修改 March 19, 2024: <a href=https://github.com/apache/dubbo-website/commit/ebc331d21fa5f74f9de5b842afeda5584b068f54>update doc (#2941) (ebc331d21fa)</a></div></div></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/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi.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/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi.md?filename=change-me.md&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%89%a9%e5%b1%95%e7%82%b9%e5%bc%80%e5%8f%91%e6%8c%87%e5%8d%97" 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-dubbo-spi-扩展简介>1. Dubbo SPI 扩展简介</a><ul><li><a href=#11-spi定义>1.1 SPI定义</a></li><li><a href=#12-spi加载流程>1.2 SPI加载流程</a></li></ul></li><li><a href=#2-dubbo-spi-源码分析>2. Dubbo SPI 源码分析</a><ul><li><a href=#21-按名称获取指定扩展类>2.1 按名称获取指定扩展类</a></li><li><a href=#22-加载自适应扩展类>2.2 加载自适应扩展类</a></li><li><a href=#23-ioc-机制>2.3 IOC 机制</a></li><li><a href=#24-aop-机制>2.4 AOP 机制</a></li><li><a href=#25-activate激活条件>2.5 Activate激活条件</a></li><li><a href=#26-扩展点排序>2.6 扩展点排序</a></li></ul></li><li><a href=#3-dubbo-spi-扩展示例>3. Dubbo SPI 扩展示例</a><ul><li><a href=#31--加载固定扩展类>3.1 加载固定扩展类</a></li><li><a href=#32-加载自适应扩展类>3.2 加载自适应扩展类</a></li></ul></li></ul></nav></div></div></div></div><footer><div class=footer-container><div class=footer-container-left><div class=footer-container-left-title>关注我们</div><div class=footer-container-left-des>请通过以下任一或多个渠道关注社区动态,与社区开发者保持密切沟通。</div><div><button class="contact-btn qr-container" onmouseover='showQRCode("wechat-qr")' onmouseout='hideQRCode("wechat-qr")'>微信<div class=qr-code id=wechat-qr style=display:none><img src=https://img.alicdn.com/imgextra/i2/O1CN010ygTmZ1tp9a2Zii3b_!!6000000005950-0-tps-258-258.jpg alt="WeChat QR Code"></div></button> |
| <button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>钉钉<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button> |
| <button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>文档</li><li><a href=/zh-cn/overview/home/>概览</a></li><li><a href=/zh-cn/overview/quickstart/>快速开始</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>开发者指南</a></li></ul><ul><li>资源</li><li><a href=/zh-cn/contact/>社区</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px solid #dddee4;margin-bottom:32px"></div><div class=footer-registration>© 2024 The Apache Software Foundation. Apache Dubbo, Dubbo, Apache, the Apache feather logo, and the Apache Dubbo |
| project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States |
| and other countries. 保留所有权利</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@media only screen and (min-width:1100px){width: 672px;}}.footer-container-left-title{font-size:16px;line-height:24px;color:#2e3038;margin-bottom:16px;@media only screen and (min-width:768px){font-size: 28px; line-height: 36px;}}.footer-container-left-des{font-size:12px;line-height:24px;color:#a3a6b3;margin-bottom:20px;@media only screen and (min-width:768px){margin-bottom: 96px; font-size: 16px;}}.contact-btn{width:auto;min-width:100px;height:40px;padding:0 10px;border-radius:24px;background:#f4f4f6;font-size:12px;font-weight:500;line-height:16px;color:#818598;border:none;margin-right:4px;margin-bottom:20px;@media only screen and (min-width:768px){margin-right: 22px; margin-bottom: 0px;}}.contact-btn a{color:#818598;text-decoration:none}.footer-container-right{display:flex;margin-left:0;margin-top:20px;@media only screen and (min-width:1100px){margin-left: 154px; margin-top: 0px;}}.footer-container-right>ul{list-style-type:none;margin-right:100px;padding-left:0}.footer-container-right ul li{font-size:12px;font-weight:400;line-height:20px;color:#2e3038;margin-bottom:16px;@media only screen and (min-width:768px){font-size: 14px;}}.footer-container-right ul li a{color:#2e3038;text-decoration:none}.footer-container-right ul li:first-child{color:#a3a6b3;font-size:12px;line-height:16px;margin-bottom:20px;@media only screen and (min-width:768px){margin-bottom: 49px;}}.footer-registration{width:920px;font-size:14px;line-height:24px;text-align:center;color:#a3a6b3;margin-bottom:32px}.qr-container{position:relative}.qr-code{position:absolute;background:#fff;border:1px solid #dddee4;padding:10px;border-radius:8px;z-index:10;bottom:40px;left:-10px}.qr-code img{width:100px;height:100px}</style><script>function showQRCode(e){document.getElementById(e).style.display="block"}function hideQRCode(e){document.getElementById(e).style.display="none"}</script><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>(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><script src=/js/main.min.6808fdbee24cd5a505bf4d4917e8143cd76ebd5107d560151e0032c52c3b1d16.js integrity="sha256-aAj9vuJM1aUFv01JF+gUPNduvVEH1WAVHgAyxSw7HRY=" crossorigin=anonymous></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><script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script><script>docsearch({appId:"L5F4T9F0I1",apiKey:"364ae307e1da9d02b2335675e9db1eb1",indexName:"apache_dubbo",container:"#docsearch",debug:!1}),docsearch({appId:"L5F4T9F0I1",apiKey:"364ae307e1da9d02b2335675e9db1eb1",indexName:"apache_dubbo",container:"#docsearch_zh_home",debug:!1})</script></body></html> |