微服务-配置中心

springcloud:https://blog.youkuaiyun.com/qq_52681418/article/details/113247805

微服务-配置中心

微服务架构中存在很多服务,每个服务都有自己的配置文件,这些配置文件如果集成在服务中,也是难以维护的,于是便可以使用配置中心来管理这些配置文件。

不使用配置中心时:

  • 配置文件太多,而且分布在每个服务上,不易管理。
  • 每次修改配置都需要重启服务。

Nacos

nacos既可以作为 注册中心 ,也可以作为 配置中心 ,使用nacos配置中心,你可以将服务里的配置文件写在nacos上通过nacos面板来修改管理服务的配置而无需停止服务。

如果使用nacos作为注册中心而不作为配置中心,添加配置:spring.cloud.nacos.config.enabled =false 即可。

可以以请求方式发布、获取配置:

1.搭建服务端

nacos服务端搭建是十分容易的,只需下载+配置+启动就行,参考注册中心这篇:点击前往

建议:使用mysql作为持久化。

2.搭建客户端

客户端即每个配置要被管理的服务,服务的搭建还如往常一样搭建,只不过配置文件发生一些变化,以下就认为你已经创建了一个服务模块/项目,并以此起步。

1.客户端引入nacos config依赖

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.创建一个bootstrap.yml(或properties),配置nacos config的配置

spring:
 cloud:
   nacos:
     config:		#nacos的信息,添加后可以省略注册中心的nacos此类信息
       server-addr: 127.0.0.1:8848
       username: nacos		
       password: nacos
       contextPath: /nacos
       #--------------------------
       file-extension: yaml    #显示的声明dataId文件扩展名

3.application.yml(或properties),除特殊配置外,只留下下面2个配置

server:
 port: 41150
spring:
 application:
   name: server-producer

到这里你会发现你有2个配置文件: bootstrap.yml、application.yml 。这时你可能就有疑问了,不是说好的将配置交给配置中心管理了吗,怎么服务里还变多了呢。

那么我来给你解释一下吧:

  • bootsteap.yml:这里只配置配置中心的信息,服务通过它去获取服务所需配置,而且这里的内容基本不变。
  • application.yml:这里只配置端口+服务名,因为首次启动服务时,需要通过它注册达到nacos,然后才能获取配置。

可以看出,上面的配置基本上就是固定的,而且基本上不会被修改,实际项目中配置文件远远不止这些,其他配置都将被放在配置中心统一管理。

4.在nacos配置中心添加配置文件:
在这里插入图片描述
点击添加后页面如下:配置名要和服务名一致,后缀带不带都行

在这里插入图片描述
第一次发布配置后,重启项目即可。之后修改配置都不需要启动服务。

服务与配置文件的匹配:

  • 文件名=服务名,建议显示指定配置文件后缀。
  • 多同名配置会互相覆盖,比如server、server.yml在指定yml格式后,两个文件会覆盖。

更多特性自己摸索,使用:服务名.yml在bootstrap.yml指定格式为yaml 一定能用。

测试一下效果:按照阿里的示例进行举例。

在客户端创建一个测试类,并在nacos上配置中文件添加属性,然后注入到属性中,启动后控制台就会打印。

@Configuration
public class TestConfig {
   @Value("${user.names}")
   public String test1;
   @Value("${user.pwds}")
   public String test2;

   @PostConstruct
   public void getUser(){
       System.out.println("name=" + test1 + "|pwd=" + test2);
   }
}

启动后,会发现打印的数据就是配置中心上的数据了。

3.动态刷新

此节代码来自于:阿里云-知行动手实验室

配置发生变化后,服务中绑定的属性值将刷新,会刷新的情况有3种:

  • 类上加注解:@RefreshScope、类种非静态属性加@Value注解
@RestController
@RefreshScope
public class NacosConfigDemo {

    @Value("${user.name}")
    private String userName;

    @Value("${user.age}")
    private int userAge;

    @PostConstruct
    public void init() {
        System.out.printf("[init] user name : %s , age : %d%n", userName, userAge);
    }

    @RequestMapping("/user")
    public String user() {
        return String.format("[HTTP] user name : %s , age : %d", userName, userAge);
    }

}
  • 类上加注解:@RefreshScope、@ConfigurationProperties
@RefreshScope
@ConfigurationProperties(prefix = "user")
public class User {

    private String name;

    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
  • 使用Nacos Config监听来对Bean属性实施监听。
@RestController
@RefreshScope
@EnableConfigurationProperties(User.class)
public class NacosConfigDemo {

    @Value("${user.name}")
    private String userName;

    @Value("${user.age}")
    private int userAge;

    @PostConstruct
    public void init() {
        System.out.printf("[init] user name : %s , age : %d%n", userName, userAge);
    }

    @PreDestroy
    public void destroy() {
        System.out.printf("[destroy] user name : %s , age : %d%n", userName, userAge);
    }

    @RequestMapping("/user")
    public String user() {
        return String.format("[HTTP] user name : %s , age : %d", userName, userAge);
    }

}

4.nacos config高可用

nacos是配置中心也是注册中心,实现nacos的高可用和 注册中心 高可用一样。

5.nacos config高级配置

namespace命名空间
nacos可以实现配置文件之间隔离,不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置,可以实现不同开发环境(开发、测试、生产等)配置文件的隔离。

创建命名空间也很容易:
在这里插入图片描述
切换命名空间如下:
在这里插入图片描述
创建后,在客户端bootstrap.yml添加如下配置进行绑定:

spring:
	cloud:
		nacos:
			config:
				namespace: c70a9f91-a687-427f-97bb-5a6e54289a6e

Group分组

在创建配置时可以指定分组,自定义分组在bootstrap.yml添加如下:

spring:
	cloud:
		nacos:
			config:
				group: DEVELOP_GROUP

自定义配置名

三种情况完整配置案例:

spring:
	application:
		name: myserver
	cloud:
		nacos:
			config:
				server-addr: 127.0.0.1:8848
				extension-configs[0]: 	# 1.在默认组,不支持动态刷新
					data-id: myconfig-1.yaml
				extension-configs[1]:	# 2.不在默认组,不支持动态刷新
					data-id: myconfig-2.yaml
					group: MY_GROUP
				extension-configs[2]:	# 3.不在默认的组,支持动态刷新
					data-id: myconfig-3.yaml
					group: MY_GROUP
					refresh: true

总结:默认配置名+默认组时才会自动刷新,否则需指定refresh: true才自动刷新。
注意:

  • 多个相同配置文件存在优先级extension-configs[a]里a越大,优先级越高。
  • data-id结尾必须有properties/yaml/yml等扩展名。

Config

全名SpringCloud Config,将所有微服务的配置文件通过config server放在Git仓库统一管理。

  • 服务端:
  • 客户端

使用此方法,需要在码云或github创建远程Git仓库。
文件命名规则:应用名称-开发环境.yml(或.properties)

1.搭建服务端

config服务端,即一个独立服务,依赖如下:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-server</artifactId>
</dependency>

使用@EnableConfigServer启动服务:

@SpringBootApplication
@EnableConfigServer//启动ConfigServer
public class Application{

	public static void main(String[] args){
		SpringApplication.run(Application.class,args);
	}

}

配置Config Server:

server:
 port: 10000 #服务端口
spring:
 application:
   name: config-server #指定服务名
 cloud:
   config:
     server:
       git:
         #请求的git服务器仓库https地址
         uri: https://gitee.com/panda_99/cloud-config.git
         

查看git上的yml文件:http://localhost:10000/xxx.yml

2.搭建客户端

为将配置交给配置中心管理的服务引入依赖:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

由于配置文件被管理,所以将原配置文件上传到Git仓库。但项目中需要指明要加载的配置文件,因此创建一个新的配置文件,这个配置文件不添加项目内部配置,仅指出项目配置文件的来源。

新建bootstrap.yml:

#指明配置文件通过config server获取
spring: 
	cloud:
		config:
			name: img5 						#应用名称,需要对应git配置文件名的前半部分
			profile: dev	 				#开发环境,需要对应git配置文件名的后半部分
			label:
				uri: http://localhost:10000	#config-server的请求地址

上面的配置文件在Git中名称应为:img5-dev.yml ,可以看出开发环境可以更换。

3.动态刷新配置-手动post请求

配置好服务端、客户端后,如果之后需要修改配置,只需要在git仓库中,修改就行了。可是却有一个问题,就是配置文件被修改后,对应的服务只有在重启后才能使修改后的配置生效。

为了解决每次修改配置都必须重启服务的问题,需要发送Post请求到服务触发配置刷新。

为Config Server引入健康检查:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在控制器类使用注解@RefreshScope开启动态刷新:

@RefreshScope	//开启动态刷新
@RestController
@RequestMapping("/img")
public class ImgController {

   //测试配置刷新效果
   @Value("${nametest}")
   private  String nametest;
   
   @RequestMapping("/test")
   public String testpram(){
       return nametest;
   }
   
}

bootstrap.yml添加配置:

#开启动态刷新的请求路径端点
management:
 endpoints:
   web:
     exposure:
       include: refresh #暴露的请求路径
       

此时重启服务,就开启了动态刷新。再修改git上的配置,发送post请求给任意接口,新配置就生效了。

4.动态刷新配置-消息总线Bus、RabbitMQ

根据上一节可以发现,手动发送post请求虽然可以刷新,但实际集群中有大量服务,每次手动刷新很繁琐,而且修改配置还需要知道该服务的一个接口,这样是很麻烦的。

消息总线可以在接收到一个消息后给其他所有服务发送消息,所以可以向服务总线发送一个消息,服务总线再为所有服务发送消息,这样发送一个请求就相当于对所有服务都发送了请求。

消息总线处理服务与服务间的消息,所以我们向configServer发送请求,configServer向消息总线发送消息,消息总线再将消息发送给其它服务触发刷新。
在这里插入图片描述
服务端、客户端添加依赖:

<!--config客户端:此模块配置将存在码云-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--Bus-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

服务端、客户端(修改Git仓库中配置文件)添加配置:

 #消息总线配置
 rabbitmq:
   host: 127.0.0.1
   port: 5672
   username: guest
   password: guest

修改git上配置后,发送post请求到:http://localhost:10000/actuator/bus-refresh ,即可刷新全部配置。

5.Config Server的高可用

config server也是服务,它可以管理其它服务的配置文件,当它发生问题,对集群的影响是可想而知的,因此需要保证它的高可用,即搭建多个Config Server服务。

ConfigServer如何保证高可用呢?

根据服务注册于调用可以知道,服务都被注册在注册中心,供其他服务调用。因此可以将configServer注册到注册中心,其他服务通过注册中心来获取配置。

修改客户端配置:bootstrap.yml

#指明配置文件通过config server获取
spring:
 cloud:
   config:
     name: cloudimg1  #应用名称,需要对应git配置文件名的前半部分
     profile: dev  #开发环境,需要对应git配置文件名的后半部分
     label:
     #uri: http://localhost:10000 #config-server的请求地址
     #通过注册中心获取config server配置
     discovery:
       enabled: true #开启服务发现
       service-id: config-server
#开启动态刷新的请求路径端点
management:
 endpoints:
   web:
     exposure:
       include: refresh
       

Apollo

携程研发出的分布式配置中心框架,它的优点如下:

  • 可以在更改配置后,实时刷新,不用发送请求刷新。
  • 支持版本回滚、灰度发布等。

环境要求:java(服务端1.8+、客户端1.7+)、mysql5.6.5+。

1.搭建服务端

apollo的使用很简单,服务端只需要下载安装包,并在mysql创建2个数据库即可。

下载:https://github.com/nobodyiam/apollo-build-scripts

创建数据库ApolloPortalDB 、ApolloConfigDB,语句有点长放在后面了。

创建好库后:修改demo.sh,配置数据库连接,并启动。

#apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可)

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)

启动脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用:

./demo.sh start

访问Apollo配置中心http://localhost:8070 ,默认用户名密码apollo/admin.

2.搭建客户端

引入依赖:

<dependency>
	<groupId>com.ctrip.framework.apollo</groupId>
	<artifactId>apollo-client</artifactId>
	<version>1.1.0</version>
</dependency>

接入Apollo配置:

#注入默认 application namespace
apollo:
	bootstrap:
		enabled: true
		#指明application namespace,如果使用默认,删除此行即可
		namespaces: application,FX.apollo,application.yml
		eagerLoad:
			enabled: true
			#Apollo的加载顺序是否放在日志系统加载之前
			#(会导致Apollo的启动过程无法通过日志的方式输出)

3.ApolloPortalDB.sql

  • ApolloPortalDB.sql
/*!40101 SET >@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

# Create Database
# ------------------------------------------------------------
CREATE DATABASE IF NOT EXISTS ApolloConfigDB DEFAULT CHARACTER SET = utf8mb4;

Use ApolloConfigDB;

# Dump of table app
# ------------------------------------------------------------

DROP TABLE IF EXISTS `App`;

CREATE TABLE `App` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名',
 `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id',
 `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字',
 `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName',
 `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `AppId` (`AppId`(191)),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_Name` (`Name`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用表';



# Dump of table appnamespace
# ------------------------------------------------------------

DROP TABLE IF EXISTS `AppNamespace`;

CREATE TABLE `AppNamespace` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `Name` varchar(32) NOT NULL DEFAULT '' COMMENT 'namespace名字,注意,需要全局唯一',
 `AppId` varchar(32) NOT NULL DEFAULT '' COMMENT 'app id',
 `Format` varchar(32) NOT NULL DEFAULT 'properties' COMMENT 'namespace的format类型',
 `IsPublic` bit(1) NOT NULL DEFAULT b'0' COMMENT 'namespace是否为公共',
 `Comment` varchar(64) NOT NULL DEFAULT '' COMMENT '注释',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_AppId` (`AppId`),
 KEY `Name_AppId` (`Name`,`AppId`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用namespace定义';



# Dump of table audit
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Audit`;

CREATE TABLE `Audit` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `EntityName` varchar(50) NOT NULL DEFAULT 'default' COMMENT '表名',
 `EntityId` int(10) unsigned DEFAULT NULL COMMENT '记录ID',
 `OpName` varchar(50) NOT NULL DEFAULT 'default' COMMENT '操作类型',
 `Comment` varchar(500) DEFAULT NULL COMMENT '备注',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
`DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日志审计表';



# Dump of table cluster
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Cluster`;

CREATE TABLE `Cluster` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `Name` varchar(32) NOT NULL DEFAULT '' COMMENT '集群名字',
 `AppId` varchar(32) NOT NULL DEFAULT '' COMMENT 'App id',
 `ParentClusterId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '父cluster',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_AppId_Name` (`AppId`,`Name`),
 KEY `IX_ParentClusterId` (`ParentClusterId`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='集群';



# Dump of table commit
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Commit`;

CREATE TABLE `Commit` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `ChangeSets` longtext NOT NULL COMMENT '修改变更集',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `ClusterName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
 `NamespaceName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'namespaceName',
 `Comment` varchar(500) DEFAULT NULL COMMENT '备注',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `AppId` (`AppId`(191)),
 KEY `ClusterName` (`ClusterName`(191)),
 KEY `NamespaceName` (`NamespaceName`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='commit 历史表';

# Dump of table grayreleaserule
# ------------------------------------------------------------

DROP TABLE IF EXISTS `GrayReleaseRule`;

CREATE TABLE `GrayReleaseRule` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `AppId` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `ClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Cluster Name',
 `NamespaceName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Namespace Name',
 `BranchName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'branch name',
 `Rules` varchar(16000) DEFAULT '[]' COMMENT '灰度规则',
 `ReleaseId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '灰度对应的release',
 `BranchStatus` tinyint(2) DEFAULT '1' COMMENT '灰度分支状态: 0:删除分支,1:正在使用的规则 2:全量发布',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_Namespace` (`AppId`,`ClusterName`,`NamespaceName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='灰度规则表';


# Dump of table instance
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Instance`;

CREATE TABLE `Instance` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `AppId` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `ClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
 `DataCenter` varchar(64) NOT NULL DEFAULT 'default' COMMENT 'Data Center Name',
 `Ip` varchar(32) NOT NULL DEFAULT '' COMMENT 'instance ip',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 UNIQUE KEY `IX_UNIQUE_KEY` (`AppId`,`ClusterName`,`Ip`,`DataCenter`),
 KEY `IX_IP` (`Ip`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='使用配置的应用实例';



# Dump of table instanceconfig
# ------------------------------------------------------------

DROP TABLE IF EXISTS `InstanceConfig`;

CREATE TABLE `InstanceConfig` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `InstanceId` int(11) unsigned DEFAULT NULL COMMENT 'Instance Id',
 `ConfigAppId` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Config App Id',
 `ConfigClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Config Cluster Name',
 `ConfigNamespaceName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'Config Namespace Name',
 `ReleaseKey` varchar(64) NOT NULL DEFAULT '' COMMENT '发布的Key',
 `ReleaseDeliveryTime` timestamp NULL DEFAULT NULL COMMENT '配置获取时间',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 UNIQUE KEY `IX_UNIQUE_KEY` (`InstanceId`,`ConfigAppId`,`ConfigNamespaceName`),
 KEY `IX_ReleaseKey` (`ReleaseKey`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_Valid_Namespace` (`ConfigAppId`,`ConfigClusterName`,`ConfigNamespaceName`,`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用实例的配置信息';



# Dump of table item
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Item`;

CREATE TABLE `Item` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `NamespaceId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '集群NamespaceId',
 `Key` varchar(128) NOT NULL DEFAULT 'default' COMMENT '配置项Key',
 `Value` longtext NOT NULL COMMENT '配置项值',
 `Comment` varchar(1024) DEFAULT '' COMMENT '注释',
 `LineNum` int(10) unsigned DEFAULT '0' COMMENT '行号',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_GroupId` (`NamespaceId`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置项目';



# Dump of table namespace
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Namespace`;

CREATE TABLE `Namespace` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `ClusterName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'Cluster Name',
 `NamespaceName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'Namespace Name',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `AppId_ClusterName_NamespaceName` (`AppId`(191),`ClusterName`(191),`NamespaceName`(191)),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_NamespaceName` (`NamespaceName`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='命名空间';



# Dump of table namespacelock
# ------------------------------------------------------------

DROP TABLE IF EXISTS `NamespaceLock`;

CREATE TABLE `NamespaceLock` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
 `NamespaceId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '集群NamespaceId',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT 'default' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 `IsDeleted` bit(1) DEFAULT b'0' COMMENT '软删除',
 PRIMARY KEY (`Id`),
 UNIQUE KEY `IX_NamespaceId` (`NamespaceId`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='namespace的编辑锁';



# Dump of table release
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Release`;

CREATE TABLE `Release` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `ReleaseKey` varchar(64) NOT NULL DEFAULT '' COMMENT '发布的Key',
 `Name` varchar(64) NOT NULL DEFAULT 'default' COMMENT '发布名字',
 `Comment` varchar(256) DEFAULT NULL COMMENT '发布说明',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `ClusterName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
 `NamespaceName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'namespaceName',
 `Configurations` longtext NOT NULL COMMENT '发布配置',
 `IsAbandoned` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否废弃',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `AppId_ClusterName_GroupName` (`AppId`(191),`ClusterName`(191),`NamespaceName`(191)),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_ReleaseKey` (`ReleaseKey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布';


# Dump of table releasehistory
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ReleaseHistory`;

CREATE TABLE `ReleaseHistory` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `AppId` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `ClusterName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'ClusterName',
 `NamespaceName` varchar(32) NOT NULL DEFAULT 'default' COMMENT 'namespaceName',
 `BranchName` varchar(32) NOT NULL DEFAULT 'default' COMMENT '发布分支名',
 `ReleaseId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '关联的Release Id',
 `PreviousReleaseId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '前一次发布的ReleaseId',
 `Operation` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '发布类型,0: 普通发布,1: 回滚,2: 灰度发布,3: 灰度规则更新,4: 灰度合并回主分支发布,5: 主分支发布灰度自动发布,6: 主分支回滚灰度自动发布,7: 放弃灰度',
 `OperationContext` longtext NOT NULL COMMENT '发布上下文信息',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_Namespace` (`AppId`,`ClusterName`,`NamespaceName`,`BranchName`),
 KEY `IX_ReleaseId` (`ReleaseId`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布历史';


# Dump of table releasemessage
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ReleaseMessage`;

CREATE TABLE `ReleaseMessage` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `Message` varchar(1024) NOT NULL DEFAULT '' COMMENT '发布的消息内容',
 `DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_Message` (`Message`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布消息';



# Dump of table serverconfig
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ServerConfig`;

CREATE TABLE `ServerConfig` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `Key` varchar(64) NOT NULL DEFAULT 'default' COMMENT '配置项Key',
 `Cluster` varchar(32) NOT NULL DEFAULT 'default' COMMENT '配置对应的集群,default为不针对特定的集群',
 `Value` varchar(2048) NOT NULL DEFAULT 'default' COMMENT '配置项值',
 `Comment` varchar(1024) DEFAULT '' COMMENT '注释',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_Key` (`Key`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置服务自身配置';

# Config
# ------------------------------------------------------------
INSERT INTO `ServerConfig` (`Key`, `Cluster`, `Value`, `Comment`) VALUES 
	('eureka.service.url', 'default', 'http://localhost:8080/eureka/', 'Eureka服务Url,多个service以英文逗号分隔'), 
	('namespace.lock.switch', 'default', 'false', '一次发布只能有一个人修改开关'), 
	('item.value.length.limit', 'default', '20000', 'item value最大长度限制'), 
	('config-service.cache.enabled', 'default', 'false', 'ConfigService是否开启缓存,开启后能提高性能,但是会增大内存消耗!'),  
	('item.key.length.limit', 'default', '128', 'item key 最大长度限制');

# Sample Data
# ------------------------------------------------------------
INSERT INTO `App` (`AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`) VALUES ('SampleApp', 'Sample App', 'TEST1', '样例部门1', 'apollo', 'apollo@acme.com');
INSERT INTO `AppNamespace` (`Name`, `AppId`, `Format`, `IsPublic`, `Comment`) VALUES ('application', 'SampleApp', 'properties', 0, 'default app namespace');
INSERT INTO `Cluster` (`Name`, `AppId`) VALUES ('default', 'SampleApp');
INSERT INTO `Namespace` (`Id`, `AppId`, `ClusterName`, `NamespaceName`) VALUES (1, 'SampleApp', 'default', 'application');
INSERT INTO `Item` (`NamespaceId`, `Key`, `Value`, `Comment`, `LineNum`) VALUES (1, 'timeout', '100', 'sample timeout配置', 1);
INSERT INTO `Release` (`ReleaseKey`, `Name`, `Comment`, `AppId`, `ClusterName`, `NamespaceName`, `Configurations`) VALUES ('20161009155425-d3a0749c6e20bc15', '20161009155424-release', 'Sample发布', 'SampleApp', 'default', 'application', '{\"timeout\":\"100\"}');
INSERT INTO `ReleaseHistory` (`AppId`, `ClusterName`, `NamespaceName`, `BranchName`, `ReleaseId`, `PreviousReleaseId`, `Operation`, `OperationContext`, `DataChange_CreatedBy`, `DataChange_LastModifiedBy`) VALUES ('SampleApp', 'default', 'application', 'default', 1, 0, 0, '{}', 'apollo', 'apollo');
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

4.ApolloConfigDB.sql

  • ApolloConfigDB.sql
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

# Create Database
# ------------------------------------------------------------
CREATE DATABASE IF NOT EXISTS ApolloPortalDB DEFAULT CHARACTER SET = utf8mb4;

Use ApolloPortalDB;

# Dump of table app
# ------------------------------------------------------------

DROP TABLE IF EXISTS `App`;

CREATE TABLE `App` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名',
 `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id',
 `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字',
 `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName',
 `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `AppId` (`AppId`(191)),
 KEY `DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_Name` (`Name`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用表';



# Dump of table appnamespace
# ------------------------------------------------------------

DROP TABLE IF EXISTS `AppNamespace`;

CREATE TABLE `AppNamespace` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `Name` varchar(32) NOT NULL DEFAULT '' COMMENT 'namespace名字,注意,需要全局唯一',
 `AppId` varchar(32) NOT NULL DEFAULT '' COMMENT 'app id',
 `Format` varchar(32) NOT NULL DEFAULT 'properties' COMMENT 'namespace的format类型',
 `IsPublic` bit(1) NOT NULL DEFAULT b'0' COMMENT 'namespace是否为公共',
 `Comment` varchar(64) NOT NULL DEFAULT '' COMMENT '注释',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_AppId` (`AppId`),
 KEY `Name_AppId` (`Name`,`AppId`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用namespace定义';



# Dump of table consumer
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Consumer`;

CREATE TABLE `Consumer` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `Name` varchar(500) NOT NULL DEFAULT 'default' COMMENT '应用名',
 `OrgId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '部门Id',
 `OrgName` varchar(64) NOT NULL DEFAULT 'default' COMMENT '部门名字',
 `OwnerName` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerName',
 `OwnerEmail` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'ownerEmail',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `AppId` (`AppId`(191)),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='开放API消费者';



# Dump of table consumeraudit
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ConsumerAudit`;

CREATE TABLE `ConsumerAudit` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `ConsumerId` int(11) unsigned DEFAULT NULL COMMENT 'Consumer Id',
 `Uri` varchar(1024) NOT NULL DEFAULT '' COMMENT '访问的Uri',
 `Method` varchar(16) NOT NULL DEFAULT '' COMMENT '访问的Method',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_ConsumerId` (`ConsumerId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='consumer审计表';



# Dump of table consumerrole
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ConsumerRole`;

CREATE TABLE `ConsumerRole` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `ConsumerId` int(11) unsigned DEFAULT NULL COMMENT 'Consumer Id',
 `RoleId` int(10) unsigned DEFAULT NULL COMMENT 'Role Id',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_RoleId` (`RoleId`),
 KEY `IX_ConsumerId_RoleId` (`ConsumerId`,`RoleId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='consumer和role的绑定表';



# Dump of table consumertoken
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ConsumerToken`;

CREATE TABLE `ConsumerToken` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `ConsumerId` int(11) unsigned DEFAULT NULL COMMENT 'ConsumerId',
 `Token` varchar(128) NOT NULL DEFAULT '' COMMENT 'token',
 `Expires` datetime NOT NULL DEFAULT '2099-01-01 00:00:00' COMMENT 'token失效时间',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 UNIQUE KEY `IX_Token` (`Token`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='consumer token表';

# Dump of table favorite
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Favorite`;

CREATE TABLE `Favorite` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
 `UserId` varchar(32) NOT NULL DEFAULT 'default' COMMENT '收藏的用户',
 `AppId` varchar(500) NOT NULL DEFAULT 'default' COMMENT 'AppID',
 `Position` int(32) NOT NULL DEFAULT '10000' COMMENT '收藏顺序',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `AppId` (`AppId`(191)),
 KEY `IX_UserId` (`UserId`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COMMENT='应用收藏表';

# Dump of table permission
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Permission`;

CREATE TABLE `Permission` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `PermissionType` varchar(32) NOT NULL DEFAULT '' COMMENT '权限类型',
 `TargetId` varchar(256) NOT NULL DEFAULT '' COMMENT '权限对象类型',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_TargetId_PermissionType` (`TargetId`(191),`PermissionType`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='permission表';



# Dump of table role
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Role`;

CREATE TABLE `Role` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `RoleName` varchar(256) NOT NULL DEFAULT '' COMMENT 'Role name',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_RoleName` (`RoleName`(191)),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';



# Dump of table rolepermission
# ------------------------------------------------------------

DROP TABLE IF EXISTS `RolePermission`;

CREATE TABLE `RolePermission` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `RoleId` int(10) unsigned DEFAULT NULL COMMENT 'Role Id',
 `PermissionId` int(10) unsigned DEFAULT NULL COMMENT 'Permission Id',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_RoleId` (`RoleId`),
 KEY `IX_PermissionId` (`PermissionId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和权限的绑定表';



# Dump of table serverconfig
# ------------------------------------------------------------

DROP TABLE IF EXISTS `ServerConfig`;

CREATE TABLE `ServerConfig` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `Key` varchar(64) NOT NULL DEFAULT 'default' COMMENT '配置项Key',
 `Value` varchar(2048) NOT NULL DEFAULT 'default' COMMENT '配置项值',
 `Comment` varchar(1024) DEFAULT '' COMMENT '注释',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) NOT NULL DEFAULT 'default' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE >CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_Key` (`Key`),
 KEY `DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置服务自身配置';



# Dump of table userrole
# ------------------------------------------------------------

DROP TABLE IF EXISTS `UserRole`;

CREATE TABLE `UserRole` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `UserId` varchar(128) DEFAULT '' COMMENT '用户身份标识',
 `RoleId` int(10) unsigned DEFAULT NULL COMMENT 'Role Id',
 `IsDeleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '1: deleted, 0: normal',
 `DataChange_CreatedBy` varchar(32) DEFAULT '' COMMENT '创建人邮箱前缀',
 `DataChange_CreatedTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `DataChange_LastModifiedBy` varchar(32) DEFAULT '' COMMENT '最后修改人邮箱前缀',
 `DataChange_LastTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE >CURRENT_TIMESTAMP COMMENT '最后修改时间',
 PRIMARY KEY (`Id`),
 KEY `IX_DataChange_LastTime` (`DataChange_LastTime`),
 KEY `IX_RoleId` (`RoleId`),
 KEY `IX_UserId_RoleId` (`UserId`,`RoleId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户和role的绑定表';

# Dump of table Users
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Users`;

CREATE TABLE `Users` (
 `Id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `Username` varchar(64) NOT NULL DEFAULT 'default' COMMENT '用户名',
 `Password` varchar(64) NOT NULL DEFAULT 'default' COMMENT '密码',
 `Email` varchar(64) NOT NULL DEFAULT 'default' COMMENT '邮箱地址',
 `Enabled` tinyint(4) DEFAULT NULL COMMENT '是否有效',
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';


# Dump of table Authorities
# ------------------------------------------------------------

DROP TABLE IF EXISTS `Authorities`;

CREATE TABLE `Authorities` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增Id',
 `Username` varchar(64) NOT NULL,
 `Authority` varchar(50) NOT NULL,
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


# Config
# ------------------------------------------------------------
INSERT INTO `ServerConfig` (`Key`, `Value`, `Comment`)
VALUES
   ('apollo.portal.envs', 'dev', '可支持的环境列表'),
   ('organizations', '[{\"orgId\":\"TEST1\",\"orgName\":\"样例部门1\"},{\"orgId\":\"TEST2\",\"orgName\":\"样例部门2\"}]', '部门列表'),
   ('superAdmin', 'apollo', 'Portal超级管理员'),
   ('api.readTimeout', '10000', 'http接口read timeout'),
   ('consumer.token.salt', 'someSalt', 'consumer token salt'),
   ('admin.createPrivateNamespace.switch', 'true', '是否允许项目管理员创建私有namespace'),
   ('configView.memberOnly.envs', 'dev', '只对项目成员显示配置信息的环境列表,多个env以英文逗号分隔');

INSERT INTO `Users` (`Username`, `Password`, `Email`, `Enabled`) VALUES ('apollo', '$2a$10$7r20uS.BQ9uBpf3Baj3uQOZvMVvB1RN3PYoKE94gtz2.WAOuiiwXS', 'apollo@acme.com', 1);
INSERT INTO `Authorities` (`Username`, `Authority`) VALUES ('apollo', 'ROLE_user');

# Sample Data
# ------------------------------------------------------------
INSERT INTO `App` (`AppId`, `Name`, `OrgId`, `OrgName`, `OwnerName`, `OwnerEmail`) VALUES ('SampleApp', 'Sample App', 'TEST1', '样例部门1', 'apollo', 'apollo@acme.com');
INSERT INTO `AppNamespace` (`Name`, `AppId`, `Format`, `IsPublic`, `Comment`) VALUES ('application', 'SampleApp', 'properties', 0, 'default app namespace');
INSERT INTO `Permission` (`Id`, `PermissionType`, `TargetId`) VALUES
	(1, 'CreateCluster', 'SampleApp'),
	(2, 'CreateNamespace', 'SampleApp'),
	(3, 'AssignRole', 'SampleApp'),
	(4, 'ModifyNamespace', 'SampleApp+application'),
	(5, 'ReleaseNamespace', 'SampleApp+application');
INSERT INTO `Role` (`Id`, `RoleName`)
VALUES
	(1, 'Master+SampleApp'),
	(2, 'ModifyNamespace+SampleApp+application'),
	(3, 'ReleaseNamespace+SampleApp+application');
INSERT INTO `RolePermission` (`RoleId`, `PermissionId`) VALUES (1, 1), (1, 2), (1, 3), (2, 4), (3, 5);
INSERT INTO `UserRole` (`UserId`, `RoleId`) VALUES ('apollo', 1), ('apollo', 2), ('apollo', 3);

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值