1、背景分析
在微服务中,首先需要面对的问题就是如何查找服务,如何在不同的服务之间进行通信?如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带,由此注册中心诞生(例如淘宝网卖家提供服务,买家调用服务)。
市面上常用注册中心有Zookeeper,Eureka,Nacos,Consul,那他们分别都有什么特点,我们如何进行选型呢?
从社区活跃度上分析,consul和新晋的nacos的社区活跃度是比较高的,nacos可以同时支持AP和CP;consul则结合了zookeeper和nacos的诸多优点,还天然
支持多数据中心,而zookeeper则又可以唯一感知到服务状态的实时变化;Eureka的自我保护机制使得它即使只剩下一台服务,也不影响正常运行,具有高可用性,那么选择的时候,究竟应该如何选择呢?需要结合业务场景来进行选择。比如说,对于金融类的业务场景,对于一致性要求更高,那么就会排除掉Eureka,然后根据易用性、性价比等其他方面再进行后续的选择;对于高可用比较注重的项目,如电商类项目,则可以选择Eurek或者Nacos,但再比较其他方面,Nacos不仅可以做注册中心,还可以作为架构中的配置中心,并且社区活跃度比较高,功能也日渐在完善,使用的人越来越多,因此综合来讲,就选择了Nacos。
2、Nacos简介
Nacos(DynamicNaming and Configuration Service)是一个应用于服务注册与发现、配置管理的平台。它孵化于阿里巴巴,成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。其基本架构如图所示:
其中:
- Provider APP为服务提供方,是指提供可复用和可调用服务的应用方。
- Consumer App 为服务消费方,是指会发起对某个服务调用的应用方。
- Name Server 实现namespace到clusterid路由,用户与nacos物理环境映射。
- Open API 暴露标准Rest风格HTTP接口,简单易用,方便多语言集成。
- Console 易用控制台,做服务管理、配置管理等操作。
- Config Service 负责系统的所有配置信息管理。
- Name Service提供分布式系统中所有对象的映射管理服务。
Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构的服务基础设施。
我们在后面微服务架构设计中,将使用Nacos作为微服务架构中的注册中心以及配置中心(spring cloud config)来使用。Nacos官网地址如下:
https://nacos.io/zh-cn/docs/quick-start.html
3、构建Nacos服务
3.1、下载与安装
第一步:Nacos下载,可在浏览器直接输入如下地址:
https://github.com/alibaba/nacos/releases
第二步:选择对应版本,直接下载,如图所示:
第三步:解压Nacos(最好不要解压到中文目录下),其目录结构如下:
3.2、初始化配置
第一步:找到/conf/nacos-mysql.sql文件里的sql脚本,然后登陆mysql,然后基于脚本文件中的描述创建数据库,并执行脚本文件,脚本执行成功会创建一些表,如图所示:
第二步:打开/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码:
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
3.3、服务启动与访问
第一步:启动Nacos服务。
Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
Windows启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
第二步:访问Nacos服务。
打开浏览器,输入http://localhost:8848/nacos地址,出现如下登陆页面: