Nacos
Nacos
注册中心对比
Nacos概念
Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。 Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos是构建以“服务”为中心的现代应用架构的服务基础设施。
Nacos特性
Nacos主要提供以下四大功能:
1、服务发现与服务健康检查
Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
2、动态配置管理
动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活。
3、动态DNS服务
Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以 域名的方式暴露端点,让三方应用方便的查阅及发现。
4、服务和元数据管理
Nacos能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周 期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
Nacos安装
下载压缩包解压缩安装即可
下载地址:https://github.com/alibaba/nacos/releases
浏览器访问:http://127.0.0.1:8848/nacos
默认账号密码:nacos
单机模式时nacos默认使用嵌入式数据库实现数据的存储,若想使用外部mysql存储nacos数据,需要进行以下步骤:
1、安装数据库,版本要求:5.6.5+ ,mysql 8以下
2、初始化mysql数据库,新建数据库nacos_config,数据库初始化文件所在位置,执行即可初始化:
{nacoshome}/conf/nacosmysql.sql
3、修改${nacoshome}/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3307/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=admins
Nacos命名空间
命名空间(Namespace)用于进行租户粒度的隔离,Namespace的常用场景之一是不同环境的隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 从一个租户(用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的Namespace,以此来实现多环境的隔离。例如,你可能有开发,测试和生产三个不同的环境,那么使用一套nacos集群可以分别建以下三个不同的Namespace。如下图所示:
从多个租户(用户)的角度来看,每个租户(用户)可能会有自己的Namespace,每个租户(用户)的配置数据以及注册的服务数据都会归属到自己的Namespace下,以此来实现多租户间的数据隔离。例如超级管理员分配了三个租户,分别为张三、李四和王五。分配好了之后,各租户用自己的账户名和密码登录后,创建自己的命名空间。如下图所示:
Nacos命名空间配置如下:
可根据环境设置不同的命名空间进行切换:
备注:Namespace为public是Nacos的一个保留空间,如果您需要创建自己的Namespace,不要和public重名,以一个实际业务场景有具体语义的名字来命名,以免带来字面上不容易区分自己是哪一个Namespace。在编写程序获取配置集时,指定的Namespace参数一定要填写命名空间ID,而不是名称。
Nacos数据模型
Nacos服务发现的数据模型如下:
服务:对外提供的软件功能,通过网络访问预定义的接口。
服务名:服务提供的标识,通过该标识可以唯一确定要访问的服务。
实例:提供一个或多个服务的具有可访问网络地址(IP:Port)的进程,启动一个服务,就产生了一个服务实例。
元信息:Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标 签(label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。
集群:服务实例的集合,服务实例组成一个默认集群,集群可以被进一步按需求划分,划分的单位可以是虚拟集群,相同集群下的实例才能相互感知。
通过数据模型可知: 应用通过Namespace、Service、Cluster(DEFAULT)的配置,描述了该服务向哪个环境(如开发环境dev)的哪个集群注册实例。例子如下:
spring:
application:
name: transaction‐service
cloud:
nacos:
discovery:
server‐addr: 127.0.0.1:7283 # 注册中心地址
namespace: a1f8e863‐3117‐48c4‐9dd3‐e9ddc2af90a8 # 开发环境
cluster‐name: DEFAULT # 默认集群,可不填写
备注:集群作为实例的隔离,相同集群的实例才能相互感知。Namespace、cluster-name若不填写都将采取默认值,Namespace的默认是public命名空间,cluster-name的默认值为DEFAULT集群。
Nacos配置中心
配置中心就是一种统一管理各种应用配置的基础服务组件,配置中心产品对比:
Nacos创建配置案例:
Java程序配置实时获取配置中心配置文件的内容:
Nacos配置管理模型:对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。 Namespace:代表不同环境,如开发、测试、生产环境。Group:代表某项目,如XX医疗项目、XX电商项目。DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件。
Nacos架构案例
优势分析:此架构同时提供RESTful和Dubbo接口服务,应用层对前端提供RESTful接口,RESTful是互联网通用的轻量级交互协议,方便前端接入系统;微服务层向应用层提供Dubbo接口,Dubbo接口基于RPC通信协议速度更快。本架构采用阿里开源的Nacos,集服务发现和配置中心于一身,支持RESTful及Dubbo服务的注册。