Nacos服务注册&配置中心

Nacos服务注册&配置中心

一、简介

1.1、Nacos

前四个字母分别为NamingConfiguration的前两个字母,最后的s为Service

1.2、是什么

一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心。
Nacos: Dynamic Naming and Configuration Service
Nacos 就是注册中心+配置中心的组合。等价于,Nacos = Eureka+Config+Bus

1.3、作用

替代 Eureka 做服务注册中心。
代替 COnfig 做服务配置中心。

1.4、下载

https://github.com/alibaba/Nacos   

官方文档:

https://nacos.io/zh-cn/index.html   
https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud alibaba_nacos_discovery

1.5、各注册中心比较

二、安装运行Nacos

本地 Java8 + Maven 环境已经OK 。
先从官网下载 Nacos :

https://github.com/alibaba/nacos/releases/tag/1.1.4    

解压安装包,直接运行bin目录下的 startup.cmd
默认账号密码都是 nacos
命令运行成功后直接访问 http://localhost:8848/nacos

三、Nacos作为服务注册中心

全景图:

Nacos和CAP:

四、Nacos作为服务配置中心

Nacos中的匹配规则见:
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

4.1、Nacos作为配置中心-分类配置

多环境多项目管理

问题1:
实际开发中,通常一个系统会准备dev开发环境test测试环境prod生产环境。如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
问题2:
一个大型分布式微服务系统会有很多微服务子项目,
每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境..…那怎么对这些微服务配置进行管理呢?

配置管理:

命名空间:

4.2、Namespace + Group + DataID三者关系

类似 Java 里面的 package 名和类名最外层的 namespace 是可以用于区分部署环境的, GroupDatalD 逻辑上区分两个目标对象。

默认情况:
Namespace=public, Group=DEFAULT_GROUP,默认Cluster是DEFAULT

Nacos 默认的命名空间是 public, Namespace 主要用来实现隔离。
比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个 Namespace,不同的 Namespace 之间是隔离的。
Group 默认是 DEFAULT_GROUP, Group 可以把不同的微服务划分到同一个分组里面去。
Service 就是微服务,一个 Service 可以包含多个 Cluster (集群) ,Nacos 默认 Cluster 是 DEFAULT, Cluster 是对指定微服务的一个虚拟划分。比方说为了容灾,将 Service 微服务分别部署在了杭州机房和广州机房。
这时就可以给杭州机房的 Service 微服务起一个集群名称(HZ)给广州机房的 Service 微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
最后是 Instance,就是微服务的实例。

4.2.1、DataID方案

4.2.2、Group方案

4.2.3、Namespace方案


五、Nacos集群和持久化

官网架构图:

真实情况:

默认 Nacos 使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的 Nacos 节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 的存储。
Nacos支持三种部署模式

  • 单机模式-用于测试和单机试用。
  • 集群模式-用于生产环境,确保高可用。
  • 多集群模式-用于多数据中心场景。

单机模式支持mysql
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql 数据源能力,具体的操作步骤:
1、安装数据库,版本要求:5.6.5+
2、初始化 mysql 数据库,数据库初始化文件:nacos-mysql.sql
3、修改conf/application.properties文件,增加支持 mysql 数据源配置(目前只支持mysql) ,添加 mysql 数据源的url、用户名和密码。

spring.datasource.platform-mysql
db.num-1
db.url.0-jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding-utf8&connectTimeout-100edb.user=nacos_devtestdb.password=youdontknow

再以单机模式启动 nacos,nacos 所有写嵌入式数据库的数据都写到了 mysql。

高可用小总结:

评论

暂无

添加新评论