(初学者)对于Nacos的学习——上

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

上一篇文章介绍到使用Ribbon服务来实现微服务的负载均衡,这篇文章来描述一下Nacos组件


提示:以下是本篇文章正文内容,下面案例可供参考

一、Nacos是什么?

 

Nacos是阿里巴巴为springcloud贡献的springcloud alibaba的一个小组件,主要负责服务注册与发现,分布式的配置。

二、Nacos如何下载

官网 https://nacos.io/

下文使用到的版本为1.4.1

三、Nacos的安装

Nacos默认的是集群打开,但是我们window系统目前是以单机模式启动,进入目录

 

输出cmd调用控制台输入startup -m standalone启动

接着点击

http://192.168.65.1:8848/nacos/index.html

默认账号和密码 nacos

登录成功即可打开成功

 

注意:启动不了看一下默认端口8848有无被占用,如被占用可以进到配置文件修改端口

 

 四、如何使用Nacos

 1:在父工程pom.xml中导入依赖包

 <!--nacos的管理依赖,也会管理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:在user-service和order-service这两个微服务的pom.xml中注释掉Eureka的依赖包且添加Nacos的依赖包
 

<!--eureka客户端-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
<!--        </dependency>-->
        <!-- nacos客户端依赖包 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

3:修改两个微服务的application.yml文件,注释Eureka的注册信息,填写Nacos的注册信息

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud-user?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: userservice  # 服务名称
# 以下是Nacos的注册信息
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url:  #  eureka的地址信息
#      defaultZone: http://127.0.0.1:10086/eureka

4:重新启动微服务,进入Nacos网站登录查看注册信息,注册成功

五、Nacos对微服务的管理 

Nacos对微服务的管理------服务多级存储模型

多级顾名思义有三级

一级:服务

二级:集群

三级:服务的实例

集群的设置

在我们微服务模块中的aplication.yml文件中的注册信息添加集群名字

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud-order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice  # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址
      discovery:
        cluster-name: GD #集群名字数据

为我们的user-service微服务的实例设置集群名称然后重启微服务(在大公司中通常一个微服务会有几个集群,每个集群分别放在不同的城市,下面以广东GD和上海SH为例)

环境隔离的理解

环境隔离中有命名空间这一概念

命名空间作用是可以为我们创建一个开发环境方便开发以及隔离其他微服务

命名空间是Nacos中的一个隔离空间(可以理解为一块储存区域)

里面包含着许多组,组里面有我们部署的user-service和order-service默认在Nacos中的一个叫public的默认命名空间

 

 

 

 每个命名空间都有自己的ID

这就是Nacos的多级储存模型所存放的方式

命名空间的使用

 1:在Nocaos中点击命名空间创建(我已创建一个名为dec的命名空间)

2:在微服务模块中的aplication.yml文件中设置微服务实例要注册的位置,填写命名空间的id

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud-order?useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice  # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址
      discovery:
        cluster-name: GD #集群名字数据
#        ephemeral: false  # 是否是临时实例,临时实例nacos只会进行心跳检测且停止后剔除,不会主动检查,非临时实例会主动检查且停止后等待开启
        namespace: 9b1c3bbe-ff6c-4a5b-aa48-4bdf48f435e8 # nacos新建的命名空间id

3:重启微服务即可完成注册

六、在Nacos中负载均衡的管理

在了解Nacos中负载均衡NacosRule的管理前需要先了解集群中微服务的访问是操作的

在order-service微服务的aplication.yml文件中配置集群优先访问策略,可提高效率

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 优先再集群中随机访问

 当形成集群的时候,访问order-service时会默认在order-service微服务本身集群中寻找user-service微服务的存在,如存在则访问,如找不到则会跨集群寻找微服务且发出警告信息

10-27 21:12:52:398  WARN 20000 --- [nio-8080-exec-8] c.alibaba.cloud.nacos.ribbon.NacosRule   : A cross-cluster call occurs,name = userservice, clusterName = GD, instance = [Instance{instanceId='192.168.65.1#8083#SH#DEFAULT_GROUP@@userservice', ip='192.168.65.1', port=8083, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='SH', serviceName='DEFAULT_GROUP@@userservice', metadata={preserved.register.source=SPRING_CLOUD}}]

警告的意思是实际工作中提醒我们跨集群操作了,需要检查一下本地集群是否停止。

负载均衡权重设置

选择对应服务的实例编辑填入权重(0.0-1)

当权重为0的时候,该服务不会停止但是没有机会访问到,有利于不停机更新

 七、Eureka与Nacos对比,为什么要使用Nacos

搜先看一下Nacos的工作流程图

服务提供方提供的注册服务信息以心跳检测来测试实例是否停止(默认30秒提供信息和拉取信息)

 相比Eureka,Nacos增加了对于非零是实例的主动检查是否停止功能、主动推送注册信息功能,有利于提高获取信息的效率,避免不需要的崩溃
Nacos还提供了命名空间来存放微服务(上面提及到)

对于临时实例与非临时实例,非临时实例在Nacos不会消失,会被保存直到重启或主动消失
Eureka则会立马销毁,这方面理解就好,非临时实例对Nacos服务负载要求较高

具体设置代码只需要在aplication.xml中修改

 cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址
      discovery:
        cluster-name: GD #集群名字数据
#        ephemeral: false  # 是否是临时实例,临时实例nacos只会进行心跳检测且停止后剔除,不会主动检查,非临时实例会主动检查且停止后等待开启


总结

以上是对Nacos的一部分学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值