SpringCloud之Eureka无痛迁移到Nacos

前言

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依赖。

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

application配置。

修改application配置application.properties

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

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

nacos:
    discovery:
      server-addr: 127.0.0.1:8848
#建议先用上面的
spring:
    cloud:
      nacos:
        discovery:
          server-addr: 127.0.0.1:8848

@EnableDiscoveryClient注解

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

@PostConstruct服务注册

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

@SpringBootApplication
@RestController
public class Springboot2NacosDiscoveryApplication {

	@NacosInjected
	private NamingService namingService;

	@Value("${server.port}")
	private int serverPort;

	@Value("${spring.application.name}")
	private String applicationName;

	@PostConstruct
	public void registerInstance() throws NacosException{
		namingService.registerInstance(applicationName,"127.0.0.1",serverPort);
	}

	@GetMapping( "/getInstance")
	public List<Instance> getInstance(@RequestParam String serviceName) throws NacosException {
		return namingService.getAllInstances(serviceName);
	}

	public static void main(String[] args) {
		SpringApplication.run(Springboot2NacosDiscoveryApplication.class, args);
	}
}

  • registerInstance:注册实例,有多个方法,本文使用的方法需要传入三个参数,分别是:服务名,ip和端口号。
  • getAllInstances:获取实例,传入服务名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值