前言
Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,目前来看还是大多数公司使用Nacos多于Eureka。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
1、Nacos 介绍
阿里巴巴的技术一般在国内公司都推崇,注册中心也不例外,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
官网: https://nacos.io/zh-cn/docs/what-is-nacos.html
2、Nacos 特性
- 服务发现和服务健康监测
Nacos使服务更容易注册,并通过DNS或者http接口发现其他服务,Nacos还提供服务的实时健康检查,防止向不健康的主机或者服务实例发送请求。 - 动态配置服务
动态配置服务允许在所有的环境中以集中和动态的方式管理所有的服务配置。Nacos消除了在更新配置使重新部署应用程序,使配置的更改更加高效和灵活。Nacos 以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 - 动态 DNS 服务
Nacos 提供基于DNS协议的服务发现能力,支持将注册在Nacos服务以域名的方式暴露端点,让第三方应用方便查阅和发现。Nacos 更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。 - 服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
3、服务注册
1、引入依赖
在父工程的pom文件中引入SpringCloudAlibaba的依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope></dependency>
然后在服务的pom文件中引入nacos-discovery依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
2、配置Nacos地址
在user-service和order-service的application.yml中添加nacos地址。
spring: cloud: nacos: server-addr: localhost:8848#Nacos的地址
3、启动Nacos和项目
1、cmd进入Nacos文件夹的bin目录,输入下面命令,启动Nacos。
startup.cmd-mstandalone
2、启动项目的user-service、order-service服务
3、登录nacos管理页面,即可以看到微服务信息。
4、配置集群
一个服务可以有多个实例,例如:
- 127.0.0.1:8081
- 127.0.0.1:8082
- 127.0.0.1:8083
假如这些实例分布于全国各地的不同位置,Nacos就将同一位置内的实例 划分为一个集群 。
微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。
1、修改user-service的application.yml文件,添加集群配置。
spring: cloud: nacos: server-addr: localhost:8848discovery: cluster-name: ZhengZhou#集群名称
2、复制一个user-service启动配置,添加属性。
-Dserver.port=8082-Dspring.cloud.nacos.discovery.cluster-name=ZhengZhou
3、右键选择Copy,复制命令输入。
4、 再次查看nacos控制台,集群数目,实例数目都变成了2。
5、点击详情,可以编辑服务配置信息,配置服务权重等等。
5、环境隔离
Nacos提供了namespace来实现环境隔离功能。
- nacos中可以有多个namespace。
- namespace下可以有group、service等。
- 不同namespace之间相互隔离。
1、创建namespace,默认情况下,所有服务都在同一个namespace,名为public。
2、我们可以点击页面新增按钮,添加一个namespace,然后填写表单。
3、微服务配置namespace
新建的namespace,会生成一个命名空间ID,用来配置微服务。
例如,修改order-service的application.yml文件,如图所示。
namespace: 58025a25-2cd9-43d8-a8a3-db24c4f63429#命名空间,填ID,自己生成的
6、Nacos与Eureka的区别
Nacos的服务实例分为两种类型:
- 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
- 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
- Nacos与eureka的共同点
- 都支持服务注册和服务拉取
- 都支持服务提供者心跳方式做健康检测
- Nacos与Eureka的区别
- Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
- 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
- Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
- Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
总结
以上就是Nacos的简单使用,最后送大家一句话:“靜若癱瘓,動若癲癇“。