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

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

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

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

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

【Nacos单体模式】

①. 发布:进入http://localhost:8848/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配置:

# 【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;
    }
}

可以发现,我们的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,会发现返回结果是有区别的。

    

⑤ yml,properties区分

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

          

【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并修改配置为:

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

2. Nginx实现Nacos负载均衡

  host配置文件:

  Nginx配置文件:

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

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

发布了45 篇原创文章 · 获赞 20 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/AkiraNicky/article/details/104077291