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:获取实例,传入服务名。
还没有评论,来说两句吧...