Nacos简介
Nacos:( Dynamic Naming and Configuration Service)是阿里巴巴旗下的,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。帮助开发者更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
什么是 Nacos什么是 Nacoshttps://nacos.io/zh-cn/docs/what-is-nacos.html
Nacos安装启动
下载地址:Tags · alibaba/nacos · GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Tags · alibaba/nacoshttps://github.com/alibaba/nacos/tagswindow下载.zip后缀的文件,linux下载tar.gz,选择一个稳定版本即可,我这里使用1.4
这里为了方便一点,我们使用window下载安装
1,解压安装包到一个没有中文的目录
2,进到bin目录中,在cmd命令行输入 ,启动nacos
startup.cmd -m standalone
3,在浏览器输入 http://localhost:8848/nacos/index.html进入nacos,默认用户名和密码都是nacos
另外nacos默认端口是8848,如果你想更改端口可一个在conf目录中的application.properties中修改server.port=****即可
成功之后显示如下:
Nacos快速入门
之前已经使用eureka作为注册中心,现在我们使用nacos替换eureka,服务调用的代码是不需要改变的,我们只需要在父工程中添加spring-cloud-alibaba的管理依赖用来管理nacos的版本,之后将eureka的依赖换成nacos并且更改配置文件中的注册中的地址为nacos的地址即可
1,在父工程中引入spring-cloud-alibaba的管理依赖
<!--spring-cloud-alibaba的管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2,在其余两个服务(userservice和orderservice)中注册掉eureka依赖引入nacos客户端依赖
<!--引入nacos客户端依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3,在配置文件中添加nacos配置
spring:
application:
name: userservice
cloud:
nacos:
server-addr: localhost:8848
4,重启服务即可
成功之后nacos服务列表如下:
5,这时候我们测试查询数据吗,之前设置的负载均衡策略等等均可正常使用
Nacos的服务分级存储
1、服务分级模型介绍
服务分级模型是一种将服务层次化组织的架构设计,通常用于大型分布式系统或微服务架构中。这种模型的目标是通过将服务划分为不同的层级,实现更灵 活、可维护和可扩展的系统架构。
服务分级模型包括以下几个层级:
特性 | 特性描述 |
全局级别 | 在这个层级,通常存储全局配置和共享信息。全局级别的服务对整个系统可见,负责处理全局性的任务和配置,例如全局配置管理、认证、授权等。 |
集群级别 | 集群级别的服务组织在物理或逻辑上相邻的节点上,负责处理集群内的任务和协调。这一层级的服务通常处理一组相关联的节点,提供集群级别的服务如负载均衡、故障转移、数据同步等。 |
服务级别 | 在服务级别,服务被组织成逻辑单元,每个服务负责实现特定的业务功能。服务级别的服务通常是整个系统的核心,提供具体的业务逻辑,例如用户管理、订单处理等。 |
实例级别 | 实例级别是最底层的层级,代表着服务的具体实例。在微服务架构中,服务可能会有多个实例运行在不同的节点上,实现负载均衡和高可用性。 |
通过将服务划分为这些层级,服务分级模型使得系统的不同部分能够独立演化、扩展和维护。这种分级结构使得系统更具弹性,能够更好地适应不同的需求和变化。
2,如何设置实例的集群属性
修改application.yml文件配置集群名即可如下
spring:
application:
name: orderservice #指定Eureka中这个项目的服务名
cloud:
nacos:
server-addr: localhost:8848 #nacos客户端地址
discovery:
cluster-name: HZ #配置该实例所属杭州集群就,简写
配置完成后可以看到,该实例所属集群为杭州
更加详细了解Nacos服务分级存储模型⬇️⬇️⬇️⬇️⬇️
NacosRule负载均衡策略
1,Nacos默认发起请求调用的时候会优先同一集群的服务实例
2,如果本地集群找不到提供者,才会去其他集群寻找,并且会发出警告
3,如何配置NacosRule
在application.yml文件中配置即可
userservice: #指定服务名
ribbon:
NFLoadBalancerRuleclassName: com.alibaba.cloud.pacos.ribbon.NacosRule #nacos负载均衡规则
# NFLoadBalancerRuleclassName: com.netflix.loadbalancer.RandomRule # eureka负载均衡规则轮询
Nacos服务实例的权重设置
可以根据调整权重(0~1)来改变请求的比重,并且它支持权重为0,这样我们就可以,在不重启的情况下,惊醒服务的调整。
Eureka和Nacos对比