blob: 7e52ac203f5359de7ea83860a1432fcf0622eee8 [file] [log] [blame]
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/en/overview/tasks/migration/service-discovery-samples/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta http-equiv=Content-Security-Policy content="frame-src *"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=manifest href=/manifest.webmanifest><title>Dubbo3 application-level service discovery | Apache Dubbo</title><meta property="og:title" content="Dubbo3 application-level service discovery">
<meta property="og:description" content="This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0."><meta property="og:type" content="article"><meta property="og:url" content="https://cn.dubbo.apache.org/en/overview/tasks/migration/service-discovery-samples/"><meta property="article:section" content="overview"><meta property="article:modified_time" content="2023-08-09T19:18:25+08:00"><meta itemprop=name content="Dubbo3 application-level service discovery"><meta itemprop=description content="This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0."><meta itemprop=dateModified content="2023-08-09T19:18:25+08:00"><meta itemprop=wordCount content="575"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo3 application-level service discovery"><meta name=twitter:description content="This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0."><script async src="https://www.googletagmanager.com/gtag/js?id=G-NM6FFMT51J"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.f77e221bcdbe0cadb996060fe82063c747b60c229a1f8bbf0ee529adbadd84fa.css as=style><link href=/scss/main.min.f77e221bcdbe0cadb996060fe82063c747b60c229a1f8bbf0ee529adbadd84fa.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0."><meta property="og:description" content="This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0."><meta name=twitter:description content="This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0."><meta property="og:url" content="https://cn.dubbo.apache.org/en/overview/tasks/migration/service-discovery-samples/"><meta property="og:title" content="Dubbo3 application-level service discovery"><meta name=twitter:title content="Dubbo3 application-level service discovery"><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-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a class=navbar-brand href=/en/><span class=navbar-logo></span><span class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class="nav-link active" href=/en/overview/><span class=active>Overview</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/docs3-v2/><span>SDK Manual</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/blog/><span>Blog</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>Download</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://start.dubbo.apache.org/bootstrap.html target=_blank><span>Initializer</span><i class='fas fa-external-link-alt'></i></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdownMenuLink role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>English</a><div class="dropdown-menu dropdown-menu-right" aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=/zh-cn/>中文</a></div></li><li class="nav-item dropdown d-lg-block"><div class="nav-item d-none d-lg-block"></div></li></ul></div></nav><section class="header-hero text-white pb-0 light-text"></section></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-md-nowrap"><div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><script>$(function(){$("#td-section-nav a").removeClass("active"),$("#td-section-nav #m-enoverviewtasksmigrationservice-discovery-samples").addClass("active"),$("#td-section-nav #m-enoverviewtasksmigrationservice-discovery-samples-li span").addClass("td-sidebar-nav-active-item"),$("#td-section-nav #m-enoverviewtasksmigrationservice-discovery-samples").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-enoverviewtasksmigrationservice-discovery-samples-li").siblings("li").addClass("show"),$("#td-section-nav #m-enoverviewtasksmigrationservice-discovery-samples-li").children("ul").children("li").addClass("show"),$("#td-sidebar-menu").toggleClass("d-none")})</script><div id=td-sidebar-menu class="td-sidebar__inner d-none"><div id=content-mobile><form class="td-sidebar__search d-flex align-items-center"><button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type=button data-toggle=collapse data-target=#td-section-nav aria-controls=td-docs-nav aria-expanded=false aria-label="Toggle section navigation"></button></form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav foldable-nav" id=td-section-nav><ul class="td-sidebar-nav__section pr-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverview-li><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewwhat-li><input type=checkbox id=m-enoverviewwhat-check>
<label for=m-enoverviewwhat-check><a href=/en/overview/what/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewwhat><span>What is Dubbo</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewwhatoverview-li><input type=checkbox id=m-enoverviewwhatoverview-check>
<label for=m-enoverviewwhatoverview-check><a href=/en/overview/what/overview/ title="Introduction to Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewwhatoverview><span>Introduction</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewwhatdubbo3-li><input type=checkbox id=m-enoverviewwhatdubbo3-check>
<label for=m-enoverviewwhatdubbo3-check><a href=/en/overview/what/dubbo3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewwhatdubbo3><span>Dubbo 3 Quick Facts</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewwhatarchitecture-li><input type=checkbox id=m-enoverviewwhatarchitecture-check>
<label for=m-enoverviewwhatarchitecture-check><a href=/en/overview/what/architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewwhatarchitecture><span>Architecture</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewwhatextensibility-li><input type=checkbox id=m-enoverviewwhatextensibility-check>
<label for=m-enoverviewwhatextensibility-check><a href=/en/overview/what/extensibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewwhatextensibility><span>Extensibility</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewwhatecosystem-li><input type=checkbox id=m-enoverviewwhatecosystem-check>
<label for=m-enoverviewwhatecosystem-check><a href=/en/overview/what/ecosystem/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewwhatecosystem><span>Ecosystem</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewquickstart-li><input type=checkbox id=m-enoverviewquickstart-check>
<label for=m-enoverviewquickstart-check><a href=/en/overview/quickstart/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewquickstart><span>Quick Start</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewquickstartgo-li><input type=checkbox id=m-enoverviewquickstartgo-check>
<label for=m-enoverviewquickstartgo-check><a href=/en/overview/quickstart/go/ title="Quick Start With Golang" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewquickstartgo><span>Quick Start</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewquickstartrust-li><input type=checkbox id=m-enoverviewquickstartrust-check>
<label for=m-enoverviewquickstartrust-check><a href=/en/overview/quickstart/rust/ title="Quick Start With Rust" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewquickstartrust><span>Quick Start</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtasks-li><input type=checkbox id=m-enoverviewtasks-check>
<label for=m-enoverviewtasks-check><a href=/en/overview/tasks/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtasks><span>Tasks</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtaskstraffic-management-li><input type=checkbox id=m-enoverviewtaskstraffic-management-check>
<label for=m-enoverviewtaskstraffic-management-check><a href=/en/overview/tasks/traffic-management/ title="Traffic Management" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtaskstraffic-management><span>Traffic Governance</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementweight-li><input type=checkbox id=m-enoverviewtaskstraffic-managementweight-check>
<label for=m-enoverviewtaskstraffic-managementweight-check><a href=/en/overview/tasks/traffic-management/weight/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementweight><span>Adjust traffic distribution by weight</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementtimeout-li><input type=checkbox id=m-enoverviewtaskstraffic-managementtimeout-check>
<label for=m-enoverviewtaskstraffic-managementtimeout-check><a href=/en/overview/tasks/traffic-management/timeout/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementtimeout><span>Dynamic adjustment of service timeout</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementtraffic-routing-li><input type=checkbox id=m-enoverviewtaskstraffic-managementtraffic-routing-check>
<label for=m-enoverviewtaskstraffic-managementtraffic-routing-check><a href=/en/overview/tasks/traffic-management/traffic-routing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementtraffic-routing><span>Request Routing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementzone-li><input type=checkbox id=m-enoverviewtaskstraffic-managementzone-check>
<label for=m-enoverviewtaskstraffic-managementzone-check><a href=/en/overview/tasks/traffic-management/zone/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementzone><span>Same computer room/area priority</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementisolation-li><input type=checkbox id=m-enoverviewtaskstraffic-managementisolation-check>
<label for=m-enoverviewtaskstraffic-managementisolation-check><a href=/en/overview/tasks/traffic-management/isolation/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementisolation><span>Temporarily kick out the problem service instance</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementtraffic-gray-li><input type=checkbox id=m-enoverviewtaskstraffic-managementtraffic-gray-check>
<label for=m-enoverviewtaskstraffic-managementtraffic-gray-check><a href=/en/overview/tasks/traffic-management/traffic-gray/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementtraffic-gray><span>Traffic Grayscale</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstraffic-managementtraffic-condition-li><input type=checkbox id=m-enoverviewtaskstraffic-managementtraffic-condition-check>
<label for=m-enoverviewtaskstraffic-managementtraffic-condition-check><a href=/en/overview/tasks/traffic-management/traffic-condition/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstraffic-managementtraffic-condition><span>Traffic Isolation</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtaskskubernetes-li><input type=checkbox id=m-enoverviewtaskskubernetes-check>
<label for=m-enoverviewtaskskubernetes-check><a href=/en/overview/tasks/kubernetes/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtaskskubernetes><span>Kubernetes Deployment Solution</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskskubernetesdeploy-on-k8s-li><input type=checkbox id=m-enoverviewtaskskubernetesdeploy-on-k8s-check>
<label for=m-enoverviewtaskskubernetesdeploy-on-k8s-check><a href=/en/overview/tasks/kubernetes/deploy-on-k8s/ title="Deploying to Kubernetes" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskskubernetesdeploy-on-k8s><span>Native K8S Service based on API-SERVER</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtasksmesh-li><input type=checkbox id=m-enoverviewtasksmesh-check>
<label for=m-enoverviewtasksmesh-check><a href=/en/overview/tasks/mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtasksmesh><span>Mesh Deployment Solution</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksmeshdubbo-mesh-li><input type=checkbox id=m-enoverviewtasksmeshdubbo-mesh-check>
<label for=m-enoverviewtasksmeshdubbo-mesh-check><a href=/en/overview/tasks/mesh/dubbo-mesh/ title="Dubbo proxy mesh using Envoy & Istio" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksmeshdubbo-mesh><span>Sidecar mode</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksmeshproxyless-li><input type=checkbox id=m-enoverviewtasksmeshproxyless-check>
<label for=m-enoverviewtasksmeshproxyless-check><a href=/en/overview/tasks/mesh/proxyless/ title="Istio + Proxyless" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksmeshproxyless><span>Proxyless mode</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtaskstriple-li><input type=checkbox id=m-enoverviewtaskstriple-check>
<label for=m-enoverviewtaskstriple-check><a href=/en/overview/tasks/triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtaskstriple><span>Triple Usage Example</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstripleidl-li><input type=checkbox id=m-enoverviewtaskstripleidl-check>
<label for=m-enoverviewtaskstripleidl-check><a href=/en/overview/tasks/triple/idl/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstripleidl><span>Using IDL + Protobuf to define services across languages</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstriplewrap-li><input type=checkbox id=m-enoverviewtaskstriplewrap-check>
<label for=m-enoverviewtaskstriplewrap-check><a href=/en/overview/tasks/triple/wrap/ title="Pojo Serialization Compatibility Mode" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstriplewrap><span>Pojo serialization compatibility mode</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtaskstriplestreaming-li><input type=checkbox id=m-enoverviewtaskstriplestreaming-check>
<label for=m-enoverviewtaskstriplestreaming-check><a href=/en/overview/tasks/triple/streaming/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtaskstriplestreaming><span>Streaming communication mode</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtasksmigration-li><input type=checkbox id=m-enoverviewtasksmigration-check>
<label for=m-enoverviewtasksmigration-check><a href=/en/overview/tasks/migration/ title="How to smoothly migrate to the new functions of Dubbo3" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtasksmigration><span>Migrate to Dubbo3</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksmigration2to3-li><input type=checkbox id=m-enoverviewtasksmigration2to3-check>
<label for=m-enoverviewtasksmigration2to3-check><a href=/en/overview/tasks/migration/2to3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksmigration2to3><span>Upgrade to Dubbo3</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksmigrationmigration-triple-li><input type=checkbox id=m-enoverviewtasksmigrationmigration-triple-check>
<label for=m-enoverviewtasksmigrationmigration-triple-check><a href=/en/overview/tasks/migration/migration-triple/ title="Guide to Migrating Dubbo Protocol to Triple Protocol" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksmigrationmigration-triple><span>Triple Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksmigrationservice-discovery-samples-li><input type=checkbox id=m-enoverviewtasksmigrationservice-discovery-samples-check>
<label for=m-enoverviewtasksmigrationservice-discovery-samples-check><a href=/en/overview/tasks/migration/service-discovery-samples/ title="Dubbo3 application-level service discovery" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksmigrationservice-discovery-samples><span>Application-Level Service Discovery</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtasksecosystem-li><input type=checkbox id=m-enoverviewtasksecosystem-check>
<label for=m-enoverviewtasksecosystem-check><a href=/en/overview/tasks/ecosystem/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtasksecosystem><span>Microservice Governance</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksecosystemtransaction-li><input type=checkbox id=m-enoverviewtasksecosystemtransaction-check>
<label for=m-enoverviewtasksecosystemtransaction-check><a href=/en/overview/tasks/ecosystem/transaction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksecosystemtransaction><span>Transaction Management</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksecosystemrate-limit-li><input type=checkbox id=m-enoverviewtasksecosystemrate-limit-check>
<label for=m-enoverviewtasksecosystemrate-limit-check><a href=/en/overview/tasks/ecosystem/rate-limit/ title="Current Limit Downgrade" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksecosystemrate-limit><span>Current limit downgrade</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewtasksextensibility-li><input type=checkbox id=m-enoverviewtasksextensibility-check>
<label for=m-enoverviewtasksextensibility-check><a href=/en/overview/tasks/extensibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewtasksextensibility><span>Custom Extensions</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksextensibilityprotocol-li><input type=checkbox id=m-enoverviewtasksextensibilityprotocol-check>
<label for=m-enoverviewtasksextensibilityprotocol-check><a href=/en/overview/tasks/extensibility/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksextensibilityprotocol><span>Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksextensibilityregistry-li><input type=checkbox id=m-enoverviewtasksextensibilityregistry-check>
<label for=m-enoverviewtasksextensibilityregistry-check><a href=/en/overview/tasks/extensibility/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksextensibilityregistry><span>Registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksextensibilityrouter-li><input type=checkbox id=m-enoverviewtasksextensibilityrouter-check>
<label for=m-enoverviewtasksextensibilityrouter-check><a href=/en/overview/tasks/extensibility/router/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksextensibilityrouter><span>Router</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewtasksextensibilityfilter-li><input type=checkbox id=m-enoverviewtasksextensibilityfilter-check>
<label for=m-enoverviewtasksextensibilityfilter-check><a href=/en/overview/tasks/extensibility/filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewtasksextensibilityfilter><span>Custom extension</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewmannual-li><input type=checkbox id=m-enoverviewmannual-check>
<label for=m-enoverviewmannual-check><a href=/en/overview/mannual/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewmannual><span>SDK Manual</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewmannualjava-li><input type=checkbox id=m-enoverviewmannualjava-check>
<label for=m-enoverviewmannualjava-check><a href=/en/docs3-v2/java-sdk/ title="Java SDK" target=_blank rel=noopener class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewmannualjava><span>Java</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewmannualgolang-li><input type=checkbox id=m-enoverviewmannualgolang-check>
<label for=m-enoverviewmannualgolang-check><a href=/en/docs3-v2/golang-sdk/ title="Golang SDK" target=_blank rel=noopener class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewmannualgolang><span>Golang</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewmannualrust-li><input type=checkbox id=m-enoverviewmannualrust-check>
<label for=m-enoverviewmannualrust-check><a href=/en/docs3-v2/rust-sdk/ title="Rust SDK" target=_blank rel=noopener class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewmannualrust><span>Rust</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewcore-features-li><input type=checkbox id=m-enoverviewcore-features-check>
<label for=m-enoverviewcore-features-check><a href=/en/overview/core-features/ title="Core Features" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewcore-features><span>Features</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresservice-definition-li><input type=checkbox id=m-enoverviewcore-featuresservice-definition-check>
<label for=m-enoverviewcore-featuresservice-definition-check><a href=/en/overview/core-features/service-definition/ title="Develop microservice with Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresservice-definition><span>Microservice develop</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresservice-mesh-li><input type=checkbox id=m-enoverviewcore-featuresservice-mesh-check>
<label for=m-enoverviewcore-featuresservice-mesh-check><a href=/en/overview/core-features/service-mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresservice-mesh><span>Service Mesh</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresservice-discovery-li><input type=checkbox id=m-enoverviewcore-featuresservice-discovery-check>
<label for=m-enoverviewcore-featuresservice-discovery-check><a href=/en/overview/core-features/service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresservice-discovery><span>Service Discovery</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresmore-li><input type=checkbox id=m-enoverviewcore-featuresmore-check>
<label for=m-enoverviewcore-featuresmore-check><a href=/en/overview/core-features/more/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresmore><span>More Advanced Features</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresload-balance-li><input type=checkbox id=m-enoverviewcore-featuresload-balance-check>
<label for=m-enoverviewcore-featuresload-balance-check><a href=/en/overview/core-features/load-balance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresload-balance><span>Load Balancing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewcore-featurestraffic-li><input type=checkbox id=m-enoverviewcore-featurestraffic-check>
<label for=m-enoverviewcore-featurestraffic-check><a href=/en/overview/core-features/traffic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewcore-featurestraffic><span>流量管控</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featurestrafficcondition-rule-li><input type=checkbox id=m-enoverviewcore-featurestrafficcondition-rule-check>
<label for=m-enoverviewcore-featurestrafficcondition-rule-check><a href=/en/overview/core-features/traffic/condition-rule/ title="Conditional Routing Rules" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featurestrafficcondition-rule><span>Conditional Routing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featurestraffictag-rule-li><input type=checkbox id=m-enoverviewcore-featurestraffictag-rule-check>
<label for=m-enoverviewcore-featurestraffictag-rule-check><a href=/en/overview/core-features/traffic/tag-rule/ title=标签路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featurestraffictag-rule><span>标签路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featurestrafficscript-rule-li><input type=checkbox id=m-enoverviewcore-featurestrafficscript-rule-check>
<label for=m-enoverviewcore-featurestrafficscript-rule-check><a href=/en/overview/core-features/traffic/script-rule/ title=脚本路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featurestrafficscript-rule><span>脚本路由</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featurestrafficconfiguration-rule-li><input type=checkbox id=m-enoverviewcore-featurestrafficconfiguration-rule-check>
<label for=m-enoverviewcore-featurestrafficconfiguration-rule-check><a href=/en/overview/core-features/traffic/configuration-rule/ title=动态配置规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featurestrafficconfiguration-rule><span>动态配置</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featurestrafficmesh-rule-li><input type=checkbox id=m-enoverviewcore-featurestrafficmesh-rule-check>
<label for=m-enoverviewcore-featurestrafficmesh-rule-check><a href=/en/overview/core-features/traffic/mesh-rule/ title=基于服务网格的路由规则 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featurestrafficmesh-rule><span>服务网格</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresprotocols-li><input type=checkbox id=m-enoverviewcore-featuresprotocols-check>
<label for=m-enoverviewcore-featuresprotocols-check><a href=/en/overview/core-features/protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresprotocols><span>Protocols</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresextensibility-li><input type=checkbox id=m-enoverviewcore-featuresextensibility-check>
<label for=m-enoverviewcore-featuresextensibility-check><a href=/en/overview/core-features/extensibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresextensibility><span>Extensibility Adaptation</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresobservability-li><input type=checkbox id=m-enoverviewcore-featuresobservability-check>
<label for=m-enoverviewcore-featuresobservability-check><a href=/en/overview/core-features/observability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresobservability><span>Observability</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuressecurity-li><input type=checkbox id=m-enoverviewcore-featuressecurity-check>
<label for=m-enoverviewcore-featuressecurity-check><a href=/en/overview/core-features/security/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuressecurity><span>Authentication</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewcore-featuresecosystem-li><input type=checkbox id=m-enoverviewcore-featuresecosystem-check>
<label for=m-enoverviewcore-featuresecosystem-check><a href=/en/overview/core-features/ecosystem/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewcore-featuresecosystem><span>Microservices Ecosystem</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-enoverviewnotices-li><input type=checkbox id=m-enoverviewnotices-check>
<label for=m-enoverviewnotices-check><a href=/en/overview/notices/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enoverviewnotices><span>Security Notice</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticesserialization-li><input type=checkbox id=m-enoverviewnoticesserialization-check>
<label for=m-enoverviewnoticesserialization-check><a href=/en/overview/notices/serialization/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesserialization><span>Serialization Security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticesprotocol-li><input type=checkbox id=m-enoverviewnoticesprotocol-check>
<label for=m-enoverviewnoticesprotocol-check><a href=/en/overview/notices/protocol/ title="RPC Protocol Security" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesprotocol><span>RPC protocol security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticesregistry-li><input type=checkbox id=m-enoverviewnoticesregistry-check>
<label for=m-enoverviewnoticesregistry-check><a href=/en/overview/notices/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesregistry><span>Registration Center Security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticesadmin-li><input type=checkbox id=m-enoverviewnoticesadmin-check>
<label for=m-enoverviewnoticesadmin-check><a href=/en/overview/notices/admin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesadmin><span>Dubbo Admin Security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticeslog4j-li><input type=checkbox id=m-enoverviewnoticeslog4j-check>
<label for=m-enoverviewnoticeslog4j-check><a href=/en/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticeslog4j><span>Log4j vulnerability impact</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=https://cn.dubbo.apache.org/en/overview/>Overview</a></li><li class=breadcrumb-item><a href=https://cn.dubbo.apache.org/en/overview/tasks/>Tasks</a></li><li class=breadcrumb-item><a href=https://cn.dubbo.apache.org/en/overview/tasks/migration/>Migrate to Dubbo3</a></li><li class="breadcrumb-item active" aria-current=page><a href=https://cn.dubbo.apache.org/en/overview/tasks/migration/service-discovery-samples/ aria-disabled=true class="btn-link disabled">Application-Level Service Discovery</a></li></ol></nav><div class=td-content><h1>Dubbo3 application-level service discovery</h1><div class=lead>This article specifically explains how users can quickly enable new features of application-level service discovery after upgrading to Dubbo 3.0.</div><header class=article-meta></header><p>Application-level service discovery is a protocol for service discovery between applications. Therefore, to use application-level service discovery, both the consumer and the server must be upgraded to Dubbo 3.0 and new features enabled (enabled by default) to use application-level service discovery in the link. Take advantage of application-level service discovery.</p><h2 id=open-method>Open method</h2><h2 id=server>Server</h2><p>After the application is upgraded to Dubbo 3.0, the server will automatically enable the interface-level + application-level dual registration function, and the developer does not need to modify any configuration by default</p><h3 id=consumer-side>Consumer side</h3><p>After the application is upgraded to Dubbo 3.0, the consumer side automatically starts the interface-level + application-level dual subscription function, and the developer does not need to modify any configuration by default. It is recommended that after the server is upgraded to Dubbo 3.0 and the application-level registration is enabled, configure the consumer end to close the interface-level subscription through rules to release the corresponding memory space.</p><h2 id=detailed-description>Detailed description</h2><h3 id=server-configuration>Server configuration</h3><ol><li>Global switch</li></ol><p>Application configuration (can be specified by configuration file or -D) <code>dubbo.application.register-mode</code> enables the global registration switch for instance (only register application level) and all (both interface level and application level registration). After configuring this switch , by default, application-level addresses will be registered with all registries for service discovery on the consumer side.</p><blockquote><p>Example: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-provider2/src/main/resources/ dubbo.properties](<a href=https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-provider2/src>https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-provider2/src</a> /main/resources/dubbo.properties)</p></blockquote><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-fallback data-lang=fallback><span style=display:flex><span># double registration
</span></span><span style=display:flex><span>dubbo.application.register-mode=all
</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-fallback data-lang=fallback><span style=display:flex><span># Application-level registration only
</span></span><span style=display:flex><span>dubbo.application.register-mode=instance
</span></span></code></pre></div><ol start=2><li>Registration center address parameter configuration</li></ol><p>Registry-type=service can be configured on the address of the registry to display the registry that specifies the registry as application-level service discovery, and the registry with this configuration will only perform application-level service discovery.</p><blockquote><p>Example: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-demo-servicediscovery-xml/servicediscovery-provider/src/main/resources/spring/ dubbo-provider.xml](<a href=https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-demo-servicediscovery-xml/servicediscovery-provider/src>https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-demo-servicediscovery-xml/servicediscovery-provider/src</a> /main/resources/spring/dubbo-provider.xml)</p></blockquote><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=display:flex><span><span style=color:#268bd2>&lt;dubbo:registry</span> address=<span style=color:#2aa198>&#34;nacos://${nacos.address:127.0.0.1}:8848?registry-type=service&#34;</span><span style=color:#268bd2>/&gt;</span>
</span></span></code></pre></div><h3 id=consumer-subscription-mode>Consumer Subscription Mode</h3><p>FORCE_INTERFACE: only interface-level subscription, the behavior is consistent with Dubbo 2.7 and previous versions.
APPLICATION_FIRST: interface level + application level multi-subscription, if the application level can subscribe to the address, use the application level subscription, if the address cannot be subscribed, use the interface level subscription, so as to ensure the greatest compatibility during the migration process. (Note: Due to the simultaneous subscription behavior, the memory usage in this mode will increase to a certain extent, so after all servers are upgraded to Dubbo 3.0, it is recommended to migrate to FORCE_APPLICATION mode to reduce memory usage)
FORCE_APPLICATION: Only application-level subscriptions will only use the new service discovery model.</p><h3 id=consumer-configuration>Consumer configuration</h3><ol><li>Default configuration (no configuration required)</li></ol><p>After upgrading to Dubbo 3.0, the default behavior is interface-level + application-level multi-subscription. If the address can be subscribed at the application level, the application-level subscription will be used. If the address cannot be subscribed, the interface-level subscription will be used to ensure maximum compatibility.</p><ol start=2><li>Subscription parameter configuration</li></ol><p>Application configuration (can be specified by configuration file or -D) <code>dubbo.application.service-discovery.migration</code> is <code>APPLICATION_FIRST</code> to enable multi-subscription mode, and configuration to <code>FORCE_APPLICATION</code> can force application-level subscription mode only.
The specific interface subscription can be configured in <code>parameters</code> in <code>ReferenceConfig</code>, and the Key is <code>migration.step</code>, and the Value is <code>APPLICATION_FIRST</code> or <code>FORCE_APPLICATION</code> key-value pair to configure a single subscription.</p><blockquote><p>Example: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-consumer/src/test/java/ org/apache/dubbo/demo/consumer/DemoServiceConfigIT.java](<a href=https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration>https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration</a> /dubbo-servicediscovery-migration-consumer/src/test/java/org/apache/dubbo/demo/consumer/DemoServiceConfigIT.java)</p></blockquote><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>System.setProperty(<span style=color:#2aa198>&#34;dubbo.application.service-discovery.migration&#34;</span>, <span style=color:#2aa198>&#34;APPLICATION_FIRST&#34;</span>);
</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>ReferenceConfig<span style=color:#719e07>&lt;</span>DemoService<span style=color:#719e07>&gt;</span> referenceConfig <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ReferenceConfig<span style=color:#719e07>&lt;&gt;</span>(applicationModel. <span style=color:#268bd2>newModule</span>());
</span></span><span style=display:flex><span>referenceConfig.setInterface(DemoService.class);
</span></span><span style=display:flex><span>referenceConfig.setParameters(<span style=color:#719e07>new</span> HashMap<span style=color:#719e07>&lt;&gt;</span>());
</span></span><span style=display:flex><span>referenceConfig.getParameters().put(<span style=color:#2aa198>&#34;migration.step&#34;</span>, mode);
</span></span><span style=display:flex><span><span style=color:#719e07>return</span> referenceConfig.get();
</span></span></code></pre></div><ol start=3><li>Dynamic configuration (highest priority, configuration can be modified at runtime)</li></ol><p>This configuration needs to be pushed based on the configuration center, the Key is the application name + <code>.migration</code> (such as <code>demo-application.migraion</code>), and the Group is <code>DUBBO_SERVICEDISCOVERY_MIGRATION</code>. For details on rule body configuration, see <a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/service-discovery/service-discovery-rule/>Guidelines for migrating from interface-level service discovery to application-level service discovery</a>.</p><blockquote><p>Example: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-consumer/src/main/java/ org/apache/dubbo/demo/consumer/UpgradeUtil.java](<a href=https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration>https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration</a> /dubbo-servicediscovery-migration-consumer/src/main/java/org/apache/dubbo/demo/consumer/UpgradeUtil.java)</p></blockquote><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>step: FORCE_INTERFACE
</span></span></code></pre></div><div id=pre-footer><h2>Feedback</h2><p class=feedback--prompt>Was this page helpful?</p><button class="btn btn-primary mb-4 feedback--yes">Yes</button>
<button class="btn btn-primary mb-4 feedback--no">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><br><div class="text-muted mt-5 pt-3 border-top">Last modified August 9, 2023: <a href=https://github.com/apache/dubbo-website/commit/99c8bd6ec1c4d3856bd4f626a53a3d23cdc4be97>Fix broken link (#2790) (99c8bd6ec1c)</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/en/overview/tasks/migration/service-discovery-samples.md target=_blank><i class="fa fa-edit fa-fw"></i> Edit this page</a>
<a href="https://github.com/apache/dubbo-website/new/master/content/en/overview/tasks/migration/service-discovery-samples.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" target=_blank><i class="fa fa-edit fa-fw"></i> Create child page</a>
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo3%20application-level%20service%20discovery" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#open-method>Open method</a></li><li><a href=#server>Server</a><ul><li><a href=#consumer-side>Consumer side</a></li></ul></li><li><a href=#detailed-description>Detailed description</a><ul><li><a href=#server-configuration>Server configuration</a></li><li><a href=#consumer-subscription-mode>Consumer Subscription Mode</a></li><li><a href=#consumer-configuration>Consumer configuration</a></li></ul></li></ul></nav></div></div></div></div><footer class="bg-dark py-5 row d-print-none footer-margin-0"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Dubbo mailing list archive" aria-label="Dubbo mailing list archive"><a class=text-white target=_blank rel="noopener noreferrer" href=https://lists.apache.org/list.html?dev@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel="noopener noreferrer" href=https://github.com/apache/dubbo><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Subscribe to mailing list" aria-label="Subscribe to mailing list"><a class=text-white target=_blank rel="noopener noreferrer" href=mailto:dev-subscribe@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>&copy; 2024 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. All Rights Reserved</small></div></div></div></footer><div class="row pt-2 pb-2 footer-margin-0"><div class="container-fluid mx-sm-5"><div class=text-center id=my-footer><img alt=apache_logo src=/imgs/apache_logo.png><ul><li><a href=https://www.apache.org>Foundation</a></li><li><a href=https://www.apache.org/licenses/>License</a></li><li><a href=https://dubbo.apache.org/en/overview/notices/>Security</a></li><li><a href=https://www.apache.org/events/current-event>Events</a></li><li><a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a href=https://privacy.apache.org/policies/privacy-policy-public.html>Privacy</a></li><li><a href=https://www.apache.org/foundation/thanks.html>Thanks</a></li></ul></div></div></div><script src=/js/popper.min.js integrity=sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49 crossorigin=anonymous></script><script src=/js/bootstrap.min.js integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy crossorigin=anonymous></script><script src=/js/main.min.b075178d232d3b0039b3cb6af2fc2e9d90071820167a60f4eea3a79169975ee8.js integrity="sha256-sHUXjSMtOwA5s8tq8vwunZAHGCAWemD07qOnkWmXXug=" crossorigin=anonymous></script><script async src=https://widget.kapa.ai/kapa-widget.bundle.js data-website-id=d763c4f2-f871-400b-aeca-d986c4af73c2 data-project-name="Apache Dubbo" data-project-color=#E8442E data-button-text="Ask AI" data-search-mode-enabled=true data-modal-open-on-command-k=true data-modal-disclaimer="The AI supports multiple languages, but it may not be accessible in China due to recaptcha, a proxy is required." data-project-logo=https://pbs.twimg.com/profile_images/1011849068283191302/FJbH5vbF_400x400.jpg data-modal-example-questions="What is Apache Dubbo?,How to run Apache Dubbo?" data-button-position-top data-button-position-right=20px data-button-position-bottom=200px data-button-position-left></script><script>(function(e,t,n,s){e[s]=e[s]||[];var a=t.getElementsByTagName(n)[0],i=t.createElement(n);i.async=!0,i.id="beacon-aplus",i.setAttribute("exparams","userid=&aplus&sidx=aplusSidex&ckx=aplusCkx"),i.src="//g.alicdn.com/alilog/mlog/aplus_v2.js",i.crossorigin="anonymous",a.parentNode.insertBefore(i,a)})(window,document,"script","aplus_queue"),function(e){var t=e.createElement("script");t.type="text/javascript",t.async=!0,t.src="//g.alicdn.com/aes/??tracker/3.3.4/index.js,tracker-plugin-pv/3.0.5/index.js,tracker-plugin-event/3.0.0/index.js,tracker-plugin-autolog/3.0.3/index.js,tracker-plugin-survey/3.0.3/index.js,tracker-plugin-jserror/3.0.3/index.js,tracker-plugin-resourceError/3.0.3/index.js",t.onload=function(){window.AES_CONFIG=window.AES_CONFIG||{env:"prod"},window.aes=new AES({pid:"zN245h",user_type:6}),window.AESPluginAutologConfig={exposure:"auto"},window.AEMPluginInstances=[aes.use(AESPluginPV,window.AESPluginPVConfig||{enableHistory:!0}),aes.use(AESPluginEvent,window.AESPluginEventConfig||{}),aes.use(AESPluginSurvey,window.AESPluginEventConfig||{}),aes.use(AESPluginAutolog,window.AESPluginAutologConfig||{}),aes.use(AESPluginJSError,window.AESPluginJSError||{}),aes.use(AESPluginResourceError,window.AESPluginResourceError||{})]},setTimeout(function(){e.getElementsByTagName("body")[0].appendChild(t)},800)}(document)</script></body></html>