Nacos注册中心

一、认识和安装Nacos

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

Nacos安装
链接:https://pan.baidu.com/s/14lIotaIp7mnNANAZjfciwA
提取码:GY66

启动Nacos并登录启动命令:.\startup.cmd -m standalone ;用户名密码默认均为nacos
在这里插入图片描述

二、Nacos快速入门

服务注册到Nacos

1、 在cloud-demo 父工程中添加spring-cloud-alibaba的依赖管理:

 <!-- nacos管理依赖-->
        <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、注释掉order-service和user-service中原有的eureka依赖

3、添加nacos的客户端依赖

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

4、修改user-service中的application.yml文件,注释eureka地址,添加nacos地址

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

5、启动测试
在这里插入图片描述

三、Nacos服务分级存储模型

① 一级是服务
② 二级是集群,例如不同区域(上海、杭州…)
③ 三级是实例,例如某区域机房的某台部署了user service的服务器

部署集群(容灾)
在这里插入图片描述

服务跨集群调用问题

在这里插入图片描述

服务集群属性配置

1、修改application.yml(springcloud下),添加内容,启动不同的集群服务

discovery:
        cluster-name: HZ  #集群名称,ZH (杭州)

2、Nacos控制台可以看到集群变化
在这里插入图片描述

能否实现order-service远程调用user-service时优先选择本地集群???

1、设置order-service集群属性并启动(修改yml文件)【 部署同集群(HZ)
在这里插入图片描述

多次访问查询业务,查看日志发现不同的服务均被访问,因此order-service发起远程调用时并未优先选择同集群的服务【依然采用轮询机制方案

服务在选择实例时规则是由负载均衡的规则决定的

四、NacosRule负载均衡

根据集群负载均衡

(此时可实现优先访问本地集群)

在order-service中设置负载均衡的IRule为NacosRule

userservice:  #要配置的微服务的名称
   ribbon:
     NFLoadBalancerClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

NacosRule负载均衡特点
优先选择本地集群,本地集群内的多个服务则再采用随机方式进行负载均衡

根据权重负载均衡

将user-service的权重都设置为1

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

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

1、在Nacos控制台可以设置实例的权重值,首先选中实例后面的编辑按钮
在这里插入图片描述

2、将权重设置为0.1,测试可以发现8081被访问到的频率大大降低
在这里插入图片描述
注意:当设置权重为0时,则此服务不会被访问可进行版本升级

五、环境隔离——namespace

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离(Nacos默认public为命名空间)
在这里插入图片描述

1、新建命名空间
在这里插入图片描述

2、修改服务命名空间(在order-service的application.yml,添加namespace)
在这里插入图片描述

成功添加到dev环境中在这里插入图片描述
注意:此时order-service已不能访问user-service,不同namespace下的服务不可见服务若要实现访问应处于相同的环境下

六、Nacos配置管理

统一配置管理

配置获取步骤
在这里插入图片描述

新建配置管理(有热更新需求的)
eg:日期模板
在这里插入图片描述

微服务配置拉取

①:引入Nacos的配置管理客户端依赖

<!--nacos配置管理依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

②:在user-service中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml

spring:
  application:
    name: userservice  #服务名称
  profiles:
    active: dev   #开发环境,这里是dev
  cloud:
    nacos:
      server-addr: localhost:8848   #Nacos地址
      config:
        file-extension: yaml  #文件后缀名

检验是否可成功拉取到配置

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @Value("${pattern.dateformat}")
    private String dateformat;

    /**
     * 路径: /user/110
     *
     * @param id 用户id
     * @return 用户
     */
    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id) {
        return userService.queryById(id);
    }


    @GetMapping("now")
    public  String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
}

配置拉取成功!!!
在这里插入图片描述

配置热更新

Nacos中的配置文件变更后,微服务无需重启就能感知。不过需要通过两种配置实现

配置自动刷新
● 方式一: 在@Value注入的变量所在类上结合注解@RefreshScope刷新
在这里插入图片描述

● 方式二: 使用@ConfigurationProperties注解,自动刷新
在这里插入图片描述
注意事项

●不是所有的配置都适合放到配置中心,维护起来比较麻烦;
●建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置

配置共享

多环境配置共享(eg:某配置属性在开发、生产、测试等环境下值相同)

微服务启动时会从nacos中读取多个配置文件:

● [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml

● [spring.application.name].yaml,例如:userservice.yaml

无论profile如何变化, [spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件

在这里插入图片描述

多种环境配置的优先级:
● 服务名-profile.yaml > 服务名称.yaml > 本地配置

搭建Nacos集群

Nacos生产环境下一定要部署为集群状态

步骤:
● 搭建数据库,初始化数据库表结构
● 下载nacos安装包
● 配置nacos
● 启动nacos集群
● nginx反向代理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

new一个对象_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值