Nacos介绍

帮助文档
官方:一个更易于构建云原生应用的动态服务发现、服务配置和服务管理的平台
Nacos的关键性包括:

  • 服务发现和服务健康检测
  • 动态配置服务
  • 动态DNS服务
  • 服务及其元数据管理

Nacos注册中心演变过程

管理所有的微服务,解决微服务之间调用关系错综复杂,难以维护的问题
Nacos - 图1

Nacos注册中心核心功能

  • 服务注册
  • 服务心跳
  • 服务同步
  • 服务发现
  • 服务健康检查

Nacos - 图2

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

  1. cd /nacos/nacos
  2. mvn -Prelease-nacos clean install -U
  3. 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搭建

  1. 引入依赖,在父pom中支持Spring Cloud&Spring cloud alibaba,引入依赖```xml
    1. <dependency>
    2. <groupId>org.springframework.cloud</groupId>
    3. <artifactId>spring-cloud-dependencies</artifactId>
    4. <version>Hoxton.SR9</version>
    5. <type>pom</type>
    6. <scope>import</scope>
    7. </dependency>
    ```
  1. 子项目的pom文件中添加```xml
    1. <groupId>com.alibaba.cloud</groupId>
    2. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    3. <!--<version></version>-->
    ```
  1. 项目的配置文件中配置以下内容```yml

    给对应的服务起一个名称(nacos会将改名称当作服务名称)

    spring: application: name: order-service cloud: nacos: server-addr: 111.229.181.158:8848 #配置nacos的服务地址 discovery:
    1. username: nacos #用户名
    2. password: nacos #密码
    3. namespace: public # 命名空间
    ```

服务启动后注册列表会有对应的服务
Nacos - 图3

Nacos管理界面详细介绍

雪崩保护:
保护阈值:设置0-1之间的值0.5
临时实例:spring.cloud.nacos.discovery.ephemeral = false此时服务宕机了也不会从列表中删除
当我们的健康实例数/总实例数如果小于保护阈值,他依然会把…
权重
结合负载均衡的策略进行分配

Nacos注册中心配置详解

关于Nacos Start更多配置项信息

配置项 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

  1. 单机搭建伪集群,复制nacos安装包,修改为8849、8850、8851
    Nacos - 图4

  2. 以nacos8849为例进行配置
    Nacos - 图5

  3. 修改conf\application.properties的配置,使用外置数据源,mysql要使用5.7以上的版本

    1. spring.datasource.platform=mysql
    2. #连接数量
    3. db.num=1
    4. #数据库地址
    5. db.url.0=
    6. #用户名
    7. db.user.0=
    8. #密码
    9. db.password.0=
  1. conf/cluster.conf.example改为cluster.conf,添加节点配置,改为集群中的每个节点的ip和端口
    这里不建议使用127.0.0.1进行配置,否则会在配置文件中多出一条对应实际IP和端口的数据
    1. #example将集群中的所有都配置上
    2. 172.17.0.2:8849
    3. 172.17.0.2:8850
    4. 172.17.0.2:8851
  1. 创建mysql数据库,sql文件位于conf/nacos-mysql.sql

  2. 如果出现内存不足,修改启动脚本bin/startup.sh的jvm参数

    1. JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"


Nacos - 图6

  1. 分别启动 8849、8850、8851

  2. 配置nginx

    1. upstream nacoscluster {
    2. server 127.0.0.1:8849;
    3. server 127.0.0.1:8850;
    4. server 127.0.0.1:8851;
    5. }
    6. server {
    7. listen 8847;
    8. server_name localhost;
    9. location /nacos/ {
    10. proxy_pass http://nacoscluster/nacos/;
    11. }
    12. }

其他

链接 密码: 6q3d