解锁新姿势 |如何利用配置中心规范构建PaaS服务配置

摘要: 在上一篇文章中,我们以MQ和ACM为例,讨论了如何借助配置中心对消息进行限流管理的场景。在本文中,我们继续以该场景为例,讲述如何以规范的配置命名格式来进行限流设置。

点此查看原文:http://click.aliyun.com/m/41596/

配置规范问题的产生

对于单一应用的单一属性配置而言,配置规范其实不是个问题。简单来讲,以下配置文件即可解决该问题,而不需要所谓配置规范问题。

//配置目录结构
--app|--src|--config|--application.properties//配置内容
RCV_INTERVAL_TIME=20

然而,当针对某一分布式PaaS服务编写分布式规则的时候,作为PaaS服务提供方(而不是应用方)在设计配置时,会存在不少问题。以MQ 限流场景为例,将存在以下可能的问题:

如何区分全局配置和局部应用配置:比如PaaS服务方在统一管控平台提供服务时,如何既有全局的规则配置,又能针对某个应用进行特殊配置。
如何区分不同集群MQ服务:比如MQ1 Cluster和MQ2 Cluster的配置在保证配置命名统一的情况下,能有效被区分。
如何针对不同的环境,如dev, test, staging, prod等,基于同一套配置中心进行环境隔离。
以上MQ限流场景需求可由以下图例简述。

图片描述
显然,不恰当的配置命名规范将影响以上的配置的易用性。

接下来本文基于配置中心介绍这一方面的最佳实践。为了说明配置的命名规范,我们需要介绍一下这方面配置中心对应的配置结构组织的能力。

关于配置中心的一些配置结构功能说明

除了能对配置进行集中管理,订阅推送等能力,配置中心的配置结构化能力能帮助管理员大大简化不同应用复杂场景下的配置管理。

配置中心的配置结构能力说明:
配置中心的配置结构能力可从以下几个场景进行说明:

租户隔离:配置中心针对不同用户或场景将配置进行隔离的能力。通过租户隔离,不同的配置在不同的租户可以重名,而且具有不同的鉴权机制。
最小配置集合:配置中心如何将若干配置组合成一个配置集合。通过发布将不同配置放在一个最小配置集合来更改和发布,配置可以以类似事物的形式,统一发布,应用这样可以统一处理。其中,配置路径类似于一个文件路径或者网络域名的概念,使得不同配置集合之间拥有层级关系。
具体配置的Key-Value形式:用户如何具体在配置中心中设置具体配置内容。

配置中心配置结构能力产品比较

为了进一步具像化说明,我们基于以下几个配置中心产品进行这方面的功能比较:

阿里云 ACM: 阿里云应用配置管理,前身为Diamond,算是国内最早的配置中心产品。目前在Git上有不同开源版本,在阿里云上有商业版供使用。
Spring Cloud Config: Spring Cloud官方用于做配置中心的工具,主要是在Java Spring领域使用。
ZooKeeper: ZK其本身虽具备一部分配置中心能力,但是由于本身定位于分布式协调信息管理,因此只适合在应用规模不大的情况下做配置中心。鉴于其使用广大,因此也在这里用于比较一下。
以下是对比详细情况:
图片描述

通过以上内容可见,ACM在租户隔离和最小配置集合方面都有比较好的灵活性。以下内容我们介绍如何合理利用ACM的Namespace, Group, DataID等配置功能来设计一个合理配置结构来进行QoS限流策略。

基于配置中心的分布式服务的配置设计最佳实践
配置结构
为了满足MQ配置的功能性需求,结合ACM的特点,设计以下配置方法。

对于不同环境的MQ配置,通过不同的Namespace进行隔离。如

ProdEnv 命名空间用于生产环境,TestEnv, DevEnv分别用于测试和开发环境。
不同环境天然通过AK/SK来隔离,安全得到进一步加强。
对于不同集群提供的MQ服务,可通过Group来进行区分,以进行配置隔离和简化访问形式。

例如,对于专门为子部门核心交易部门服务的MQ集群,和为子部门交易类目部门服务的MQ集群,可通过Group来区分不同的全局配置。这样的好处在于,对于生产系统,所有应用采用同一(子)公司的AK/SK(或类似认证体系密钥),简化了部署的同时,不同集群的配置得到有效的隔离,简化了配置复杂性。

 DataID: mq.global.qosGroup: Trading   DataID: mq.global.qosGroup: ProductCategory

全局配置用全局统一DataID命配置项存放,

其中,配置ID以mq开头,global表示全局配置,qos表示qos方面配置;Group可使用默认。

DataID: mq.global.qosGroup: Default_Group

应用局部配置以相同前缀qos.*来命名ID,

其中,配置ID以mq开头,app.[appname]表示需要重载的app配置项;Group可使用默认。

 DataID: mq.app.app1.qosGroup: Default_Group   DataID: mq.app.app2.qosGroup: Default_Group

配置具体KV的设置

在很多配置中心产品中,如Appolo, ACM System Manager Parameter Store,每一个具体的配置是一个配置中心中的最小粒度管理单元。用户需要挨个在某个粒度下去设置配置的KV。但是在ACM中,并没有该限制。常用做法一般为两种:

仿照以上配置中心,将每个key存在一个独特的DataID上,比如:

mq.global.qos.RCV_INTERVAL_TIME 设置为 50
mq.global.qos.MAX_THREAD 设置为 20
将常用配置聚类成一个DataID,编辑成一个配置文件(配置不限,如Properties,Json,XML,等)

如 mq.global.qos 设置为如下:

//MQ 限流 QoS设置RCV_INTERVAL_TIME = 50MAX_THREAD = 20

在实践中,我们发现第二种方法为更高效的方法。除了更好的灵活性以外,另外一个好处是多个配置同时在一次变更中发布,降低了性能开销的同时,理论上达到了变更批量变化的原子操作效果。

配置结构示意图
经过以上设计,最终配置结构示意图如下:

图片描述

方案有点总结如下:
不同环境通过Namespace来进行隔离,MQ配置项在不同Namespace可重复的同时,不同Namespace通过管理人员,程序AK/SK等权限设置得到隔离保护,配置项能统一的同时,各个环境间互不干扰。
相同环境不同集群之间通过Group做隔离,既能保证不同集群下配置的统一性(如配置名不变,等),代码更加简单,又能在逻辑上将不同的集群配置做个里。
通过最小配置集DataID的规范命名设置,各MQ客户端既可以方便的查找MQ Default全局配置,又能查找到自己对应的应用特殊配置。同时管理员通过在ACM Portal上通过前缀通配查找,能方便查找出所有MQ对应的所有规则,使管理变得简单。示例如下,
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flowable流程实例笔记(1)

RuntimeService 运行服务类 支持启动的方式 流程定义: 从这里获取资源文件. 执行实例: 流程实例中执行的每个环节.流程实例: 一个流程实例包括所有运行的节点,一个流程中流程实例只有一个.启动一个实例: public void startProcessInstanceByKey() {String processDefinitionK…

flowable6.4.2流程审批后涉及到的表

当流程全部走完后,act_ru_*表的数据清空了,全部移到了act_hi_*表

阿里云弹性高性能计算产品商业化正式发布

摘要: 来自全国500多家企业申请试用,结合客户的体验需求和反馈意见,不断地改善和打磨,弹性高性能计算商业版有了很大的优化,在产品性能和体验上都有全新的升级。 点此查看原文:http://click.aliyun.com/m/4…

php中 怎么去除,php如何去掉链接

php去掉链接的方法:1、删除内容中的超链接ereg_replace(]*)>([^,\\2,$content);ereg_replace("]*>|","",$content);2、消除包含特定词的超链接$find"this string is my find";$string替换掉了;//将超链接替换成的内容echo ereg…

RabbitMQ入门指南(八):MQ可靠性

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、MQ数据持久化 1.交换机持久化 2.队列持久化 3.消息持久化 4.生产者确认机制 二、LazyQueue 1.LazyQueue模式介绍 2.管理控制台配置Lazy模式 3.代码配置Lazy模式 4.更新已有队列为lazy模式 总…

MaxCompute常用语句汇总(更新ing)

摘要: 收集一些MaxCompute常用命令。 点此查看原文:http://click.aliyun.com/m/41645/ 大数据计算服务(MaxCompute,原名ODPS,产品地址:https://www.aliyun.com/product/odps)是一种快速、完全托管的TB/PB级数据仓库解决…

290种零食大统计,谁能唤起80、90后的童年回忆?|数据会说话

戳蓝字“CSDN云计算”关注我们哦!数据分析:喜欢果脯的朱小五内容撰写:只爱辣条的王小九本文转自公众号『凹凸数读』1块钱能买到什么?对于80、90后的童年来讲,1块钱是4根冰棍,是10张辣片,是两包双…

php socket主动推送消息,PHP使用WebSocket主动推送【微信小程序接收】

WebSocket.jpegWebsocket是一种服务端和客户端可以持久连接的通信协议,我们可以利用WebSocket的特性实现服务器主动向客户端推送消息的功能。这里我们用TP5.1框架结合Workerman来做演示首先用Composer下载TP5.1框架composer create-project topthink/think5.1.* tp5…

EDAS再升级!全面支持Spring Cloud应用

摘要: 近日,阿里中间件(Aliware)的企业级分布式应用服务EDAS宣布再次升级,全面支持Spring Cloud应用。 点此查看原文:http://click.aliyun.com/m/41644/ 近日,阿里中间件(Aliware&am…

微博宕机复盘:什么样的技术架构,可支持80个明星并发出轨?

戳蓝字“CSDN云计算”关注我们哦!作者 | 张蓝予编辑 | 苏琦6月27日晚间,范冰冰李晨宣布分手,瞬间亿级的访问量,让微博再一次“崩溃”:范冰冰账号评论区无法加载,搜索“范冰冰李晨”显示失败。微博曾经夸下海…

flowable 动态多实例

<?xml version"1.0" encoding"UTF-8"?> <definitions xmlns"http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd"http://www.w3.org/2001/XMLSchema&quo…

为什么MaxCompute采用列式存储?列式存储和行式存储的主要区别在哪

摘要&#xff1a; 1 为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好&#xff0c;直接抄原文了)&#xff1a; Row-based storage stores atable in a sequence …

Hive精华问答 | Hive和传统数据库有什么不同?

Hive是一个数据仓库基础工具&#xff0c;它是建立在Hadoop之上的数据仓库&#xff0c;在某种程度上可以把它看做用户编程接口&#xff08;API&#xff09;&#xff0c;本身也并不存储和处理数据&#xff0c;依赖于HDFS存储数据&#xff0c;依赖MR处理数据。它提供了一系列对数据…

MaxCompute SQL原理解析及性能调优

摘要&#xff1a; 分享内容 介绍了ODPS SQL的基于mapreduce是如何实现的及一些使用小技巧&#xff0c;回顾了mapreduce各个阶段可能产生的问题及相应的处理方法&#xff0c;同时介绍了一些应对数据倾斜的处理方法&#xff0c;最后介绍了一些关于数据集构造、特征选择的技巧帮助…

flowable用户组的处理

背景 flowable有自己的用户账号信息&#xff0c;用户信息&#xff0c;用户组信息&#xff0c;其实这些用户信息都我们系统可能都存在&#xff0c;那么我们如何去使用一份数据呢&#xff1f; 1.我们可以建立视图直接取我们的组织信息&#xff0c;这个可以参考相关的文档 2.我们…

微软 SQL Server 2019 将免费支持 Java;Rancher Labs获2500万美元融资;腾讯云进军日本市场……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go “2019世界计算机大会”新闻…

玩 High API 系列之:实现钉钉Ding功能

摘要&#xff1a; 钉钉是企业IM市场上的领先者&#xff0c;深受中小企业客户的喜欢&#xff0c;就再几天前刚刚宣布用户数超过1亿&#xff01;在钉钉里面有个特别实用的功能&#xff0c;那就是Ding一下&#xff0c;如果你发的消息特别紧急&#xff0c;可以直接通过短信、电话等…

flowable中动态显示节点的审批人信息

1、上面的流程图当任务还没有到的节点&#xff0c;用户想看看节点的人的信息&#xff0c;如果我们常规的是不能实现的。 2、思路就是我们取出节点的表达式&#xff0c;然后用我们流程实例的变量来给他翻译出来即可&#xff0c;如何做呢&#xff1f; 2.1、通过流程实例id查出历…

InfoComm China 2019,揭秘“NVIDIA风格”数据科学!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者|刘晶晶在炫酷的复联4电影中&#xff0c;超过2600个特效镜头层出不穷&#xff0c;意味着电影的后期剪辑与特效对于硬件设备的要求越发提高&#xff0c;毕竟特效制作着力依赖画面渲染。我们了解&#xff0c;在没有GPU之前&#x…

玩 High API 系列之:智能云相册

摘要&#xff1a; 相册是手机中的一个非常重要的功能&#xff0c;然而目前的大部分手机的相册非常普通&#xff0c;仅仅有查看照片&#xff0c;编辑相片的等几个简单功能。我们来看看如果在API时代&#xff0c;如何通过调用API快速实现一个好玩的&#xff0c;具备智能分析识别、…