前言:
由于项目原先使用的Euraka并没有自带配置中心的功能,每次都要把配置文件放在git上更新,导致git拉取代码常常出现项目代码和项目中的config-server去拉取git上的配置总是容易冲突,所以现在将Euraka替换成Spring Cloud Alibaba Nacos。
开始
1、先本地需要安装 Nacos。__Nacos 的安装方式也是极其的简单,参考 Nacos 官网。假设现在已经正常启动了 Nacos 。
本地启动nacos可以看这篇。其中需要配置数据库参数。
2、添加 Nacos 的 pom 依赖,同时去掉 Eureka。 在需要替换的工程目录下找到 maven 的配置文件 pom.xml。添加如下的 pom 依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.4</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.2.0</version>
</dependency>
3、(可选) 更换 EnableEurekaClient 注解。 如果在你的应用启动程序类加了 EnableEurekaClient 注解,这个时候需要更符合 Spring Cloud 规范的一个注解 EnableDiscoveryClient 。
4、创建DiscoveryController类,通过@NacosInjected注入nacos的NamingService,并提供discovery方法,可以根据服务名称获得注册到Nacos上的服务地址。
@RestController
public class DiscoveryController {
@NacosInjected // 通过注解注入nacos的NamingService,并提供discovery方法,可以根据服务名称获得注册到Nacos上的服务地址
private NamingService namingService;
@GetMapping("/discovery")
public List<Instance> get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
5、在bootstrap.yml文件中添加配置
spring:
cloud:
nacos:
config.:
server-addr: 10.7.60.63:8848
discovery:
server-addr: 10.7.60.63:8848
application:
name: example
profiles:
active: dev
启动工程之前先启动Nacos服务
6、先在服务器中访问 http://127.0.0.1:8080/discovery?serviceName=example
这个的意思是去Nacos服务器查询服务名称example所对应的地址信息,由于此时的Nacos Server并没有example的服务实例,放回一个空的JSON数组[]
7、接着,通过Nacos提供的OpenAPI,想Nacos Server注册一个名字为example的服务 (这个也可以自己去服务中心配置) 这个网址是: http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080 注意,最后的ip可能需要换成自己机器的地址。
8、记得在Nacos的控制台切换到public的命名空间
9、再次访问 http://127.0.0.1:8080/discovery?serviceName=example 返回如下信息