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/nacos
mvn -Prelease-nacos clean install -U
cd /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:8849
172.17.0.2:8850
172.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