集中配置管理(IMAGO)

发表于:2018-1-17 14:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:桃子    来源:51Testing软件测试网原创

  1、点击某个配置项Key上的链接,可以查看该配置项的所有历史版本.
  2、可以针对配置项Key,Value进行简单检索.
  3、配置项的添加功能, 只能通过具体的应用页面引导进来才能操作, 直接通过菜单上的配置项管理进入没有新增配置项功能按钮.
  
配置项新增,修改
  在进行配置项的新增或修改时, 需要注意配置项的value值有模板设定, 默认下是走的文本, 但是为了便于对一些公共资源的管理,加入了类似mysql,redis,kafka等配置项的模板.
  
获取配置代码
  每一个配置项后面都可以通过配置代码按钮获取到某一个配置项在各个语言中的配置代码.
  
获取配置项在zk中的数据
  可以通过该方法获取该配置项在zk中具体的数据, 不用再去zookeepr上通过命令行查询.
  
获取配置项在zk中的数据
  可以获取到某一配置项的所有版本变更记录, 并可以通过某一个版本进行恢复.
  资源管理(功能权限管理)
  
获取配置代码
  在用户组管理中我们可以进行资源管理,资源管理主要可以通过树形菜单配置来控制哪些用户组里面的用户可以操作哪些功能url.用户登录后看到的左侧菜单也是通过该功能进行动态配置.
  数据权限管理
  
获取配置代码
  该功能可以配置哪些用户可以对哪些数据进行哪些操作,这里主要集中控制对app数据的控制. 如果涉及到公共应用的如果用户只有查询权限,那么他们会针对该公共应用下的配置项中的密码选项是不可见的. 这个数据操作权限由App延伸到配置项.
  日志管理
  
获取配置代码
  对系统中比较关键的数据操作都会进行详细的日志记录, 便于进行用户行为的跟踪.
  部署
  初始化Imago-admin
  当首次启动imago-admin时需要初始化zookeeper中的数据库配置,进入到zookeeper命令行执行以下命令:
  create /imago ""
  create /imago/trade_public_mysql ""
  create /imago/trade_public_mysql/1.1 {"ip":"xxx.xxx.xxx.xxx","port":"3231","type":"master","dbs":[{"name":"xxx","user":"trade_user","pwd":"xxx"}]}
  Imago-java-client 配置说明
  具体使用步骤总结如下:
  1、在pom.xml中加入:
  <dependency>
  <groupId>com.xxx.xxx</groupId>
  <artifactId>imago-java-client</artifactId>
  <version>1.8.0-SNAPSHOT</version>
  <exclusions>
  <exclusion>
  <groupId>org.jboss.netty</groupId>
  <artifactId>netty</artifactId>
  </exclusion>
  </exclusions>
  </dependency>
  2、大家可以在spring配置文件中嵌入:
  因为测试环境是复杂的, 为了应对各种情况下, imago-java-client都可用, 我将各种场景列举如下, 大家根据具体情况进行变通:
  (1) 普通配置, 在dns正常, zookeeper服务正常的情况下:
  <bean id="configManager" class="com.xxx.imago.client.ConfigManager” />
  (2) 应对测试环境dns不可用的情况, 我们可以自己指定 zookeeper地址
  <bean id="configManager" class="com.xxx.imago.client.ConfigManager”>
  <constructor-arg name="serverList" value="192.168.1.100:2181,192.168.1.101:2181,192.168.1.102:2181"/>
  </bean>
  (3) 应对测试环境zookeeper 不可用情况, 在 ~/.imago/imago_snapshot/ 目录下创建 .closezk文件(windows系统在程序所在盘符的根目录下寻找该路径)该情况, 需要快照文件已经在该路径下.(如果初始化时也不可用, 可以从imago-admin 中下载相应的配置文件放在该路径下.)
  <bean id="configManager" class="com.xxx.imago.client.ConfigManager” />
  3、在spring中的配置示例代码如下:
  (1) 简单引用
  ```
  <property name="jdbcUrl" value="#{configManager.getMysqlConfig('trade_public_mysql','1.1','trade').url}"/>
  ```
  (2) 参数是变量,可以支持参数是变量的引用
  ```
  <constructor-arg name="redisIp" value="#{configManager.getRedisConfig('trade_public_redis’,{configManager.getConfigValue('trade_eagleye','redis_key')}).ip}"/>
  ```
  关于通过DNS获取zookeeper集群地址
  我们的集中配置管理统一使用的域名为: zk.xxx.com, 通过dns来获取zk集群地址是为了将来如果该地址变更,每个应用可以不用修改zk集群地址.
  什么样的配置适合放在imago中进行管理
  1、静态配置, 不会频繁变更的配置(比如一些业务上的开关, 阈值).
  2、公共资源配置, 比如: mysql, redis, kafka, mongodb, zookeeper等.
  3、下面这些配置不建议放在imago中进行管理.
  (1) 基本不会变更的配置(比如: c3p0的一些基础配置, redis, kafka,mongodb等除了ip, 端口, 权限之外的一些基础配置)这些配置可以直接写死在应用中.
  (2) 如果接入loom进行服务治理之后,消费服务的地址和端口.
  备注(重要):
  在imago-admin首页, 可以看到哪些应用的实例引用了以trade_public为前缀的公共资源.
  从数据库同步数据到zookeeper的功能, 仅限于初次搭建imago进行数据迁移,初始化imago时使用.该功能会触发所有数据库中存储的配置项的使用, 如果在执行时,已经有大量的imago-java-client监听了zk的数据节点, 会触发所有watch事件.
  版本变更记录
  imago-admin 版本变更列表
2.0.0
1. 增加功能权限,app数据权限控制
2. 增加配置项的版本管理
1.7.0
1、首页换成公共资源引用的关系图
2、修复导出属性文件被截断的bug
3、限制只能管理员权限的用户才能添加公共的app
4、再添加公共资源的配置时提示配置key的规则验证
5、去掉修改配置时value必填的验证
6、修复在浏览器直接输入无权限页面时无法跳转的bug
1.6.1
1、添加验证,登陆页面用户名或者密码为空,回车失效。
1.6.0
1、添加kafka模板
2、修复搜素框回车查询失效的问题
3、配置代码加入java写法样例
1.5.0
增加应用对应的配置项导出功能
1.4.0
增加批量上传propertes文件的方法,减少初始化时的工作量
1.3.1
启用spring3.2之后的beans特性,使运维操作与配置无关
1.3.0
增加mongo模板
1.2.1
1、修复bug,配置项管理页面(从应用管理点击配置项跳转而来),点击添加,自动选中所属应用
2、应用列表页,显示备注列
1.2.0
支持mysql,redis的json模板设置,服务嵌入代码样例
1.1.0
添加用户权限管理, 配置项修改日志跟踪
1.0.0
简单的app, config管理
  imago-java-client 版本变更列表
1.8.0-SNAPSHOT
增加获取公共资源(mysql,redis,kafka等)引用关系图
1.7.0
添加PropertiesUtil访问类,可以用来静态访问配置
修正启动时知道appList时会注册监听, 在取配置时会再次注册监听的问题
1.6.0
添加kafka模板
1.5.0
使配置不需要关心appList,会根据用户的使用情况,动态添加对appKey的监听和快照文件
1.4.2
修正了如果通过添加.closezk文件来屏蔽zk后,还需要通过dns获取zk地址的问题
1.4.1
修正文件快照不支持windows的情况
1.4.0
增加mongo模板
1.3.0
可以通过数据库名获取数据库配置
1.2.0
增加支持redis, mysql的json解析支持
1.1.0
添加本地文件快照, 增加客户端高可用
1.0.0
配置项获取, 监听变更

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号