欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

程序员文章站 2022-03-10 23:09:08
分布式配置中心可以实现不需要重启我们的服务器,动态的修改我们的配置文件内容,常见的配置中心有携程的阿波罗、SpringCloud Config、Nacos轻量级的配置中心等。Nacos支持三种部署模式,分别为:单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景官方文档网址:https://nacos.io/zh-cn/do......

分布式配置中心可以实现不需要重启我们的服务器,动态的修改我们的配置文件内容,常见的配置中心有携程的阿波罗、SpringCloud Config、Nacos轻量级的配置中心等。

Nacos支持三种部署模式,分别为:

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景

官方文档网址:https://nacos.io/zh-cn/docs/deployment.html,多集群一般涉及到多机房问题,一般我们用不到,即使用到了也是bat等级别的一线互联网公司,所以我们只讲解单机模式和集群模式。

【Nacos单体模式】

①. 发布:进入http://localhost:8848/nacos,配置管理 - 配置列表 - 点击右上角的加号 - 填写参数,点击发布即可

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

②. 客户端service-impl-order读取配置:

  service-impl引入实现类公共依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>0.2.2.RELEASE</version>
</dependency>

  新建bootstrap.yml配置:

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

# 【application.yml】
server:
  port: 8090
# 【bootstrap.yml】
spring:
  application:
    # 服务名称
    name: service-order
  cloud:
    nacos:
      discovery:
        # nacos注册地址
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心连接地址
        server-addr: 127.0.0.1:8848
        # 分组
        group: DEFAULT_GROUP
        # 类型
        file-extension: properties

  编写测试接口:

@RestController
public class OrderService {

    @Value("${xyy.age}")
    private String age;

    @GetMapping("/getAge")
    public String getAge(){
        return age;
    }
}

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

可以发现,我们的SpringBoot项目并没有配置xyy.age,而是直接去Nacos读取了配置。

③. 实时刷新

需要在用到@Value("${}")注解的类上添加注解@RefreshScope,那么是不是以后每个controller都需要加该注解?

答案是不用的,只需要把需要用到的该注解的属性封装到一个公共类中,在这个类上加入该注解即可,其它需要调用的地方直接调公共类即可。

重启订单服务,getAge接口返回结果为22,此时在Nacos门户把xyy.age改为23,则不重启服务,再次访问getAge接口,会发现返回结果为23。

④ 版本控制

与SpringBoot一样,直接在配置文件末尾加入dev/prd即可;新建两个配置文件分别为service-order-dev.properties,service-order-prd.properties,xyy.age分别为20,30,此时分别在bootstrap指定dev,prd,会发现返回结果是有区别的。

SpringCloudAlibaba - 基于Nacos构建分布式配置中心    SpringCloudAlibaba - 基于Nacos构建分布式配置中心

⑤ yml,properties区分

新建service-order-prd.yaml,在bootstrap.yml指定file-extension为yaml,重启服务,返回结果变为18。

    SpringCloudAlibaba - 基于Nacos构建分布式配置中心   SpringCloudAlibaba - 基于Nacos构建分布式配置中心   SpringCloudAlibaba - 基于Nacos构建分布式配置中心

【Nacos集群模式】

1. 新建数据库nacos_config,导入nacos/conf下的nacos-mysql.sql,(数据库版本有要求)。

  在application.proerties加入下面配置

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

  修改cluster.conf.example为cluster.conf并修改配置为:

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

拷贝3个上述配置,并修改application.properties的server.port分别为8848,8849,8850。

2. Nginx实现Nacos负载均衡

  host配置文件:

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

  Nginx配置文件:

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

启动Nginx,访问http://nacos.xyy.com/nacos即可访问到Nacos的Portal网站。

SpringCloudAlibaba集群方式连接,修改bootstrap.yml文件如下:

SpringCloudAlibaba - 基于Nacos构建分布式配置中心

本文地址:https://blog.csdn.net/AkiraNicky/article/details/104077291

相关标签: SpringCloudAlibaba