2使用新一代注册中心

学习目标

  • nacos的基本概念
  • nacos的架构
  • nacos注册中心的功能特性

目录

  • nacos架构
  • nacos注册中心功能特性

nacos架构

注册中心回顾

注册中心基本模型
三大角色:服务提供者、服务消费者、注册中心
两大操作:注册、订阅
关键技术:(变更)通知
变更通知机制
服务轮训机制:定时器拉取
服务监听机制:被动监听(通过通知、回调实现信息更新)
注册中心和服务路由
客户端通过注册中心获取服务端实例,并基于负载均衡算法实现服务路由

nacos概述

优点/特性
易用、稳定、实时(信息变更)、规模(大规模应用场景)
简单的数据模型和标准API
高可用99.9%

架构模型
分层模型

部署和运行

  • 单机部署
  • 集群部署
  1. 下载部署包

  2. 集群配置
    Cluster.conf 配置文件中添加如下配置

    1
    2
    3
    127.0.0.1:8848
    127.0.0.1:8850
    127.0.0.1:8852
  3. 实例端口配置
    application.properties 配置端口 server.port= 8848
    application.properties 配置端口 server.port= 8850
    application.properties 配置端口 server.port= 8852

  4. nacos数据库
    初始化nacos数据库(\conf\mysql-schema.sql)

  5. 修改配置application.properties配置

1
2
3
4
5
6
7
spring.datasource.platform=mysql
spring.sql.init.platform=mysql
db.num=1
### Connect URL of DB:
db.url.0=myslurl
db.user.0=root
db.password.0=root

curl -X POST ‘http://localhost:8854/nacos/v1/auth/users/admin‘ -d ‘password=admin’
curl -X PUT http://localhost:8854/nacos/v1/auth/users?username=nacos&newPassword=nacos
5. 启动
管理员权限
启动 \bin\ 目录下启动: startup.cmd -m cluster(m:启动模式,默认集群)
单机启动 startup.cmd -m standalone
路径不可有中文、数字、空格等(不可再Program File(86)下)
6. 易错点

  • Nacos 启动报错[db-load-error]load jdbc.properties error
    原因application.properties中db.num=1没有指定

  • Address already in use: bind
    原因:因为Nacos 2.0以后需要使用多个端口,会占用两个连续端口:${server.port}和 ${server.port}+1,所以端口设置上不要使用连续端口

  • 有代理模式(推荐方案)
    server-addr:www.nacos-server.com
    无代理模式,修改ip端口需修改配置
    server-addr:127.0.0.1:8848,127.0.0.1:8850,127.0.0.1:8852

nacos注册中心功能特性

分级模型

三级模型
服务->集群->实例
集群中有多个实例

集群

默认集群 DEFAULT

配置集群名称
cluster-name:hangzhou

集群特性

  • 通过负载均衡算法实现同集群服务
    优先调用,减少网络开销(集群同网段内实例优先)
  • 通过元数据实现定制化控制
    根据配置数据定制化处理

nacos资源隔离

分级合理管理资源、不同namespace不可直接访问,不同group之间不可直接访问

命名空间

默认为空
公共命名空间:public

隔离方案

  • 逻辑隔离,命名空间机制
  • 物理隔离,不同的nacos环境地址

分组

分组默认:DEFAULT GROUP
应用:同一个环境内,不同业务场景可以指定不同的分组
例如支付分组、物流分组
设置分组group:MY GROUP

完整分级模型

服务路由

保护阈值

Nacos控制台可以设置实例的权重值,0~1之间,服务级别配置
比例值:当前服务健康实例数/当前服务总实例数
作用:当比例值<保护阈值时,Nacos会把该服务所有的实例信息(健康+不健康)全部提供给消费者,尽管会有失败响应,但能避免雪崩效应

权重

Nacos控制台可以设置实例的权重值,0~1之间,实例级别配置
同集群内的多个实例,权重越高被访问的频率越高,权重设置为0则完全不会被访问
作用:确保性能好的机器承担更多的用户请求

就近访问

优先选择同集群服务实例列表,本地集群找不到服务实例才会去其它集群寻找,并且会报警告
确定了可用实例列表后,再采用随机负载均衡挑选实例
使用NacosRule进行配置:com.alibaba.cloud.nacos.ribbon.NacosRule

示例

配置

思考题

nacos整体架构可以分几个级别?为什么这样分级?