其他分享
首页 > 其他分享> > SpringCloud 服务治理:Nacos

SpringCloud 服务治理:Nacos

作者:互联网

目录


认识 Nacos

Nacos 是阿里巴巴的产品,现在是 SpringCloud 中的一个组件,相比 Eureka 功能更加丰富,在国内受欢迎程度较高。

image


Nacos 安装

Windows 安装

1)下载解压包

在 Nacos 的 GitHub 页面,提供有下载链接,可以下载编译好的 Nacos 服务端或者源代码:

image

2)解压

3)端口配置

image

4)启动

进入 bin 目录,以单机模式启动:startup.cmd -m standalone

image

5)访问 nacos 控制台

在浏览器访问 http://127.0.0.1:8848/nacos ,使用默认的账号和密码(都是 nacos)进行登录。

image


Linux 安装

Linux 或者 Mac 安装方式与 Windows 类似。

注意 Nacos 依赖于 JDK 运行,所以 Linux 上也需要先安装 JDK。

启动命令:sh startup.sh -m standalone


Nacos 入门案例

工程依赖:

<dependencyManagement>
    <dependencies>
        <!-- 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>
    </dependencies>
</dependencyManagement>
<!-- nacos 客户端依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置 nacos 注册中心地址

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

运行

image


Nacos 服务分级存储模型

Nacos服务分级存储模型:

image


集群配置

服务跨集群调用问题:

image

服务集群属性配置:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848  # nacos 服务端地址
        discovery:
          cluster-name: HZ  # 配置集群名称,也就是机房位置(例如:HZ,杭州)

image


集群负载均衡策略

实现步骤:

1)修改 user-service(服务调用方)集群属性配置,达到以下的效果:

image

2)修改 order-service(服务提供方)中的 application.yml,设置集群为 HZ:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848  # nacos 服务端地址
        discovery:
          cluster-name: HZ  # 配置集群名称,也就是机房位置(HZ,杭州)

3)在 order-service 中设置负载均衡的 IRule 为 NacosRule,这个规则优先会寻找与自己同集群的服务:

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡规则

4)运行效果:


加权负载均衡

实际部署中会出现这样的场景:服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,而我们希望性能好的机器承担更多的用户请求。

为此,Nacos 提供了权重配置来控制访问频率:权重越大则访问频率越高

实现步骤

  1. 在 Nacos 控制台可以设置实例的权重值,首先选中实例后面的编辑按钮:
    image

  2. 将权重设置为 0.1,测试可以发现 8081 被访问到的频率大大降低:
    image


环境隔离:namespace

Nacos 中服务存储和数据存储的最外层都是一个名为 namespace 的东西,用来做最外层隔离。

image

1)创建 namespace:

2)修改服务的 namespace:

spring:
datasource:
  url: jdbc:mysql://localhost:3306/heima?useSSL=false
  username: root
  password: 123
  driver-class-name: com.mysql.jdbc.Driver
cloud:
  nacos:
    server-addr: localhost:8848
    discovery:
      cluster-name: SH  # 上海
      namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9  # 命名空间,填ID

Nacos 服务治理原理

image


临时实例和非临时实例

服务注册到 Nacos 时,可以选择注册为临时或非临时实例(通过下面的配置来设置):

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false  # 设置为非临时实例

临时实例宕机时,会从 nacos 的服务列表中剔除,而非临时实例则不会。


Nacos VS Eureka

Nacos 与 Eureka 的共同点

Nacos 与 Eureka 的区别

标签:服务,SpringCloud,nacos,Nacos,实例,集群,治理,cloud
来源: https://www.cnblogs.com/juno3550/p/16345402.html