nacos主要用于服务注册于发现,在第一篇微服务架构中讲解到eureka注册中心,但是euerka它现在已经闭源了,好像是不进行维护了,而且euerka只提供服务注册于发现,它的可视化也是英文的,不利于我们问题分析,nacos就特别适合我们了,它最重要的两大模块为:微服务注册管理,统一配置中心,可视化页面是中文版可操作,并且可以优雅的进行服务上线于下线,同时提供了较为详细的服务状态,集群状态查看等,nacos官网为:https://nacos.io/zh-cn/docs/what-is-nacos.html,大家可以结合我的配置文件于nacos官网的开发文档进行学习。
首先我们需要下载nacos服务包:
我这边数据存储在mysql所以我会在conf包中的application.properties文件配置数据库连接:
然后在mysql库中导入对应的表结构,表文件sql在conf包下有一个nacos-mysql.sql文件,导入后的表结构为:
接下来我们启动nacos:
启动时会弹出前端显示,我们在看那里详细信息时,可以看到访问地址:
进入该页面,有几个列表,我们开始分别介绍一下这些列表的作用啦,首先我们配置nacos客户端,导入jar,注意nacos有版本问题,大家可以跟着我的pom进行导入就好了:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
</parent>
<artifactId>servce-nacos</artifactId>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
yml配置:
spring:
application:
name: servce-nacos
cloud:
nacos:
# 核心配置,大家可以看官网的配置情况
discovery:
server-addr: 127.0.0.1:8848
weight: 2
# 配置中心
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
server:
port: 9070
#debug: true
启动类的配置:
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceNacosApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceNacosApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
controller层配置:
@RestController
@RequestMapping("/order")
//自动更新配置
@RefreshScope
public class OrderContoller {
@Value("${test}")
private String test;
@Autowired
private RestTemplate restTemplate;
@RequestMapping("getConfig")
public String getConfig() {
System.out.println(test);
return test;
}
@GetMapping("/getOrder")
public Map<String, Object> getOrder(Integer id) {
Map<String, Object> map = new HashMap<>();
System.out.println("调用了该服务");
return map;
}
@GetMapping("/getOrders")
public Map<String, Object> getOrders(Integer id) {
Map<String, Object> map = restTemplate.getForObject("http://servce-nacos/order/getOrder?id=" + id, Map.class);
return map;
}
}
我们开始启动,启动成功后可以在nacos后台查看服务列表:
我们可以点击详情,我们可以修改它的分组,同时也可以让服务进行下线,那么下线的话,该服务是不可调用的,同时有个权重,也就是调用的优先级,我这边在nacos-service中就注册了一个ip为169.254.179.56的服务,我们可以在nacos-service中注册多个服务同时设置不同的权重进行配合使用:
这算是第一块服务的管理。
第二块统一配置中心,我这边配置了一条配置数据:
这个配置中心需要注意几个点:
1:data ID需要跟你的服务名称相同,.yaml后缀是跟你的项目配置文件bootstrap.yml中的config:
server-addr: 127.0.0.1:8848
file-extension: yaml
一致,同时在配置内容时需要选择YAML文件配置完毕后可以访问ip地址:/order/getConfig地址,我这边配置的test是
我访问的值为,说明我这边已经成功获取到统一配置文件内容了:
配置管理中还有一个历史版本,历史版本是记录你所有修改前的配置文件,你可以回滚到修改前的配置文件,这边就不继续操作了。整体就这两大块,还是比较简单的,除了配置不同,其它的微服务组件跟eureka使用是一样的,还有一个集群搭建,搭建多个nacos服务,防止nacos宕机导致整个微服务不可用问题,这边直接看文档https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html:
使用官方文档进行微服务ip端口配置即可,在nacos后台菜单中可以进行管理:
这边就不继续测试了,大家可以自己玩玩。功能还是十分强悍的。推荐使用哟