NOTE
2.4 如何设计配置中心
1. 什么是配置中心 用来统一管理项目中所有配置的系统 2. 为什么需要配置中心 传统的配置是放在一个配置文件中,跟代码一起发布,这种每次修改了配置都要重新发布服务 而配置中心则是把配置存储在独立的配置服务器上,用户通过管理界面配置和调整服务配置,具体服务通过定期拉(Scheduled Pull)的
这是历史学习笔记,可能存在过时或不完整的理解。
1. 什么是配置中心
用来统一管理项目中所有配置的系统
2. 为什么需要配置中心
传统的配置是放在一个配置文件中,跟代码一起发布,这种每次修改了配置都要重新发布服务 而配置中心则是把配置存储在独立的配置服务器上,用户通过管理界面配置和调整服务配置,具体服务通过定期拉(Scheduled Pull)的方式或者服务器推(Server-side Push)的方式更新动态配置。
3. 如何实现配置中心
3.1. 数据存储在哪
- MySQL 
3.2. 配置更新如何通知客户端
- push:实时性最高,但是需要应用与配置中心保持长连接。复杂性会高一些,特别是负载均衡这块。
- poll:实时性相对差一些,如果不做增量更新的话对配置中心也会造成不必要的压力。不过实现会简单很多
3.3. 如何找到配置服务
- 引入服务注册发现机制
- 
3.4. 如何提高性能
- 引入缓存+缓存更新如何设计缓存架构.md(原链接已失效)
- 
3.5. 如何灰度发布
- 把配置项发布到某台机器看看效果,再决定全量或者回滚
- 配置项增加一个host属性,表示这个配置项只“发布”给某些IP。
- 定义一个优先级,客户端优先加载本地配置文件,这样如果某些机器上的应用需要特殊配置,那么可以采用老的方式上去修改其本地配置文件。
4. 配置中心组件
4.1. 阿波罗
Apollo.md(原链接已失效)
4.2. 七彩石
4.2.1. 流程图
- admin:配置更新到数据库后,写入通知到zookeeper
- config:zookeeper通知配置服务,配置服务读取数据库获取最新配置,更新到缓存中

4.2.2. 数据库设计
CREATE TABLE `tb_app_gray_rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`gray_rule_type_id` int(11) NOT NULL DEFAULT 0 COMMENT '灰度规则类型ID',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`gray_rule_type_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='项目灰度规则表';
CREATE TABLE `tb_app_info` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(256) NOT NULL DEFAULT '' COMMENT '项目ID, 唯一',
`app_name` varchar(512) NOT NULL DEFAULT '' COMMENT '项目名称',
`project_managers` varchar(500) NOT NULL DEFAULT '' COMMENT '负责人',
`dept` varchar(64) NOT NULL DEFAULT '' COMMENT '部门',
`description` varchar(500) NOT NULL DEFAULT '' COMMENT '项目描述',
`creator` varchar(128) NOT NULL DEFAULT '' COMMENT '创建人',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`is_delete` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1: 有效, 2: 已删除',
PRIMARY KEY (`id`),
UNIQUE KEY `app_name` (`app_name`)
) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8 COMMENT='项目信息表';
CREATE TABLE `tb_app_white_list` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`white_list_type_id` int(11) NOT NULL DEFAULT 0 COMMENT '白名单类型ID',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`white_list_type_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='项目白名单表';
CREATE TABLE `tb_auto_group_map` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`group_rule_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组规则ID',
`ret_value` int(11) NOT NULL DEFAULT '0' COMMENT '返回值',
`group_name` varchar(256) NOT NULL DEFAULT '' COMMENT '分组名',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自动分组规则返回值映射表';
CREATE TABLE `tb_auto_group_ret_value` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`ret_value` int(11) NOT NULL DEFAULT '0' COMMENT '返回值',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
PRIMARY KEY (`id`),
KEY `RET_VALUE_APP_IDX` (`app_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自动分组返回值表';
CREATE TABLE `tb_auto_group_rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
`group_prefix` varchar(2048) NOT NULL COMMENT '分组前缀',
`name` varchar(2048) NOT NULL DEFAULT '' COMMENT '规则名',
`auto_rule_type_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组规则类型ID',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态, 1:有效; 2:无效',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `GROUP_APP_IDX` (`app_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自动分组规则表';
CREATE TABLE `tb_auto_group_rule_type` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`client_name` varchar(64) NOT NULL DEFAULT '' COMMENT '客户标识名',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '规则类型中文名',
`en_name` varchar(64) NOT NULL DEFAULT '' COMMENT '规则类型英文名',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`en_name`,`client_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自动分组规则类型表';
CREATE TABLE `tb_client_log_history` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`client_name` varchar(64) NOT NULL DEFAULT '' COMMENT '客户端标识名',
`client_value` varchar(64) NOT NULL DEFAULT '' COMMENT '客户端标识值',
`version_name` varchar(128) NOT NULL DEFAULT '' COMMENT '版本名称',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`group_name` varchar(256) NOT NULL DEFAULT '' COMMENT '分组名',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'AppID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_name`,`client_name`,`client_value`,`version_name`)
) ENGINE=InnoDB AUTO_INCREMENT=284944 DEFAULT CHARSET=utf8 COMMENT='客户端历史列表';
CREATE TABLE `tb_client_log_lastest` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`client_name` varchar(64) NOT NULL DEFAULT '' COMMENT '客户端标识名',
`client_value` varchar(64) NOT NULL DEFAULT '' COMMENT '客户端标识值',
`version_name` varchar(128) NOT NULL DEFAULT '' COMMENT '版本名称',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`group_name` varchar(256) NOT NULL DEFAULT '' COMMENT '分组名',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'AppID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_name`,`client_name`,`client_value`)
) ENGINE=InnoDB AUTO_INCREMENT=284876 DEFAULT CHARSET=utf8 COMMENT='客户端列表最新版';
CREATE TABLE `tb_config` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`ckey` varchar(256) NOT NULL COMMENT '配置key',
`cvalue` mediumtext NOT NULL COMMENT '配置Value',
`value_type` int(11) NOT NULL COMMENT 'Value类型(1-NUMBER;2-STRING;3-TEXT;4-JSON;5-XML;6-FILE)',
`check_rule_id` int(11) NOT NULL DEFAULT '0' COMMENT '数据类型校验ID',
`description` varchar(2048) NOT NULL DEFAULT '' COMMENT '配置描述',
`version_id` int(11) NOT NULL DEFAULT '0' COMMENT '版本ID',
`value_md5` varchar(256) NOT NULL COMMENT '配置value的md5',
`from_group_id` int(11) NOT NULL DEFAULT '0' COMMENT '配置key来源分组',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`app_id` varchar(256) NOT NULL DEFAULT '' COMMENT '项目ID',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态,0:已发布,1:修改,2:新增,3:删除,4:发布中',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`,`version_id`,`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=2024 DEFAULT CHARSET=utf8 COMMENT='é…置表';
CREATE TABLE `tb_config_mid` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`ckey` varchar(256) NOT NULL COMMENT '配置key名称',
`cvalue` mediumtext NOT NULL COMMENT '配置内容',
`value_type` int(11) NOT NULL COMMENT 'Value类型(1-NUMBER;2-STRING;3-TEXT;4-JSON;5-XML;6-FILE)',
`check_rule_id` int(11) NOT NULL DEFAULT '0' COMMENT '数据校验规则id',
`description` varchar(2048) NOT NULL DEFAULT '' COMMENT '描述',
`value_md5` varchar(256) NOT NULL DEFAULT '' COMMENT '变化后md5',
`source_value_md5` varchar(256) NOT NULL DEFAULT '' COMMENT '初始md5',
`from_group_id` int(11) NOT NULL DEFAULT '0' COMMENT '来源分组id',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`app_id` varchar(256) NOT NULL DEFAULT '' COMMENT 'AppID',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态,0:已发布,1:修改,2:新增,3:删除,4:发布中',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`operator` varchar(64) NOT NULL DEFAULT '' COMMENT '操作人',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`,`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=1923 DEFAULT CHARSET=utf8 COMMENT='配置中间表';
CREATE TABLE `tb_favorite_app` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`person` varchar(64) NOT NULL COMMENT '收藏人',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `FAVOR_PERSON_IDX` (`person`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='项目收藏表';
CREATE TABLE `tb_gray_rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`task_id` int(11) NOT NULL DEFAULT '0' COMMENT '发布任务ID',
`gray_rule_type_id` int(11) NOT NULL DEFAULT '0' COMMENT '灰度规则类型ID',
`content` text NOT NULL COMMENT '灰度规则内容',
`status` int(11) NOT NULL DEFAULT '1' COMMENT '状态, 1:有效, 2:无效',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`,`task_id`),
UNIQUE KEY `app_id_2` (`app_id`,`group_id`,`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=183 DEFAULT CHARSET=utf8 COMMENT='灰度规则表';
CREATE TABLE `tb_gray_rule_mid` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`group_id` int(11) NOT NULL COMMENT '分组ID',
`task_id` int(11) NOT NULL DEFAULT '0' COMMENT '发布任务ID',
`gray_rule_type_id` int(11) NOT NULL DEFAULT '0' COMMENT '灰度规则类型ID',
`content` text NOT NULL COMMENT '灰度规则内容',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`,`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=388 DEFAULT CHARSET=utf8 COMMENT='灰度规则中间表';
CREATE TABLE `tb_gray_rule_status` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`task_id` int(11) NOT NULL DEFAULT '0' COMMENT '发布任务ID',
`gray_rule_id` int(11) NOT NULL DEFAULT '0' COMMENT '灰度规则ID(0:表示修改中, >0:表示灰度规则已下发)',
`op_type` tinyint(4) NOT NULL COMMENT '操作类型(1:新增, 2:修改)',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`,`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=utf8 COMMENT='灰度规则状态表';
CREATE TABLE `tb_gray_rule_type` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`client_name` varchar(64) NOT NULL DEFAULT '' COMMENT '客户端标识名',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '灰度规则类型中文名',
`en_name` varchar(64) NOT NULL DEFAULT '' COMMENT '灰度规则类型英文名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='灰度规则类型表';
CREATE TABLE `tb_group` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(256) NOT NULL COMMENT '分组名',
`description` varchar(500) NOT NULL DEFAULT '' COMMENT '分组描述',
`type` int(11) NOT NULL DEFAULT '0' COMMENT '分组类型(1:私有, 2:公有)',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态, 1:有效, 2:无效',
`white_list_status` int(11) NOT NULL DEFAULT '2' COMMENT '白名单状态, 1:开启, 2:关闭',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`name`,`status`)
) ENGINE=InnoDB AUTO_INCREMENT=216 DEFAULT CHARSET=utf8 COMMENT='分组信息表';
CREATE TABLE `tb_group_lastest_version` (
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'AppID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`group_name` varchar(512) NOT NULL DEFAULT '' COMMENT '分组名称',
`main_version` varchar(128) NOT NULL DEFAULT '' COMMENT '主versionID',
`prev_main_version` varchar(128) NOT NULL DEFAULT '' COMMENT '上一主versionID',
`gray_version` varchar(128) NOT NULL DEFAULT '' COMMENT '灰度versionID',
`lastest_event_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '最新任务事件ID',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`main_version_name` varchar(128) NOT NULL COMMENT '最新主版本名',
`gray_version_name` varchar(128) NOT NULL COMMENT '最新灰度版本名',
UNIQUE KEY `app_id` (`app_id`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='最新配置版本表';
CREATE TABLE `tb_group_relation` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`from_group_id` int(11) NOT NULL DEFAULT '0' COMMENT '来源分组ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`from_version_id` int(11) NOT NULL DEFAULT '0' COMMENT '来源版本ID',
PRIMARY KEY (`id`),
KEY `RELATION_GROUP_IDX` (`app_id`,`group_id`),
KEY `RELATION_FROM_GROUP_IDX` (`app_id`,`from_group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 COMMENT='分组关联表';
CREATE TABLE `tb_group_version_status` (
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT '项目ID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`version_id` int(11) NOT NULL DEFAULT '0' COMMENT '版本ID(0:表示修改中, >0:版本已发布)',
`prev_version_id` int(11) NOT NULL DEFAULT '0' COMMENT '上一个版本ID',
`status` int(11) NOT NULL DEFAULT '1' COMMENT '版本状态,(1:版本可修改, 2:版本发布中不可修改)',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
UNIQUE KEY `app_id` (`app_id`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分组版本状态表';
CREATE TABLE `tb_release_task` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL COMMNET '项目ID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`group_name` varchar(512) NOT NULL DEFAULT '' COMMENT '分组名称',
`version_name` varchar(128) NOT NULL DEFAULT '' COMMENT '版本名称',
`apply_user` varchar(128) NOT NULL DEFAULT '' COMMENT '发布任务申请者',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '任务状态,(1:等待审批,2:审批拒绝,3:待发布,4:已全量发布,5:已灰度发布,6:回滚,7:任务已完成)',
`reject_reason` text COMMENT '任务拒绝理由',
`approval_user` varchar(128) NOT NULL DEFAULT '' COMMENT '审批人',
`description` varchar(2048) NOT NULL DEFAULT '' COMMENT '任务描述',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`version_id` int(11) NOT NULL DEFAULT '0' COMMENT '当前版本号',
`prev_version_id` int(11) NOT NULL DEFAULT '0' COMMENT '上一版本号',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `TASK_APP_GROUP_NAME_IDX` (`app_id`,`group_id`,`group_name`)
) ENGINE=InnoDB AUTO_INCREMENT=304 DEFAULT CHARSET=utf8 COMMENT='发布任务信息表';
CREATE TABLE `tb_release_task_config` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`ckey` varchar(256) NOT NULL COMMENT '配置key',
`cvalue` mediumtext NOT NULL COMMENT '配置value',
`value_type` int(11) NOT NULL DEFAULT '0' COMMENT 'Value类型(1-NUMBER;2-STRING;3-TEXT;4-JSON;5-XML;6-FILE)',
`description` varchar(2048) NOT NULL DEFAULT '' COMMENT '配置描述',
`task_id` int(11) NOT NULL DEFAULT '0' COMMENT '任务ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态,0:已发布,1:修改,2:新增,3:删除,4:发布中',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`task_id`,`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=1662 DEFAULT CHARSET=utf8 COMMENT='任务配置key/value中间表';
CREATE TABLE `tb_role` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(128) NOT NULL COMMENT '角色名称',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`persons` varchar(500) NOT NULL DEFAULT '' COMMENT '人员列表',
`object` varchar(500) NOT NULL DEFAULT '' COMMENT '权限分组名',
`permission_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '权限类型,(1:查看, 2:发布)',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `ROLE_APP_PERSONS_IDX` (`app_id`,`persons`)
) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8 COMMENT='角色表';
CREATE TABLE `tb_task_event` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`event_type` varchar(64) NOT NULL DEFAULT '' COMMENT '任务类型',
`task_id` int(11) NOT NULL DEFAULT '0' COMMENT '任务ID',
`app_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'AppID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`src_version_name` varchar(128) NOT NULL DEFAULT '0' COMMENT '源版本名称',
`dst_version_name` varchar(128) NOT NULL DEFAULT '0' COMMENT '目标版本名称',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `EVENT_APP_GROUP_IDX` (`app_id`,`group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1053 DEFAULT CHARSET=utf8 COMMENT='发布任务事件表';
CREATE TABLE `tb_value_check_rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`value_type` int(11) NOT NULL COMMENT 'Value类型(1-NUMBER;2-STRING;3-TEXT;4-JSON;5-XML;6-FILE)',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '数据校验规则名',
`content` varchar(64) NOT NULL DEFAULT '' COMMENT '数据校验规则内容',
`check_type` int(11) NOT NULL DEFAULT '0' COMMENT '校验规则类型(1:表达式, 2:远程url)',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`value_type`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='配置value校验规则表';
CREATE TABLE `tb_version_info` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(128) NOT NULL COMMENT '版本名称',
`description` varchar(2048) NOT NULL DEFAULT '' COMMENT '版本描述',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '版本创建者',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`version_uuid` varchar(128) NOT NULL DEFAULT '' COMMENT '版本UUID',
`status` int(11) NOT NULL DEFAULT '1' COMMENT '状态,(1:有效, 2:无效)',
PRIMARY KEY (`id`),
KEY `VERSION_APP_GROUP_IDX` (`app_id`,`group_id`),
KEY `VERSION_INFO_UUID` (`version_uuid`)
) ENGINE=InnoDB AUTO_INCREMENT=399 DEFAULT CHARSET=utf8 COMMENT='版本信息表';
CREATE TABLE `tb_version_info_mid` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(128) NOT NULL COMMENT '版本名',
`description` varchar(2048) NOT NULL DEFAULT '' COMMENT '版本描述',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组id',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`version_uuid` varchar(128) NOT NULL DEFAULT '' COMMENT '版本UUID',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=333 DEFAULT CHARSET=utf8 COMMENT='版本信息中间表';
CREATE TABLE `tb_version_log` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`version_name` varchar(128) NOT NULL COMMENT '版本名称',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`group_name` varchar(2048) NOT NULL DEFAULT '' COMMENT '分组名称',
`ckey` varchar(256) NOT NULL COMMENT '配置key',
`cvalue` mediumtext NOT NULL COMMENT '配置value',
`op_type` int(11) NOT NULL DEFAULT '0' COMMENT '操作类型(1:新增, 2:修改)',
`operator` varchar(2048) NOT NULL DEFAULT '' COMMENT '操作这',
`modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`version_uuid` varchar(128) NOT NULL DEFAULT '' COMMENT '版本UUID',
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '分组ID',
PRIMARY KEY (`id`),
KEY `VERSION_LOG_APP_IDX` (`app_id`,`version_name`,`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=1096 DEFAULT CHARSET=utf8 COMMENT='版本更新key/value流水';
CREATE TABLE `tb_white_list` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`app_id` varchar(128) NOT NULL COMMENT '项目ID',
`group_id` int(11) NOT NULL COMMENT '分组ID',
`white_list_type_id` int(11) NOT NULL COMMENT '白名单类型ID',
`content` text NOT NULL COMMENT '白名单内容',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `app_id` (`app_id`,`group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8 COMMENT='白名单表';
CREATE TABLE `tb_white_list_type` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`client_name` varchar(64) NOT NULL DEFAULT '' COMMENT '客户标识名',
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '类型中文名',
`en_name` varchar(64) NOT NULL DEFAULT '' COMMENT '类型英文名',
PRIMARY KEY (`id`),
UNIQUE KEY `en_name` (`en_name`,`client_name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='白名单类型表';