Nacos介绍
帮助文档
官方:一个更易于构建云原生应用的动态服务发现、服务配置和服务管理的平台
Nacos的关键性包括:
- 服务发现和服务健康检测
- 动态配置服务
- 动态DNS服务
- 服务及其元数据管理
Nacos注册中心演变过程
管理所有的微服务,解决微服务之间调用关系错综复杂,难以维护的问题

Nacos注册中心核心功能
- 服务注册
- 服务心跳
- 服务同步
- 服务发现
- 服务健康检查

Nacos主流的注册中心区别
| Nacos | Eureka | Consul | CoreDNS | Zookeeper | |
|---|---|---|---|---|---|
| 一致性 | CP+AP | AP | CP | - | CP |
| 健康检查 | TCP/HTTP/MYSQL/ClientBeat | ClientBeat | TCP/HTTP/gRPC/Cmd | - | Keep Alive |
| 负载均衡策略 | 权重/metadata/Selector | Ribbon | Fabio | RoundRobin | - |
| 雪崩保护 | 有 | 有 | 无 | 无 | 无 |
| 自动注销实例 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| 访问协议 | HTTP/DNS | HTTP | HTTP/DNS | DNS | TCP |
| 监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| 多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 跨注册中心 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
| SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| Dubbo集成 | 支持 | 不支持 | 支持 | 不支持 | 支持 |
Nacos Server部署
下载源码编译
源码下载地址:https://github.com/alibaba/Nacos/releases
cd /nacos/nacosmvn -Prelease-nacos clean install -Ucd /nacos/nacos/distribution/target/
单机模式
官方文档:https://nacos.io/zh-cn/docs/deployment.html
解压,进入nacos目录
单机启动nacos,执行命令 bin/startup.sh -m standalone
访问地址
http://localhost:8848/nacos/index.html
用户名:nacos
密码:nacos
Nacos client搭建
- 引入依赖,在父pom中支持Spring Cloud&Spring cloud alibaba,引入依赖```xml
```<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR9</version><type>pom</type><scope>import</scope></dependency>
- 子项目的pom文件中添加```xml
```<groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><!--<version></version>-->
- 项目的配置文件中配置以下内容```yml
给对应的服务起一个名称(nacos会将改名称当作服务名称)
spring: application: name: order-service cloud: nacos: server-addr: 111.229.181.158:8848 #配置nacos的服务地址 discovery:
```username: nacos #用户名password: nacos #密码namespace: public # 命名空间
服务启动后注册列表会有对应的服务

Nacos管理界面详细介绍
雪崩保护:
保护阈值:设置0-1之间的值0.5
临时实例:spring.cloud.nacos.discovery.ephemeral = false此时服务宕机了也不会从列表中删除
当我们的健康实例数/总实例数如果小于保护阈值,他依然会把…
权重
结合负载均衡的策略进行分配
Nacos注册中心配置详解
| 配置项 | Key | 默认值 | 说明 |
|---|---|---|---|
| 服务端地址 | spring.cloud.nacos.discovery.server-addr | 无 | Nacos Server 启动监听的ip地址和端口 |
| 服务名 | spring.cloud.nacos.discovery.service | spring.application.name} | 给当前的服务命名 |
| 服务分组 | spring.cloud.nacos.discovery.group | DEFAULT_GROUP | 设置服务所处的分组 |
| 权重 | spring.cloud.nacos.discovery.weight | 1 | 取值范围1到100,数值越大,权重越大 |
| 网卡名 | spring.cloud.nacos.discovery.network-interface | 无 | 当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址 |
| 注册的IP地址 | spring.cloud.nacos.discovery.ip | 无 | 优先级最高 |
| 注册的端口 | spring.cloud.nacos.discovery.port | -1 | 默认情况下不用配置,会自动探测 |
| 命名空间 | spring.cloud.nacos.discovery.namespace | 无 | 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 |
| AccessKey | spring.cloud.nacos.discovery.access-key | 无 | 当要上阿里云时,阿里云上面的一个云账号名 |
| Metadata | spring.cloud.nacos.discovery.metadata | 无 | 使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息 |
| 日志文件名 | spring.cloud.nacos.discovery.log-name | 无 | |
| 集群 | spring.cloud.nacos.discovery.cluster-name | DEFAULT | 配置成Nacos集群名称 |
| 接入点 | spring.cloud.nacos.discovery.enpoint | UTF-8 | 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址 |
| 是否集成Ribbon | ribbon.nacos.enabled | true | 一般都设置成true即可 |
| 是否开启NacosWatch | spring.cloud.nacos.discovery.watch.enabled | true | 可以设置成false来关闭watch |
Nacos集群部署
官方文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
单机搭建伪集群,复制nacos安装包,修改为8849、8850、8851

以nacos8849为例进行配置

修改conf\application.properties的配置,使用外置数据源,mysql要使用5.7以上的版本
spring.datasource.platform=mysql#连接数量db.num=1#数据库地址db.url.0=#用户名db.user.0=#密码db.password.0=
- 将
conf/cluster.conf.example改为cluster.conf,添加节点配置,改为集群中的每个节点的ip和端口
这里不建议使用127.0.0.1进行配置,否则会在配置文件中多出一条对应实际IP和端口的数据#example将集群中的所有都配置上172.17.0.2:8849172.17.0.2:8850172.17.0.2:8851
创建mysql数据库,sql文件位于
conf/nacos-mysql.sql如果出现内存不足,修改启动脚本
bin/startup.sh的jvm参数JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

分别启动 8849、8850、8851
配置nginx
upstream nacoscluster {server 127.0.0.1:8849;server 127.0.0.1:8850;server 127.0.0.1:8851;}server {listen 8847;server_name localhost;location /nacos/ {proxy_pass http://nacoscluster/nacos/;}}
其他
链接 密码: 6q3d
