帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. Serverless应用引擎(新版)
  4. 操作指南
  5. 应用开发
  6. 使用Spring Cloud开发应用
  7. 将应用的服务注册与发现中心更改为Nacos

将应用的服务注册与发现中心更改为Nacos

  • 使用Spring Cloud开发应用
  • 发布于 2025-04-17
  • 0 次阅读
文档编辑
文档编辑

本文以包含服务提供者(Provider)和服务消费者(Consumer)的Spring Cloud微服务应用为例,指导您将原依赖Eureka、Consul、ZooKeeper等组件实现服务注册与发现的应用,更改为使用Nacos作为服务注册与发现中心,并部署到SAE。

前提条件

  1. 下载并解压Nacos Server。

  2. 进入nacos/bin目录,启动Nacos Server。

    • Linux、Unix、macOS系统:执行命令sudo sh startup.sh -m standalone。

    • Windows系统:执行命令startup.cmd -m standalone。

    说明

    standalone表示单机模式运行,非集群模式。startup.cmd文件默认以集群模式启动,因此您在使用Windows系统时,如果直接双击执行startup.cmd文件会导致启动失败,此时需要在startup.cmd文件内设置MODE="standalone"。 更多信息,请参见Nacos快速开始。

为什么托管到SAE

原依赖Eureka、Consul、ZooKeeper和Redis等组件实现服务注册与发现的Spring Cloud应用,如果需要部署至SAE,仅需将原服务注册与发现中心和配置中心替换为Alibaba Nacos Discovery,无需修改任何业务代码。

SAE服务注册中心具有Spring Cloud Alibaba Nacos Discovery所有功能,SAE服务注册中心可以完全代替Eureka、Consul、ZooKeeper和Redis等,作为您微服务应用的服务注册中心。

将Spring Cloud应用托管到SAE,您仅需关注Spring Cloud应用自身的逻辑,无需再关注注册中心和配置中心的搭建和维护,托管后还可以使用SAE提供的弹性伸缩、一键批量启停、应用监控等功能,大幅度降低开发和运维成本。

当您的微服务应用较多时,注册中心按推荐程度由高到低依次排序如下。

  • 商业版的服务注册中心(MSE)

    ZF182Dl2pw

    使用MSE的Nacos作为服务注册中心的具体操作,请参见使用MSE的Nacos注册中心。

  • 自建服务注册中心

    7D79jXUfBL

    搭建并部署自建Nacos注册中心时,您需要确认以下内容。

    • 确保SAE的网络与自建Nacos的网络互通。

    • 确保-D和-XX参数未交替使用,以免命令失效。示例代码如下:

      • 修改前:

        java -Dalicloud.deployment.mode=EDAS_MANAGED -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
      • 修改后:

        java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
    • 建议在部署应用时,使用镜像或者JAR包方式,并配置启动参数-Dnacos.use.endpoint.parsing.rule=false和-Dnacos.use.cloud.namespace.parsing=false。

      重要

      启动参数需要放在-jar之前,否则可能会导致无法使用非SAE自带的注册中心。

      • 如果采用镜像方式,请将-Dnacos.use.endpoint.parsing.rule=false和-Dnacos.use.cloud.namespace.parsing=false配置在镜像文件的程序启动命令中。Docker镜像制作方法,请参见制作Java镜像。

        示例代码如下:

        RUN echo 'eval exec java -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
      • 如果采用JAR包方式,请在控制台启动命令设置区域的options设置文本框输入-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false。图示为Open JDK 8运行环境下的Java应用。具体操作,请参见设置启动命令。sc_configure_a_startup_command_for_nacos

  • SAE内置服务注册中心

    x6JeUmPTQf

    SAE提供Java微服务自动寻址的Nacos Server能力,您可以通过SAE的服务注册发现功能配置。具体操作,请参见使用SAE内置Nacos注册中心。

步骤一:获取Demo

eureka-service-provider和eureka-service-consumer是SAE提供的微服务Demo应用程序包,二者均为已经接入Eureka的Spring Cloud应用。Consumer应用消费Provider应用提供的服务。

  • Provider应用:eureka-service-provider.zip

  • Consumer应用:eureka-service-consumer.zip

步骤二:修改Provider应用的服务注册与发现配置

将云原生的Provider应用托管到SAE中,需要在应用程序中修改pom依赖,并指定Nacos Server的IP地址。

说明

以下情况需要指定Nacos Server的IP地址:

  • 本地测试时,本地测试通过后再部署到SAE中。

  • SAE的服务注册中心为自建的Nacos。

  1. 添加pom依赖。

    打开应用的pom.xml文件,将spring-cloud-starter-netflix-eureka-client替换成为spring-cloud-starter-alibaba-nacos-discovery,并设置Nacos Server的版本信息。

    替换前:

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>                            

    替换后:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>                           
    说明
    • 示例中使用的版本是Spring Cloud Greenwich,对应spring-cloud-starter-alibaba-nacos-discovery的版本为2.1.1.RELEASE。

    • 如果您使用的是Spring Cloud Finchley版本,对应spring-cloud-starter-alibaba-nacos-discovery的版本为2.0.1.RELEASE。

    • 如果您使用的是Spring Cloud Edgware版本,对应spring-cloud-starter-alibaba-nacos-discovery的版本为1.5.1.RELEASE。该版本的生命周期已结束,因此不推荐使用该版本。更多信息,请参见Spring Cloud Edgware Release Notes。

  2. 指定Nacos Server的IP地址。

    打开src\main\resources路径下的application.properties文件,指定Nacos Server的IP地址。

    修改前:

    spring.application.name=service-provider
    server.port=18081
    eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/                            

    修改后:

    spring.application.name=service-provider
    server.port=18081
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848                            

    其中127.0.0.1为Nacos Server的IP地址。如果Nacos Server部署在其他机器上,则需要修改为对应的IP地址。如果有其他需求,请参见配置项参考在application.properties文件中增加所需配置。

  3. 查询应用服务。

    1. 执行nacos-service-provider中ProviderApplication的main函数,启动应用。

    2. 登录本地启动的Nacos Server控制台127.0.0.1:8848/nacos,在左侧导航栏中选择服务管理 > 服务列表。

      说明

      本地Nacos Server控制台的默认用户名和密码均为nacos。

      如果服务列表中显示service-provider,且在详情中可以查询该服务的详细信息,那么表示服务注册成功。

步骤三:修改Consumer应用的服务注册与发现配置

将云原生的Consumer应用托管到SAE中,需要在应用程序中修改pom依赖,并指定Nacos Server的IP地址。

说明

以下情况需要指定Nacos Server的IP地址:

  • 本地测试时,本地测试通过后再部署到SAE中。

  • SAE的服务注册中心为自建的Nacos。

  1. 添加pom依赖。

    打开应用的pom.xml文件,将spring-cloud-starter-netflix-eureka-client替换成为spring-cloud-starter-alibaba-nacos-discovery,并设置Nacos Server的版本信息。

    替换前:

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>                            

    替换后:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>                           
    说明
    • 示例中使用的版本是Spring Cloud Greenwich,对应spring-cloud-starter-alibaba-nacos-discovery的版本为2.1.1.RELEASE。

    • 如果您使用的是Spring Cloud Finchley版本,对应spring-cloud-starter-alibaba-nacos-discovery的版本为2.0.1.RELEASE。

    • 如果您使用的是Spring Cloud Edgware版本,对应spring-cloud-starter-alibaba-nacos-discovery的版本为1.5.1.RELEASE。该版本的生命周期已结束,因此不推荐使用该版本。更多信息,请参见Spring Cloud Edgware Release Notes。

  2. 指定Nacos Server的IP地址。

    打开src\main\resources路径下的application.properties文件,指定Nacos Server的IP地址。

    修改前:

    spring.application.name=service-consumer
    server.port=18082
    eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/                            

    修改后:

    spring.application.name=service-consumer
    server.port=18082
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848                            

    其中127.0.0.1为Nacos Server的IP地址。如果Nacos Server部署在其他机器上,则需要修改为对应的IP地址。如果有其他需求,请参见配置项参考在application.properties文件中增加所需配置。

  3. 查询应用服务。

    1. 执行nacos-service-consumer中ConsumerApplication的main函数,启动应用。

    2. 登录本地启动的Nacos Server控制台127.0.0.1:8848/nacos,在左侧导航栏中选择服务管理 > 服务列表。

      说明

      本地Nacos Server控制台的默认用户名和密码均为nacos。

      如果服务列表中显示service-consumer,且在详情中可以查询该服务的详情,那么表示服务注册成功。

步骤四:查看Provider与Consumer的调用结果

在本地查看Consumer对Provider的服务调用结果。启动服务,执行IP+port/echo-rest/{自定义变量}或IP+port/echo-feign/{自定义变量}查看调用结果。

  • Linux、Unix、macOS系统:执行curl http://127.0.0.1:18082/echo-rest/{自定义变量}或curl http://127.0.0.1:18082/echo-feign/{自定义变量}。

  • Windows系统:在浏览器中输入http://127.0.0.1:18082/echo-rest/{自定义变量}或http://127.0.0.1:18082/echo-feign/{自定义变量}。

示例:以Windows系统为例,当显示以下结果时,表示Provider与Consumer业务调用成功。

结果验证

步骤五:将应用部署到SAE

本文将通过示例说明如何在本地将程序编译成JAR包。此外,您还可以选择将该程序制作成镜像并进行部署。

  1. 在应用的pom.xml文件中添加应用程序的打包配置,添加完成后执行mvn clean package命令将本地的程序编译成可执行的JAR包。

    <build>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>repackage</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
     </build>                        
  2. 将编译好的Provider和Consumer应用包部署至SAE。具体操作,请参见使用JAR包部署Java应用。

    重要
    • SAE不支持创建空应用,因此第一次部署需在控制台完成。

    • 如果使用JAR包部署,在应用部署配置时选择应用运行环境为标准Java应用运行环境。

    • 如果使用WAR包部署,在应用部署配置时应用运行环境为apache-tomcat-XXX。

    当您将应用部署到SAE时,SAE服务注册中心以高优先级自动设置Nacos Server服务端地址和服务端口,以及命名空间、AccessKey ID、AccessKey Secret等信息,您无需进行任何额外的配置。对于原有的配置内容您可以保留或删除。

步骤六:结果验证

  1. 为Consumer应用绑定公网CLB,并在浏览器键入所设置的公网访问地址,进入应用首页。具体操作,请参见为应用绑定CLB并生成应用的公网或私网访问IP。

  2. 在应用首页发起调用请求,然后登录SAE控制台,在左侧导航栏,选择应用管理 > 应用列表,在顶部菜单栏,选择地域。

  3. 在应用列表页面,选择Consumer应用,进入基本信息页面。

  4. 在左侧导航栏,选择应用监控 > 应用总览,查看服务调用数据总览。

    如果能够检测到调用数据,则说明服务调用成功。

配置项参考

配置项

Key

默认值

说明

服务端地址

spring.cloud.nacos.discovery.server-addr

无

Nacos Server启动监听的IP地址和端口。

服务名

spring.cloud.nacos.discovery.service

${spring.application.name}

当前服务的名称。

网卡名

spring.cloud.nacos.discovery.network-interface

无

当IP地址未配置时,注册IP为此网卡所对应的IP地址。如果此项也未配置,则默认取第一块网卡的IP地址。

注册的IP地址

spring.cloud.nacos.discovery.ip

无

高优先级。

注册的端口

spring.cloud.nacos.discovery.port

-1

默认情况下不用配置,系统会自动探测。

命名空间

spring.cloud.nacos.discovery.namespace

无

不同环境的注册逻辑隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

Metadata

spring.cloud.nacos.discovery.metadata

无

使用Map格式配置,您可以根据自己需要自定义和服务相关的元数据信息。

集群

spring.cloud.nacos.discovery.cluster-name

DEFAULT

配置Nacos集群名称。

接入点

spring.cloud.nacos.discovery.endpoint

无

地域的某个服务的入口域名,通过此域名可以动态地获取服务端地址,此配置在部署到SAE时无需填写。

是否集成Ribbon

ribbon.nacos.enabled

true

如果没有明确需求,不需要修改。

更多关于Spring Cloud Alibaba Nacos Discovery的信息,请参见开源版本的Spring Cloud Alibaba Nacos Discovery。

更多信息

应用创建完成后,您可以对应用进行以下操作。

  • 默认情况下,客户端无法从公网访问应用,应用也无法主动访问公网的资源或服务。如果您需要为应用配置网络访问,请参见应用访问。

  • 更多操作,请参见运维管理。

相关文章

Spring Cloud开发概述 2025-04-17 11:01

SAE支持原生Spring Cloud微服务框架,在该框架下开发的应用只需添加服务依赖和修改注册中心配置,便可获取SAE企业级的应用托管、应用治理、监控报警和应用诊断等能力,实现零代码工作量的应用迁移。 为什么使用Spring C

使用Spring Cloud开发微服务应用并部署至SAE 2025-04-17 11:01

本文以包含服务提供者和服务消费者的Spring Cloud应用为例,让您快速体验如何在本地开发、调试Spring Cloud应用并部署到SAE,实现应用的服务注册与发现,以及消费者对提供者的调用。

将应用的服务注册与发现中心更改为Nacos 2025-04-17 11:01

本文以包含服务提供者(Provider)和服务消费者(Consumer)的Spring Cloud微服务应用为例,指导您将原依赖Eureka、Consul、ZooKeeper等组件实现服务注册与发现的应用,更改为使用Nacos作为服务注册与发现中心,并部署到SAE。

实现负载均衡 2025-04-17 11:01

Spring Cloud的负载均衡是通过Ribbon组件完成的,Ribbon提供了客户端侧的软件负载均衡算法。Spring Cloud中的RestTemplate和Feign客户端底层的负载均衡是通过Ribbon实现的,本章介绍如何在您的应用中实现RestTemplate和Feign的负载均衡用法。

实现配置管理 2025-04-17 11:01

本文以Nacos配置管理的Demo应用为例,介绍如何在本地开发、调试Spring Cloud应用,使用Spring Cloud Alibaba Nacos Config实现配置管理,并通过SAE进行配置管理与推送。 <

搭建服务网关 2025-04-17 11:01

本文介绍如何基于Spring Cloud Gateway和Spring Cloud Netflix Zuul使用Nacos搭建应用的服务网关。 为什么使用SAE服务注册中心

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1