SpringCloud之Eureka无痛迁移到Nacos

浅浅的花香味﹌ 2022-03-22 12:00 591阅读 0赞

前言

Spring Cloud Alibaba实现了Spring Cloud服务注册规范——这让开发者能够非常便利、无痛地将Eureka迁移到Nacos

使用 Spring Cloud Alibaba 的开源组件 spring-cloud-starter-alibaba-nacos-discovery替换 Eureka,So Easy!

关于Nacos的安装,首先安装是非常简单,后面会有专门的文章介绍 。

另外0.2.x版本是适配SpringBoot2.0的,0.1.x是适配SpringBoot1.0的,不要以为是什么低版本不好用。

【官网安装教程】
https://nacos.io/en-us/docs/quick-start.html

maven依赖

【maven库】
https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-alibaba-nacos-discovery

pom.xml中添加Nacos的spring-cloud-alibaba-nacos-discovery依赖,同时去掉Eureka的spring-cloud-starter-netflix-eureka-client依赖。

  1. <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-alibaba-nacos-discovery -->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
  5. <version>0.2.1.RELEASE</version>
  6. </dependency>

application配置。

修改application配置application.properties

  1. nacos.discovery.server-addr=127.0.0.1:8848
  2. #有人说不生效,就试下下面的
  3. #spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

如果是application.yml,请试下下面的配置

  1. nacos:
  2. discovery:
  3. server-addr: 127.0.0.1:8848
  4. #建议先用上面的
  5. spring:
  6. cloud:
  7. nacos:
  8. discovery:
  9. server-addr: 127.0.0.1:8848

@EnableDiscoveryClient注解

更换EnableEurekaClient 注解。如果在你的应用启动程序启动类加了@EnableEurekaClient ,请修改为@EnableDiscoveryClient

@PostConstruct服务注册

被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。也就是运行程序之后就注册到nacos上去。

  1. @SpringBootApplication
  2. @RestController
  3. public class Springboot2NacosDiscoveryApplication {
  4. @NacosInjected
  5. private NamingService namingService;
  6. @Value("${server.port}")
  7. private int serverPort;
  8. @Value("${spring.application.name}")
  9. private String applicationName;
  10. @PostConstruct
  11. public void registerInstance() throws NacosException{
  12. namingService.registerInstance(applicationName,"127.0.0.1",serverPort);
  13. }
  14. @GetMapping( "/getInstance")
  15. public List<Instance> getInstance(@RequestParam String serviceName) throws NacosException {
  16. return namingService.getAllInstances(serviceName);
  17. }
  18. public static void main(String[] args) {
  19. SpringApplication.run(Springboot2NacosDiscoveryApplication.class, args);
  20. }
  21. }
  • registerInstance:注册实例,有多个方法,本文使用的方法需要传入三个参数,分别是:服务名,ip和端口号。
  • getAllInstances:获取实例,传入服务名。

发表评论

表情:
评论列表 (有 0 条评论,591人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringCloudEureka

    背景 服务发现是基于微服务的体系结构的关键原则之一。尝试手工配置每个客户端或某种形式的约定可能很困难,而且很脆弱。Eureka是Netflix的服务发现服务器和客户端。可