一、什么是Nacos?
Nacos是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。(用来实现配置中心和服务注册中心)
官网:https://nacos.io/zh-cn/docs/what-is-nacos.html
二、nacos安装和启动
1.下载
nacos安装包:https://github.com/alibaba/nacos/tags
解压安装包:
[root@localhost ~]# cd /usr/upload
[root@localhost upload]# tar -zxvf nacos-server-1.4.1.tar.gz -C /usr/local
2.启动和关闭
- 启动: [root@localhost bin]# ./startup.sh -m standalone #非集群模式启动
- 关闭: [root@localhost bin]# ./shutdown.sh
3.测试
访问 http://192.168.145.129:8848/nacos
默认用户名/密码为: nacos/nacos 默认的端口号为:8848
三、nacos注册中心(存服务的ip和port)
1.什么是Nacos注册中心
注册中心由以下三部分组成:
- Nacos-Server:注册中心
提供服务的注册和发现。
- Nacos-Provider:服务提供方
把自身的服务实例注册到 Nacos Server 中。
- Nacos-Consumer:服务调用方
通过 Nacos Server 获取服务列表,消费服务。
四、Nacos注册中心连合springCloud测试
1.依赖加入pom
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.设置application.yml中的nacos配置
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.145.129:8848 #nacos地址
application:
name: nacos-consumer #注册名
3.在启动类上增加开启注册中心服务的注解
@SpringBootApplication
@EnableDiscoveryClient
public class OrderApp {
public static void main(String[] args) {
SpringApplication.run(OrderApp.class, args);
}
}
4.config
在config添加spring自带的转发工具 RestTemplate
@Configuration
public class BeanConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
5.controller
在controler中加入nacos的获取配置信息类 DiscoveryClient
@RestController
@RequestMapping(value = "/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;
@RequestMapping(value="/getUserById/{id}")
public User getUserById(@PathVariable Integer id){
//获取nacos中注册的所有服务信息
List<String> serviceList = discoveryClient.getServices();
for (String service : serviceList) {
System.out.println(service);
}
//获取nacos中注册的指定服务信息
ServiceInstance instance = discoveryClient.getInstances("nacos-provider").get(0);
String serviceUrl = instance.getHost() + ":" + instance.getPort();
String url = "http://"+serviceUrl+"/provider/getUserById/"+id;
return restTemplate.getForObject(url, User.class);
}
}
最后启动就会注册到注册中心了
五、Nacos的配置中心
1.优点
Ncos可以作为配置中心有以下优点:
-
首先把项目中各种配置全部都放到一个集中的地方进行统一管理。
-
当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。
-
当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。
2.通过idea添加配置
1.pom依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.配置文件
注意:配置中心的配置为 bootstrap.yml
spring:
cloud:
nacos:
config:
server-addr: 192.168.204.129:8848
file-extension: yaml #后缀名,只支持 properties 和 yaml 类型
prefix: nacos-config #文件名,如果没有配置则默认为 ${spring.appliction.name}
3.启动项
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigApp {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApp.class);
}
}
3.直接在浏览器添加配置
4.config的隔离级别
1.隔离结构
由以下三种组成:
-
Namespace: 代表不同的环境的配置隔离, 如: 开发、测试, 生产等
-
Group: 可以代表某个项目, 如XX医疗项目, XX电商项目
-
DataId: 每个项目下往往有若干个工程, 每个配置集(DataId)是一个工程的主配置文件
2. Namespace、Group、DataId的新建
5.读取配置中心配置
通过yml读取
spring:
cloud:
nacos:
config:
server-addr: 192.168.204.129:8848
file-extension: yaml
prefix: nacos-config
namespace: a66ca122-fb24-46ba-bde0-58508c2d6689
group: NACOS_GROUP #nacos项目
六、Ncos的持久化(MySQL)
1.修改conf/application.properties文件
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.31.19:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1111
2.创建Nacos数据库
创建nacos数据库并把sql文件注入nacos数据库