Dynamic Naming And Configuration Service,就是注册中心 + 配置中心的组合 Nacos 等价于Eureka + Config + Bus。
可以用来替代Eureka做服务注册中心,替代Config做服务配置中心
官方文档地址
1. 下载地址https://github.com/alibaba/Nacos nacos.io/zh-cn/ https://github.com/alibaba/nacos/releases/tag/1.2.0
Windows
下载zip格式解压缩之后,找到bin目录,用cmd命令运行startup.cmd
2.安装遇到的BUG(极其无语)- 首先需要打开conf文件夹 找到里边的两个 sql文件,在本地数据库创建一个nacos数据库,将这两个sql执行一下还是在conf文件下下的application.properties中,将关于数据库的注释放开,大约在31 -41 行
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=xxx
如果遇到了死活打不开内置tomcat,报错信息如下
Unable to start web server,Unable to start embedded Tomcat
请更换JDK版本为JDK1.8.0_191,JDK1.8.0_261,,JDK1.8.0_271中的其中一个,反正是JDK_1.8.0_202这个版本不行
https://blog.csdn.net/m0_49501947/article/details/108152856
如果能够成功运行但是,数据库没有用户名和密码,还是打开conf/nacos-mysql.sql这个文件最下边两行有
| 序号 | 解决的问题 | 网址 |
|---|---|---|
| 1 | Unable to start web server,Unable to start embedded Tomcat | https://blog.csdn.net/m0_49501947/article/details/108152856 |
| 2 | db.num is null,Unable to start embedded Tomcat | https://blog.csdn.net/lingyancangqiong/article/details/107823061 |
| 3 |
目前最新的版本是2.1.0,直接在父项目的pom中添加依赖,一劳永逸
com.alibaba.cloud spring-cloud-alibaba-dependencies 2.1.0.RELEASE pom import
本Moudle需要添加的依赖
3. 配置文件com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
server:
port: 9001
spring:
application:
name: nacos-paymnet-provider
cloud:
nacos:
discovery:
# 配置nacos地址
server-addr: localhost:8848
management:
endpoints:
web:
exposure:
include: '*'
4. 书写启动类
从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。
@EnableDiscoveryClient和@EnableEurekaClient共同点就是:都是能够让注册中心能够发现,扫描到改服务。
不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
package com.javacode.alibaba;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentApp9001 {
public static void main(String[] args) {
SpringApplication.run(PaymentApp9001.class, args);
}
}
IDEA复制实例
5. Nacos AP和CP 切换右键正在运行的项目,Copy Configuration ,name 改一下, VM options 写上 -DServer port = [新端口]
2. Nacos 做配置中心C: 数据一致性,所有节点在同一时间看到的数据是一样的
A: 高可用
P: 分区容错
一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring cloud 和Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务级别编缉或者存储配置信息,那么CP是必须,K8S服务和DNS服务则适用于CP模式。
CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。
1. 引入依赖最后总结的配置文件公式如下
${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
2. Group分组方案com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
在nacos配置列表中添加分组
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
#指定yaml格式的配置
file-extension: yaml
group: TEST_GROUP
namespace: xxx
#${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
3. Linux Nacos 集群
1.运行前的配置·
修改application.properties放开数据库配置
修改config。conf集群配置
使用hostname -i查看linux机器的ip地址,j建议不要使用localhost或者127.0.0.1
192.168.0.1:8847 192.168.0.1:8848 192.168.0.1:8849
修改startup.sh
找到文件的第59行,或者搜索case $opt 在?)前添加以下内容
while getopts ":m:f:s:c:p:po:" opt #需要在最后添加上自己写的
po)
PORT=$OPTARG;;
# 倒数第二行
nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT}
启动
./startup.sh -po 8847 ./startup.sh -po 8848 ./startup.sh -po 8849 #查看实例数 ps -ef|grep nacos|grep -v grep|wc -l
- 最后,nacos默认分配的内存是1G,建议多给点不然很卡
可以用来替换hystrix
${JAVA_OPT}
- 启动
./startup.sh -po 8847 ./startup.sh -po 8848 ./startup.sh -po 8849 #查看实例数 ps -ef|grep nacos|grep -v grep|wc -l
- 最后,nacos默认分配的内存是1G,建议多给点不然很卡
可以用来替换hystrix下载地址



