Nacos

1.简介

阿里的一个开源产品,是针对微服务架构中的服务发现配置管理服务治理的综合型解决方案。

用来实现配置中心和服务注册中心

2.快速入门

首先在父工程中导入Pom

 <!-- alibaba管理依赖-->
            <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>

在客户端导入依赖

        <!--        nacos客户端依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

在客户端yml中加入配置

spring:  
 cloud:
    nacos:
      server-addr: localhost:8848  #nacos服务端地址

打开nacos 运行startup.cmd -m standalone

3.Nacos分级存储模型

在服务的yml中加入

  cloud:
    nacos:
      server-addr: localhost:8848  #nacos服务端地址
      discovery:
        cluster-name: HLJ #集群名

启用两个实例到HLJ集群

4.负载均衡

1.NacosRule负载均衡策略

①优先选择同集群服务实例列表

②本地集群找不到提供者,才去其它集群寻找,并且会报警告

③确定了可用实例列表后,再采用随机负载均衡挑选实例

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则  nacos优先本地随机
加权负载均衡

1.实例的权重控制

①Nacos控制台可以设置实例的权重值,0~1之间

②同集群内的多个实例,权重越高被访问的频率越高

③权重设置为0则完全不会被访问

8082端口权限大而且属于本地 所以负载均横策略会优选选择

5.微服务项目搭建nacos(实际应用)

nacos主要用来实现配置中心服务注册中心

5.1搭建nacos服务发现中心

首先搭建Nacos服务发现中心。在搭建Nacos服务发现中心之前需要搞清楚两个概念:

  • namespace:用于区分环境、比如:开发环境(dev)、测试环境(test)、生产环境(prod)。

  • group:用于区分项目,比如:xuecheng-plus项目、xuecheng2.0项目

5.1.1新建命名空间

首先在nacos配置namespace:

登录Centos,启动Naocs,使用sh/data/soft/restart.sh将自动启动Nacos。

nacos界面:http://地址/nacos/index.html

账号密码:nacos/nacos

登录成功,点击左侧菜单“命名空间”进入命名空间管理界面,

添加后就有了命名空间供我们开发者使用(注:使用命名空间时要使用命名空间ID

5.1.2注册服务到nacos

首先在需要被注册到nacos的模块中添加服务发现依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在该模块的yml文件中添加配置

spring:
  application:
    name: content-api
  cloud:
    nacos:
      server-addr: nacos地址:8848
      discovery:  #服务注册配置
        namespace: dev    #命名空间id
        group: xuecheng-plus-project

此时启动项目即可在nacos服务列表中看到我们添加的模块

5.2搭建nacos配置中心

搭建完成Nacos服务发现中心,下边搭建Nacos为配置中心,其目的就是通过Nacos去管理项目的所有配置

项目中的配置文件分为以下几类:

  1. 每个项目特有的配置

是指该配置只在有些项目中需要配置,或者该配置在每个项目中配置的值不同。

比如:spring.application.name每个项目都需要配置但值不一样,以及有些项目需要连接数据库而有些项目不需要,有些项目需要配置消息队列而有些项目不需要。

  1. 项目所公用的配置

是指在若干项目中配置内容相同的配置。

比如:redis的配置,很多项目用的同一套redis服务所以配置也一样。

nacos如何定位一个具体的配置文件

我们需要知道nacos如何去定位一个具体的配置文件,即:namespace、group、Data Id.

  1. 通过namespace、group找到具体的环境和具体的项目。

  1. 通过Data Id找到具体的配置文件,dataid有三部分组成

比如:content-service-dev.yaml配置文件 由(content-service)-(dev). (yaml)三部分组成

  • content-service:第一部分,它是在application.yaml中配置的应用名,即spring.application.name:content-service的值(服务名)。

  • dev:第二部分,它是环境名,通过spring.profiles.active: dev环境名)指定,

  • Yaml: 第三部分,它是配置文件 的后缀,目前nacos支持properties、yaml等格式类型,本项目选择yaml格式类型。

我们启动项目中传入spring.profiles.active的参数决定引用哪个环境的配置文件,例如:传入spring.profiles.active=dev -Dserver.port=8083表示使用dev环境的配置文件即content-service-dev.yaml。

5.2.1添加配置

在nacos配置中心中添加项目配置

5.2.2使用nacos中的配置

在对应工程的pom中添加nacos配置文件依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在对应的工程下的bootstrap.yml中添加:

#微服务配置
spring:
  application:
    name: content-api #服务名     content-api -dev. yaml
  cloud:
    nacos:
      server-addr: nacos地址:8848
      discovery: #服务注册配置
        namespace: 667fc5d8-1dbf-4b91-a541-9105a4fc08c4 #命名空间id
        group: xuecheng-plus-project
      config: #配置文件配置(使用nacos中的配置)
        namespace: 667fc5d8-1dbf-4b91-a541-9105a4fc08c4
        group: xuecheng-plus-project
        file-extension: yaml
        refresh-enabled: true
        extension-configs: #扩展配置文件的方式引用service工程所用到的配置文件
        - data-id: content-service-${spring.profiles.active}.yaml
          group: xuecheng-plus-project
          refresh: true
        shared-configs:  #引入公用配置
          - data-id: swagger-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true

  profiles:
    active: dev  #环境名

5.2.3配置优先级

到目前为止已将所有微服务的配置统一在nacos进行配置,用到的配置文件有本地的配置文件bootstrap.yaml和nacos上的配置文件,SpringBoot读取配置文件 的顺序如下:

引入配置文件的形式有:

1、以项目应用名方式引入

2、以扩展配置文件方式引入

3、以共享配置文件 方式引入

4、本地配置文件

各配置文件 的优先级:项目应用名配置文件 > 扩展配置文件 > 共享配置文件 > 本地配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想再掉头发了.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值