• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
深水是沉默
别自制压力,我们没有必要跟着时间走, 只需跟着心态和能力走 随缘 尽力 问心无愧,其他的,交给天。
博客园    首页    新随笔    联系   管理    订阅  订阅

SpringCloud 之 Nacos 注册配置中心

前言

在妹子图微服务架构中,注册中心是核心的基础服务之一。相信不少小伙伴都用过 Dubbo 这个流行分布式框架,很久之前微服务还没这么盛行,Dubbo就提供了比较完善的服务治理功能,而服务治理的实现主要依靠的就是注册中心。大家接触更多的可能Zookeeper,那会应该是Dubbo服务的标配,直到现在应该也有不少公司在使用Dubbo+Zookeeper的服务治理模式。今天撸主给大家推荐一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 Nacos。

架构

注册中心

阿里巴巴 Nacos 新版本支持权限控制,开发者可以通过创建用户角色关系对服务接入进行控制。

 

网关 pom.xml 引入:

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

注册中心配置:

server:
  port: 8080
spring:
  profiles:
    active: dev
  application:
    name: tools-gateway
  cloud:
    nacos:
      config:
        namespace: tools # 用于进行租户粒度的配置隔离
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools # 支持账号密码认证
        password: 123456
      discovery:
        namespace: tools # 用于进行租户粒度的配置隔离
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools # 支持账号密码认证
        password: 123456
    gateway:
      routes:
        - id: sys
          uri: lb://tools-sys
          predicates:
            - Path=/api/sys/**
          filters:
            - StripPrefix=2
        - id: weChat
          uri: lb://tools-meizi
          predicates:
            - Path=/api/meizi/**
          filters:
            - StripPrefix=2

妹子图系统管理配置文件 bootstrap.yml:

server:
  port: 8082
spring:
  profiles:
    active: dev
  application:
    name: tools-sys
  cloud:
    nacos:
      config:
        namespace: tools
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456
      discovery:
        namespace: tools
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456

同理再配置一个妹子图小程序后台接口服务,启动成功打开Nacos控制台,若出现以下服务名称,说明配置成功。

配置中心

Nacos不仅提供了动态服务发现功能,还实现了配置中心管理,这样我们就无需再引入Spring Cloud 家族的 Spring Cloud Config。服务拆分以后也就意味着会产生众多相同的配置参数文件,比如 Redis、DataSource以及文件存储配置等等。这时候我们可以通过Nacos的配置管理来实现配置参数共享。

 

比如妹子图小程序服务想引入 redis 和数据源配置,可以通过以下方式引入:

server:
  port: 8081
spring:
  profiles:
    active: dev
  application:
    name: tools-meizi
  cloud:
    nacos:
      config:
        namespace: tools # 用于进行租户粒度的配置隔离
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456
        shared-dataids: redis-${spring.profiles.active}.yml,datasource-${spring.profiles.active}.yml
        refreshable-dataids: redis-${spring.profiles.active}.yml,datasource-${spring.profiles.active}.yml
      discovery:
        namespace: tools # 用于进行租户粒度的配置隔离
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456

阿里巴巴 Nacos Config 目前提供了三种拉取配置的方式:

  • A: 通过 spring.cloud.nacos.config.shared-dataids 支持多个共享 Data Id 的配置

  • B: 通过 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展 Data Id 的配置

  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

小结

阿里巴巴 Nacos还是很香的,新的版本不再强依赖MySql数据库,而是内嵌存储数据源(Apache Derby),用户能够使用命令行参数配置的方式,随意使用这两种数据存储模式。

 

文章来源:爪哇笔记

posted on 2020-07-11 10:36  深水是沉默  阅读(1429)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3