【博学谷学习记录】超强总结,用心分享|架构师-nacos功能应用

文章目录

  • 一、服务注册与发现
  • 二、负责均衡
  • 三、配置中心
    • 3.1 配置管理
    • 3.2 多环境切换
    • 3.3 共享/扩展 配置
    • 3.4 配置刷新
    • 3.5 灰度发布

一、服务注册与发现

服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于 服务的动态扩缩容。Nacos Discovery Starter 可以帮助您将服务自动注册到 Nacos 服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery Starter 也将服务实例自身的一些元数据信息-例如 host,port,健康检查URL,主页等-注册到 Nacos 。

二、负责均衡

【博学谷学习记录】超强总结,用心分享|架构师-nacos功能应用_第1张图片如上图,如果此时用户打车成功,会调用订单服务,订单服务会修改司机状态,此时会调用hailtaxi-driver,如果是生产环境,每个节点一定是集群状态,比如有2个hailtaxi-driver节点,此时如何实现负载均衡?

在这里插入图片描述

我们可以发现服务注册到Nacos中,有一个权重属性,这个权重属性就是Nacos的负载均衡机制,此时需要用到Nacos的负载均衡策略NacosRule,我们可以在程序中先初始化负载均衡算法,再到bootstrap.yml中配置权重。

三、配置中心

3.1 配置管理

1、我们可以在Nacos控制台配置项目的配置数据,先打开Nacos控制台,在命名空间中点击新建命名空间
【博学谷学习记录】超强总结,用心分享|架构师-nacos功能应用_第2张图片
2、修改hailtaxi-driver中的bootstrap.yml配置文件,指定命名空间

spring:
  application:
    name: hailtaxi-driver
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
        weight: 1
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
      config:
        server-addr: 192.168.200.200:8848
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
        # 如果将配置信息保存到nacos,指定配置文件扩展名
        file-extension: yaml
        # nacos config dataid name 默认加载 ${spring.application.name}.${file-extension},当然也可指定
        #name: hailtaxi-driver.yaml

3、在nacos中添加配置
【博学谷学习记录】超强总结,用心分享|架构师-nacos功能应用_第3张图片
4、启动测试:
我们启动hailtaxi-driver服务,默认加载 s p r i n g . a p p l i c a t i o n . n a m e . {spring.application.name}. spring.application.name.{file-extension:properties} 配置,加载完成后,配置数据会生效,并访问

http://localhost:18081/driver/info/1 测试,效果如下:
【博学谷学习记录】超强总结,用心分享|架构师-nacos功能应用_第4张图片

3.2 多环境切换

3.3 共享/扩展 配置

3.4 配置刷新

配置自动刷新对程序来说非常重要,Nacos支持配置自动刷新,并且提供了多种刷新机制。

1、Environment自动刷新
2、@Value刷新-程序中如果写了@Value注解,可以采用@RefreshScope实现刷新,只需要在指定类上添加该注解即可

3.5 灰度发布

灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。在1.1.0中,Nacos支持了以IP为粒度的灰度配置

你可能感兴趣的:(java,学习,java,负载均衡)