购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 构建Nacos服务

Nacos是Dynamic Naming and Configuration Service的首字母组合而成的,致力于帮助开发人员发现、配置和管理微服务。Nacos提供了一组简单易用的功能集,帮助你快速实现动态服务发现、服务配置、服务元数据及流量管理。可以说,Nacos是Spring Cloud Alibaba中最重要的技术组件。本节将帮助你了解Nacos的整体架构。更为重要的,你将基于Nacos掌握构建高可用注册中心的实现架构和操作方法。

2.2.1 Nacos整体架构

Nacos是构建以“服务”为中心的现代应用架构的基础设施组件,在业界应用非常广泛,已经构成了一个生态系统。图2-6展示的就是Nacos的各个应用场景以及与其他主流开源框架的整合路径。

图2-6 Nacos的各个应用场景以及与其他主流开源框架的整合路径

在图2-6中,我们看到Nacos无缝支持一些主流的开源框架,例如:Spring Cloud、Apache Dubbo和Dubbo Mesh、Kubernetes。

Nacos之所以能够构建如此强大的生态系统,关键是因为它的功能特性。经过阿里巴巴多年的探索和沉淀,以及“双11”等大流量场景的真实考验,Nacos积累了丰富而实用的功能特性,列举如下。

❑ 简单数据模型和标准API。

❑ 数据变更毫秒级推送生效。

❑ 十万级服务/配置。

❑ 99.9%高可用。

基于上述功能,使用Nacos为开发人员提供了简化服务治理和配置管理的解决方案。而在这个解决方案背后,是Nacos对于“服务”这一概念的高度抽象以及对于“服务管理”这一过程的架构设计。图2-7展示了Nacos的整体架构。

图2-7 Nacos的整体架构

基于架构分层的思想和实践,我们不难看出Nacos采用了如下四层架构。

❑ 用户层:解决用户使用的易用性问题。

❑ 业务层:解决服务发现和配置管理的功能问题。

❑ 内核层:解决分布式系统一致性、存储、高可用等核心问题。

❑ 插件层:解决框架扩展性问题。

其中,有一个概念我们需要重视,那就是服务元数据(Service Metadata)。所谓服务元数据,是指服务端点、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。这些元数据在实现定制化路由和负载均衡等领域具有广泛的应用。随着SpringOrder案例系统的不断演进,我们也会基于服务元数据实现一系列针对服务管理上的扩展功能。

2.2.2 构建Nacos高可用架构

Nacos是一个独立的服务端组件,想要使用Nacos首先得搭建它的运行环境。Nacos为开发人员提供了两种部署模式:一种是单机模式,一种是集群模式。

1.单机模式

在单机模式下启动Nacos的方法很简单,我们只需要在startup启动命令之后添加-m standalone参数即可。当Nacos成功启动之后,我们可以通过浏览器来查看Nacos的控制台,如图2-8所示。

图2-8 Nacos的控制台

Nacos单机模式比较适合开发、测试环境的使用需求。而如果是生产环境,那就需要采用集群模式构建高可用的服务端架构。集群模式也是Nacos默认的运行模式,搭建过程比较复杂,接下来我们对这一运行模式进行详细的展开。

2.集群模式

Nacos集群的搭建有一套固定的步骤,如图2-9所示。

(1)准备Nacos部署包

正如图2-9所示,我们首先需要从Nacos的github官网(https://github.com/alibaba/nacos/tags)上下载任一版本的Nacos部署包,并根据集群大小准备若干个部署包副本。假设我们需要构建具有三个实例的Nacos集群,那么我们就需要准备三个Nacos部署包副本。

图2-9 Nacos集群搭建步骤

(2)调整集群配置文件

当我们打开Nacos部署包并来到它的config文件夹,可以看到如图2-10所示的文件列表,其中用红框标识的就是我们需要操作的配置文件和SQL(结构化查询语言)脚本。

我们需要打开图2-10所示的cluster.conf文件,添加集群实例的IP和端口地址。如果你使用本地环境作为Nacos服务器,那么可以采用如代码清单2-1所示的配置效果。

图2-10 Nacos部署所需相关文件

代码清单2-1 Nacos集群IP和端口配置代码

你可以根据需要将代码清单2-1中的IP替换成你的IP地址,然后确保所设置的端口没有被其他应用占用。当我们将上述配置同步更新到Nacos所有部署包副本中的cluster.conf文件,集群配置文件的调整就完成了。

(3)设置Nacos服务端口

设置完集群配置文件之后,下一步就是设置Nacos服务的启动端口。Nacos服务本质上也是一个Spring Boot应用程序,所以我们只需要在图2-10所示的application.properties配置文件中设置如代码清单2-2所示的配置项即可。

代码清单2-2 Nacos服务端口配置代码

这里有一个注意点。因为Nacos 2.0以后每个服务实例的启动会占用两个连续端口${server.port} 和 ${server.port}+1,所以端口设置上不要使用连续端口,正如我们在上一步所设置的那样。

(4)初始化数据库模式

Nacos的集群化运行需要将运行时数据保存在关系型数据库中,因此,我们需要创建一个新的数据库并使用图2-10所示的nacos-mysql.sql脚本对其进行初始化。

(5)指定数据库配置

在完成数据库初始化之后,不要忘记在每个Nacos部署副本的application.properties配置文件中指定数据库的连接地址。

(6)启动集群并验证

使用-m cluster参数来执行所有Nacos部署副本中的startup命令。当所有Nacos服务实例都启动成功之后,我们访问这些Nacos实例的控制台就可以看到如图2-11所示的集群运行效果,代表Nacos集群搭建成功。

图2-11 Nacos集群运行效果 LOtHbCLW0XtO4vc1jRT/MpiUTbfJD0hlvqn8bnVX5nT46g4iSmWeQmBf6bP5SPqw

点击中间区域
呼出菜单
上一章
目录
下一章
×