热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于中间件服务的配置管理,分为5个阶段

这是学习笔记的第 2185 篇文章读完需要9分钟速读仅需7分钟一直以来对于中间件服务的配置管理是一个有些头疼的事情,但是头疼还不意味着解决不了,目前现状是:中间件配置的管理是手工方

这是学习笔记的第 2185 篇文章

读完需要

9

分钟

速读仅需7分钟

一直以来对于中间件服务的配置管理是一个有些头疼的事情,但是头疼还不意味着解决不了,目前现状是:中间件配置的管理是手工方式,虽然保险,但是人为操作更难免出现问题,主要有以下的一些问题:

  • 中间件的配置信息很容易遗漏

  • 配置信息冗余,在加载配置文件时很难发现和排查

  • 关于时间自增的表维护在不同的年份,月份天数都不大一样,很容易遗漏

  • 中间件配置有了,但是因为遗忘或是配置错误没有生效

  • 中间件配置有了,但是分片配置存在问题,导致表部分写入失败

  • 配置不完整,有些表不连续

  • 配置和脚本执行分离,可能配置和实际情况脱节

  • 配置管理和分片管理较为繁琐,操作比较耗时

对于这种情况的改善,也是分了几个阶段:

1)实现周期表的自治管理,实现预创建,预删除,清理自动化管理

2)实现基于分布式环境的周期表扩展管理

3)实现基于分布式环境的配置自动化管理

4)实现配置和脚本的联动管理

5)实现分布式表的自动配置管理

 目前主要在完善到第3个阶段,脚本部分内容如下:

主要需要4个参数,调用形式为:

sh auto_config.sh tda_test_data 20200110 20200120 prepare

参数的含义为 tda_test_data为表名,是带有时间属性的表,实际的表为tda_test_data_20200110~tda_test_data_20200120

需要输入两个时间范围,其中20200110是基准时间,就是在配置文件中的最大时间,而20200120是截止时间,prepare是整个脚本的处理阶段,分为三个选项:prepare,dry_run,execute。

prepare阶段只是打印出相关的配置信息,做下配置的预检查,是否日期已经自包含等。

dry_run阶段是模拟整个过程,不会真正的变更文件内容,但是会模拟出变更后的配置文件内容

execute是在上两个阶段验证后进行执行阶段。
所以整个配置基于时间维度的管理可以实现方便快捷的配置管理,而且整个过程会自动备份,恢复起来也是妥妥的。 

部分脚本内容如下:

schema_conf_file='/usr/local/proxy/conf/schema.xml'
table_name=$1
table_name_seprator='_'
base_date=$2
end_date_str=$3
action_option=$4
time_flag=`date +%Y_%m_%d_%H_%S`
startdate=`date -d "+1 day ${base_date}" +%Y%m%d`
enddate=`date -d "+1 day ${end_date_str}" +%Y%m%d`
touch /tmp/schema.xml.${time_flag}_tmp
table_base_name=`echo ${table_name}${table_name_seprator}${base_date}`
function backup_file(){
cp ${schema_conf_file} ${schema_conf_file}.bak.${time_flag}
}
function config_parse(){
while [[ ${startdate} <${enddate} ]]
do
echo ${startdate}
table_tmp_name=`echo ${table_name}${table_name_seprator}${startdate}`
if [ `grep -w $table_tmp_name ${schema_conf_file}|wc -l` == 1 ];then
echo '配置 '$table_tmp_name' 已存在,请检查后重试。。。'
return
fi
grep -w $table_base_name ${schema_conf_file} >> /tmp/schema.xml.${time_flag}_tmp
sed -i "s/${base_date}/${startdate}/g" /tmp/schema.xml.${time_flag}_tmp
echo
startdate=`date -d "+1 day ${startdate}" +%Y%m%d`
done
}
function dry_run(){
line_num=`grep -n $table_base_name ${schema_conf_file}|awk -F: '{print $1}' `
sed ''${line_num}' r '/tmp/schema.xml.${time_flag}_tmp'' $schema_conf_file|grep -C30 $table_base_name
}
function append_to_file(){
line_num=`grep -n $table_base_name ${schema_conf_file}|awk -F: '{print $1}' `
sed -i ''${line_num}' r '/tmp/schema.xml.${time_flag}_tmp'' $schema_conf_file
}
function grep_file(){
file_match_cnt=`grep -C20 $table_base_name $schema_conf_file|wc -l`
if [ $file_match_cnt = 0 ];then
echo '没有匹配的配置时间范围,请检查后重试。。。'
else
while [[ ${startdate} <${enddate} ]]
do
table_tmp_name=`echo ${table_name}${table_name_seprator}${startdate}`
if [ `grep -w $table_tmp_name ${schema_conf_file}|wc -l` == 1 ];then
echo '配置 '$table_tmp_name' 已存在,文件内容如下,请检查后重试。。。'
grep -A5 $table_tmp_name $schema_conf_file
return
fi
startdate=`date -d "+1 day ${startdate}" +%Y%m%d`
done
echo 'CHECK RESULT: OK '
grep -C10 $table_base_name $schema_conf_file
fi
}
#执行主函数
if [ ! $action_option ];then
action_option='prepare'
fi
#echo $action_option
if [ $action_option = 'prepare' ];then
grep_file
else
backup_file
config_parse
if [ $action_option = 'dry-run' -o $action_option = 'dry_run' ];then
dry_run
elif [ $action_option = 'execute' ];then
append_to_file
else
echo 'input parameter error...'
fi
fi
rm /tmp/schema.xml.${time_flag}_tmp

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

《关于中间件服务的配置管理,分为5个阶段》

订阅我的微信公众号“杨建荣的学习笔记”,第一时间免费收到文章更新。别忘了加星标,以免错过新推送提示。

《关于中间件服务的配置管理,分为5个阶段》

1

   

近期热文

你可能也会对以下话题感兴趣。点击链接就可以查看。

  • 使用Python分析北京积分落户数据,分析完我陷入了深思

  • MySQL的主键命名挺任性,就这么定了

  • 华裔教授发现二次方程极简解法,我默默的做了下验算

  • 回答:我不小心把公司的数据库给删了,该不该离职?

  • 迁移到MySQL的业务架构演进实战

  • 数据库修改密码风险高,如何保证业务持续,这几种密码双活方案可以参考

  • MySQL业务双活的初步设计方案

  • 如何优化MySQL千万级大表,我写了6000字的解读

  • 一道经典的MySQL面试题,答案出现三次反转

  • 业务双活的数据切换思路设计(下)

  • 业务双活的数据切换思路设计(一)

  • MySQL中的主键和rowid,看似简单,其实有一些使用陷阱需要注意

  • 小白学MySQL要多久?我整理了10多个问题的答案

2

   

转载热文

你可能也会对以下话题感兴趣,文章来源于转载,点击链接就可以查看。

  • 去IOE or Not?

  • 拉里·佩奇(Larry Page)的伟大归来

  • 《吊打面试官》系列-Redis基础

  • 唯一ID生成算法剖析,看看这篇就够了

  • 关于大数据运维能力的一些思考

  • DBA菜鸟的进化简史:不忘初心,记工作中踩过的三个坑

  • 美女主持直播,被突发意外打断!湾区网友却高喊: 我懂!超甜


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
author-avatar
大笨猫的男人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有