美文网首页
Spring Cloud alibaba 之 Nacos-con

Spring Cloud alibaba 之 Nacos-con

作者: 山巅自相见 | 来源:发表于2022-10-10 15:57 被阅读0次

官方文档
Nacos提供方用于储存配置和其他元数据的key/value储存,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Config
,您可以在nacos Server集群中管理你的Spring Cloud应用的外部属性配置。


Spring Cloud Config对比
三大优势
  • Spring Cloud Config大部分场景结合git使用,动态变更还需要依赖Spring Cloud Bus消息总线来通过所有的客户端变化,不提供可视化界面。
  • Nacos Config使用后长轮询更新配置,一旦配置有变动后,通知Provider的过程非常的迅速,从速度上秒杀Spring Cloud原来的config几条街
对比项目/配置中心 Spring Cloud Config Apollo Nacos
开源时间 2014.9 2016.5 2018.6
配置实时推送 支持(Spring Cloud Bus) 支持(HTTP长轮询1s内) 支持HTTP轮询1s
版本管理 支持(Git) 支持 支持
配置回滚 支持(Git) 支持 支持
灰度发布 支持 支持 待支持
权限管理 支持 支持 待支持
多集群多环境 支持 支持 支持
监听查询 支持 支持 支持
多语言 只支持Java Go,C++,Python,Java,.net,OpenAPI Python,Java,Nodejs,OpenAPI
分布式高可用最小集群数量 Config-Server2+Git+MQ Config2+Admin3+Portal*2+Mysql=8 Nacos*3+Mysql=4
配置格式校验 不支持 支持 支持
通讯协议 HTTP和AMQP HTTP HTTP
数据一致性 Git保证数据一致性,Config-Server从Git读取数据 数据库模拟消息队列,Apollo定时读消息 HTTP异步通知
单机读(tps) 7(限流所致) 9000 15000
单机写(tps) 5(限流所致) 1100 1800
3节点读 21(限流所致) 27000 45000
3节点写 5(限流所致) 3300 5600

配置管理界面

配置列表


(有一小部分在之前的《Spring Cloud alibaba之Nacos》中介绍过,这里就不重复说了)
这里用来存储项目中的所有的配置文件,点击右边的加号进行添加配置。
  • Data ID:可以理解为配置文件的名称。Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。
  • Group:Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

配置格式常用的有yaml或者properties。
配置内容

user.name=赵毅梵
user.age=18

点击发布,回到配置管理界面后,可以看见刚才新增的配置文件发布成功

权限控制


权限控制模块可以新建用户,并赋予用户权限。
用户列表-创建用户-填写用户信息


我这里创建了一个用户名为zhaoyifan的用户。
我们给zhaoyifan用户绑定一个角色名。角色管理-绑定角色
角色名最好见名知意,这里设置的是public_r&w意思就是只有访问public命名空间权限,并且可以读和写。
最后zhaoyifan用户添加权限。权限管理-添加权限
这里我新建了一个dev工作空间,资源选择public。添加完成后登出,登录刚才新建的zhaoyifan用户。

可见public工作空间是可以正常访问并且修改的。当点击dev切换开发环境的时候就出现了弹窗阻断切换。


到这里,用户权限就配置完成了。

Client读取配置

在文章开头处点击《官方文档》,跟着文档的快速开始做就可以了,这里不过多重复。

@RefreshScope

@Value注解可以获取到配置中心的值,但是无法动态感知修改后的值,需要利用@RefreshScpoe注解

package com.mrZhao.config.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RequestMapping("/config")
@RestController
public class ConfigController {
    @Value("${user.name}")
    String name;

    @RequestMapping("/show")
    String show() {
        return name;
    }
}

相关文章

网友评论

      本文标题:Spring Cloud alibaba 之 Nacos-con

      本文链接:https://www.haomeiwen.com/subject/kwynortx.html