当前位置: 首页 > news >正文

网站建设总体要求上小学网站建设

网站建设总体要求,上小学网站建设,科技公司有哪些,引擎网站Apollo#xff08;阿波罗#xff09; Apollo#xff08;阿波罗#xff09;是携程框架部门研发的分布式配置中心#xff0c;能够集中化管理应用不同环境、不同集群的配置#xff0c;配置修改后能够实时推送到应用端#xff0c;并且具备规范的权限、流程治理等特性#…Apollo阿波罗 Apollo阿波罗是携程框架部门研发的分布式配置中心能够集中化管理应用不同环境、不同集群的配置配置修改后能够实时推送到应用端并且具备规范的权限、流程治理等特性适用于微服务配置管理场景。 服务端基于Spring Boot和Spring Cloud开发打包后可以直接运行不需要额外安装Tomcat等应用容器。 Java客户端不依赖任何框架能够运行于所有Java运行时环境同时对Spring/Spring Boot环境也有较好的支持。 .Net客户端不依赖任何框架能够运行于所有.Net运行时环境。 官方 GitHub https://github.com/ctripcorp/apollo 官方 Gitee https://gitee.com/nobodyiam/apollo 安装部署 数据库建表 建表 sql apolloportaldb.sql /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET OLD_CHARACTER_SET_RESULTSCHARACTER_SET_RESULTS */; /*!40101 SET OLD_COLLATION_CONNECTIONCOLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40014 SET OLD_FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS0 */; /*!40101 SET OLD_SQL_MODESQL_MODE, SQL_MODENO_AUTO_VALUE_ON_ZERO */; /*!40111 SET OLD_SQL_NOTESSQL_NOTES, SQL_NOTES0 */;# 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 b0 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)) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 COMMENT namespace是否为公共,Comment varchar(64) NOT NULL DEFAULT COMMENT 注释,IsDeleted bit(1) NOT NULL DEFAULT b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTconsumer审计表;# 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTconsumer和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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTconsumer 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 b0 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) ) ENGINEInnoDB AUTO_INCREMENT23 DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTpermission表;# 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;# 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, apolloacme.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, apolloacme.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, SampleAppapplication),(5, ReleaseNamespace, SampleAppapplication);INSERT INTO Role (Id, RoleName) VALUES(1, MasterSampleApp),(2, ModifyNamespaceSampleAppapplication),(3, ReleaseNamespaceSampleAppapplication);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_NOTESOLD_SQL_NOTES */; /*!40101 SET SQL_MODEOLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKSOLD_FOREIGN_KEY_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENTOLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTSOLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTIONOLD_COLLATION_CONNECTION */;apolloconfigdb.sql /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET OLD_CHARACTER_SET_RESULTSCHARACTER_SET_RESULTS */; /*!40101 SET OLD_COLLATION_CONNECTIONCOLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40014 SET OLD_FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS0 */; /*!40101 SET OLD_SQL_MODESQL_MODE, SQL_MODENO_AUTO_VALUE_ON_ZERO */; /*!40111 SET OLD_SQL_NOTESSQL_NOTES, SQL_NOTES0 */;# 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 b0 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)) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 COMMENT namespace是否为公共,Comment varchar(64) NOT NULL DEFAULT COMMENT 注释,IsDeleted bit(1) NOT NULL DEFAULT b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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)) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTcommit 历史表;# 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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)) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 COMMENT 软删除,PRIMARY KEY (Id),UNIQUE KEY IX_NamespaceId (NamespaceId),KEY DataChange_LastTime (DataChange_LastTime) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTnamespace的编辑锁;# 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 b0 COMMENT 是否废弃,IsDeleted bit(1) NOT NULL DEFAULT b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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)) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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 b0 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) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT配置服务自身配置;# Dump of table accesskey # ------------------------------------------------------------DROP TABLE IF EXISTS AccessKey;CREATE TABLE AccessKey (Id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 自增主键,AppId varchar(500) NOT NULL DEFAULT default COMMENT AppID,Secret varchar(128) NOT NULL DEFAULT COMMENT Secret,IsEnabled bit(1) NOT NULL DEFAULT b0 COMMENT 1: enabled, 0: disabled,IsDeleted bit(1) NOT NULL DEFAULT b0 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) NOT NULL DEFAULT COMMENT 最后修改人邮箱前缀,DataChange_LastTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 最后修改时间,PRIMARY KEY (Id),KEY AppId (AppId(191)),KEY DataChange_LastTime (DataChange_LastTime) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 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, apolloacme.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);INSERT INTO ReleaseMessage (Message) VALUES(SampleAppdefaultapplication);/*!40111 SET SQL_NOTESOLD_SQL_NOTES */; /*!40101 SET SQL_MODEOLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKSOLD_FOREIGN_KEY_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENTOLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTSOLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTIONOLD_COLLATION_CONNECTION */;Apollo包 portal后台配置管理页面 config提供配置的读取、推送等功能 admin提供配置的修改、发布等功能 修改配置 # DataSource spring.datasource.url jdbc:mysql://192.168.29.1:3306/ApolloPortalDB?characterEncodingutf8serverTimezoneAsia/Shanghai spring.datasource.username root spring.datasource.password 840416启动顺序 使用 部门管理 修改数据库 ApolloPortalDB ServiceConfig中的organizations Java介入 依赖 !-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client -- dependencygroupIdcom.ctrip.framework.apollo/groupIdartifactIdapollo-client/artifactIdversion1.7.0/version /dependency 配置文件 app.id001spring.application.nameprovider apollo.metahttp://192.168.150.134:8080 apollo.bootstrap.enabledtrue apollo.bootstrap.namespacesapplicationapollo.accesskey.secret80882e6ffc524b9e8bc65664fbf95dfb测试controller RestController public class MainController {Value(${GirlName})private String gn;GetMapping(/)public String list() {System.out.println(gn);return 11 gn;}} 事件监听 Configuration public class ApolloConfig {Beanpublic void config() {// config instance is singleton for each namespace and is never nullConfig config ConfigService.getAppConfig();config.addChangeListener(changeEvent - {System.out.println(Changes for namespace changeEvent.getNamespace());for (String key : changeEvent.changedKeys()) {ConfigChange change changeEvent.getChange(key);System.out.println(String.format(Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s, change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));}});} }本地缓存 /opt/data/{appId}/config-cache Windows下 C:\opt\data{appId}\config-cacheWhat is Apollo 1.1 背景 随着程序功能的日益复杂程序的配置日益增多各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高配置修改后实时生效灰度发布分环境、分集群管理配置完善的权限、审核机制…… 在这样的大环境下传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。 Apollo配置中心应运而生 1.2 Apollo简介 Apollo阿波罗是携程框架部门研发的开源配置管理中心能够集中化管理应用不同环境、不同集群的配置配置修改后能够实时推送到应用端并且具备规范的权限、流程治理等特性。 Apollo支持4个维度管理Key-Value格式的配置 application (应用)environment (环境)cluster (集群)namespace (命名空间) 同时Apollo基于开源模式开发开源地址https://github.com/ctripcorp/apollo 1.2 配置基本概念 既然Apollo定位于配置中心那么在这里有必要先简单介绍一下什么是配置。 按照我们的理解配置有以下几个属性 配置是独立于程序的只读变量 配置首先是独立于程序的同一份程序在不同的配置下会有不同的行为。其次配置对于程序是只读的程序通过读取配置来改变自己的行为但是程序不应该去改变配置。常见的配置有DB Connection Str、Thread Pool Size、Buffer Size、Request Timeout、Feature Switch、Server Urls等。 配置伴随应用的整个生命周期 配置贯穿于应用的整个生命周期应用在启动时通过读取配置来初始化在运行时根据配置调整行为。 配置可以有多种加载方式 配置也有很多种加载方式常见的有程序内部hard code配置文件环境变量启动参数基于数据库等 配置需要治理 权限控制 由于配置能改变程序的行为不正确的配置甚至能引起灾难所以对配置的修改必须有比较完善的权限控制 不同环境、集群配置管理 同一份程序在不同的环境开发测试生产、不同的集群如不同的数据中心经常需要有不同的配置所以需要有完善的环境、集群配置管理 框架类组件配置管理 还有一类比较特殊的配置 - 框架类组件配置比如CAT客户端的配置。虽然这类框架类组件是由其他团队开发、维护但是运行时是在业务实际应用内的所以本质上可以认为框架类组件也是应用的一部分。这类组件对应的配置也需要有比较完善的管理方式。 2、Why Apollo 正是基于配置的特殊性所以Apollo从设计之初就立志于成为一个有治理能力的配置发布平台目前提供了以下的特性 统一管理不同环境、不同集群的配置 Apollo提供了一个统一界面集中式管理不同环境environment、不同集群cluster、不同命名空间namespace的配置。同一份代码部署在不同的集群可以有不同的配置比如zookeeper的地址等通过命名空间namespace可以很方便地支持多个不同应用共享同一份配置同时还允许应用对共享的配置进行覆盖 配置修改实时生效热发布 用户在Apollo修改完配置并发布后客户端能实时1秒接收到最新的配置并通知到应用程序 版本发布管理 所有的配置发布都有版本概念从而可以方便地支持配置的回滚 灰度发布 支持配置的灰度发布比如点了发布后只对部分应用实例生效等观察一段时间没问题后再推给所有应用实例 权限管理、发布审核、操作审计 应用和配置的管理都有完善的权限管理机制对配置的管理还分为了编辑和发布两个环节从而减少人为的错误。所有的操作都有审计日志可以方便地追踪问题 客户端配置信息监控 可以在界面上方便地看到配置在被哪些实例使用 提供Java和.Net原生客户端 提供了Java和.Net的原生客户端方便应用集成支持Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties方便应用使用需要Spring 3.1.1同时提供了Http接口非Java和.Net应用也可以方便地使用 提供开放平台API Apollo自身提供了比较完善的统一配置管理界面支持多环境、多数据中心配置管理、权限、流程治理等特性。不过Apollo出于通用性考虑不会对配置的修改做过多限制只要符合基本的格式就能保存不会针对不同的配置值进行针对性的校验如数据库用户名、密码Redis服务地址等对于这类应用配置Apollo支持应用方通过开放平台API在Apollo进行配置的修改和发布并且具备完善的授权和权限控制 部署简单 配置中心作为基础服务可用性要求非常高这就要求Apollo对外部依赖尽可能地少目前唯一的外部依赖是MySQL所以部署非常简单只要安装好Java和MySQL就可以让Apollo跑起来Apollo还提供了打包脚本一键就可以生成所有需要的安装包并且支持自定义运行时参数 Apollo at a glance 3.1 基础模型 如下即是Apollo的基础模型 用户在配置中心对配置进行修改并发布配置中心通知Apollo客户端有配置更新Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用 3.2 界面概览 上图是Apollo配置中心中一个项目的配置首页 在页面左上方的环境列表模块展示了所有的环境和集群用户可以随时切换。页面中央展示了两个namespace(application和FX.apollo)的配置信息默认按照表格模式展示、编辑。用户也可以切换到文本模式以文件形式查看、编辑。页面上可以方便地进行发布、回滚、灰度、授权、查看更改历史和发布历史等操作 3.3 添加/修改配置项 用户可以通过配置中心界面方便的添加/修改配置项更多使用说明请参见应用接入指南 输入配置信息 3.4 发布配置 通过配置中心发布配置 填写发布信息 3.5 客户端获取配置Java API样例 配置发布后就能在客户端获取到了以Java为例获取配置的示例代码如下。Apollo客户端还支持和Spring整合更多客户端使用说明请参见Java客户端使用指南和.Net客户端使用指南。 Config config ConfigService.getAppConfig(); Integer defaultRequestTimeout 200; Integer requestTimeout config.getIntProperty(requestTimeout, defaultRequestTimeout);3.6 客户端监听配置变化 通过上述获取配置代码应用就能实时获取到最新的配置了。 不过在某些场景下应用还需要在配置变化时获得通知比如数据库连接的切换等所以Apollo还提供了监听配置变化的功能Java示例如下 Config config ConfigService.getAppConfig(); config.addChangeListener(new ConfigChangeListener() {Overridepublic void onChange(ConfigChangeEvent changeEvent) {for (String key : changeEvent.changedKeys()) {ConfigChange change changeEvent.getChange(key);System.out.println(String.format(Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s,change.getPropertyName(), change.getOldValue(),change.getNewValue(), change.getChangeType()));}} });3.7 Spring集成样例 Apollo和Spring也可以很方便地集成只需要标注EnableApolloConfig后就可以通过Value获取配置信息 Configuration EnableApolloConfig public class AppConfig {} Component public class SomeBean {//timeout的值会自动更新Value(${request.timeout:200})private int timeout; }4、Apollo in depth 通过上面的介绍相信大家已经对Apollo有了一个初步的了解并且相信已经覆盖到了大部分的使用场景。 接下来会主要介绍Apollo的cluster管理集群、namespace管理命名空间和对应的配置获取规则。 4.1 Core Concepts 核心概念 在介绍高级特性前我们有必要先来了解一下Apollo中的几个核心概念 application (应用) 这个很好理解就是实际使用配置的应用Apollo客户端在运行时需要知道当前应用是谁从而可以去获取对应的配置每个应用都需要有唯一的身份标识 – appId我们认为应用身份是跟着代码走的所以需要在代码中配置具体信息请参见Java客户端使用指南。 environment (环境) 配置对应的环境Apollo客户端在运行时需要知道当前应用处于哪个环境从而可以去获取应用的配置我们认为环境和代码无关同一份代码部署在不同的环境就应该能够获取到不同环境的配置所以环境默认是通过读取机器上的配置server.properties中的env属性指定的不过为了开发方便我们也支持运行时通过System Property等指定具体信息请参见Java客户端使用指南。 cluster (集群) 一个应用下不同实例的分组比如典型的可以按照数据中心分把上海机房的应用实例分为一个集群把北京机房的应用实例分为另一个集群。对不同的cluster同一个配置可以有不一样的值如zookeeper地址。集群默认是通过读取机器上的配置server.properties中的idc属性指定的不过也支持运行时通过System Property指定具体信息请参见Java客户端使用指南。 namespace (命名空间) 一个应用下不同配置的分组可以简单地把namespace类比为文件不同类型的配置存放在不同的文件中如数据库配置文件RPC配置文件应用自身的配置文件等应用可以直接读取到公共组件的配置namespace如DALRPC等应用也可以通过继承公共组件的配置namespace来对公共组件的配置做调整如DAL的初始数据库连接数 4.2 自定义Cluster 【本节内容仅对应用需要对不同集群应用不同配置才需要如没有相关需求可以跳过本节】 比如我们有应用在A数据中心和B数据中心都有部署那么如果希望两个数据中心的配置不一样的话我们可以通过新建cluster来解决。 4.2.1 新建Cluster 新建Cluster只有项目的管理员才有权限管理员可以在页面左侧看到“添加集群”按钮。 点击后就进入到集群添加页面一般情况下可以按照数据中心来划分集群如SHAJQ、SHAOY等。 不过也支持自定义集群比如可以为A机房的某一台机器和B机房的某一台机创建一个集群使用一套配置。 4.2.2 在Cluster中添加配置并发布 集群添加成功后就可以为该集群添加配置了首先需要按照下图所示切换到SHAJQ集群之后配置添加流程和3.2添加/修改配置项一样这里就不再赘述了。 4.2.3 指定应用实例所属的Cluster Apollo会默认使用应用实例所在的数据中心作为cluster所以如果两者一致的话不需要额外配置。 如果cluster和数据中心不一致的话那么就需要通过System Property方式来指定运行时cluster -Dapollo.clusterSomeCluster这里注意apollo.cluster为全小写 4.3 自定义Namespace 【本节仅对公共组件配置或需要多个应用共享配置才需要如没有相关需求可以跳过本节】 如果应用有公共组件如hermes-producercat-client等供其它应用使用就需要通过自定义namespace来实现公共组件的配置。 4.3.1 新建Namespace 以hermes-producer为例需要先新建一个namespace新建namespace只有项目的管理员才有权限管理员可以在页面左侧看到“添加Namespace”按钮。 点击后就进入namespace添加页面Apollo会把应用所属的部门作为namespace的前缀如FX。 4.3.2 关联到环境和集群 Namespace创建完需要选择在哪些环境和集群下使用 4.3.3 在Namespace中添加配置项 接下来在这个新建的namespace下添加配置项 添加完成后就能在FX.Hermes.Producer的namespace中看到配置。 4.3.4 发布namespace的配置 4.3.5 客户端获取Namespace配置 对自定义namespace的配置获取稍有不同需要程序传入namespace的名字。Apollo客户端还支持和Spring整合更多客户端使用说明请参见Java客户端使用指南和.Net客户端使用指南。 Config config ConfigService.getConfig(FX.Hermes.Producer); Integer defaultSenderBatchSize 200; Integer senderBatchSize config.getIntProperty(sender.batchsize, defaultSenderBatchSize);4.3.6 客户端监听Namespace配置变化 Config config ConfigService.getConfig(FX.Hermes.Producer); config.addChangeListener(new ConfigChangeListener() {Overridepublic void onChange(ConfigChangeEvent changeEvent) {System.out.println(Changes for namespace changeEvent.getNamespace());for (String key : changeEvent.changedKeys()) {ConfigChange change changeEvent.getChange(key);System.out.println(String.format(Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s,change.getPropertyName(), change.getOldValue(),change.getNewValue(), change.getChangeType()));}} });4.3.7 Spring集成样例 Configuration EnableApolloConfig(FX.Hermes.Producer) public class AppConfig {} Component public class SomeBean {//timeout的值会自动更新Value(${request.timeout:200})private int timeout; }4.4 配置获取规则 【本节仅当应用自定义了集群或namespace才需要如无相关需求可以跳过本节】 在有了cluster概念后配置的规则就显得重要了。 比如应用部署在A机房但是并没有在Apollo新建cluster这个时候Apollo的行为是怎样的 或者在运行时指定了clusterSomeCluster但是并没有在Apollo新建cluster这个时候Apollo的行为是怎样的 接下来就来介绍一下配置获取的规则。 4.4.1 应用自身配置的获取规则 当应用使用下面的语句获取配置时我们称之为获取应用自身的配置也就是应用自身的application namespace的配置。 Config config ConfigService.getAppConfig();对这种情况的配置获取规则简而言之如下 首先查找运行时cluster的配置通过apollo.cluster指定如果没有找到则查找数据中心cluster的配置如果还是没有找到则返回默认cluster的配置 图示如下 所以如果应用部署在A数据中心但是用户没有在Apollo创建cluster那么获取的配置就是默认clusterdefault的。 如果应用部署在A数据中心同时在运行时指定了SomeCluster但是没有在Apollo创建cluster那么获取的配置就是A数据中心cluster的配置如果A数据中心cluster没有配置的话那么获取的配置就是默认clusterdefault的。 4.4.2 公共组件配置的获取规则 以FX.Hermes.Producer为例hermes producer是hermes发布的公共组件。当使用下面的语句获取配置时我们称之为获取公共组件的配置。 Config config ConfigService.getConfig(FX.Hermes.Producer);对这种情况的配置获取规则简而言之如下 首先获取当前应用下的FX.Hermes.Producer namespace的配置然后获取hermes应用下FX.Hermes.Producer namespace的配置上面两部分配置的并集就是最终使用的配置如有key一样的部分以当前应用优先 图示如下 通过这种方式就实现了对框架类组件的配置管理框架组件提供方提供配置的默认值应用如果有特殊需求可以自行覆盖。 4.5 总体设计 上图简要描述了Apollo的总体设计我们可以从下往上看 Config Service提供配置的读取、推送等功能服务对象是Apollo客户端Admin Service提供配置的修改、发布等功能服务对象是Apollo Portal管理界面Config Service和Admin Service都是多实例、无状态部署所以需要将自己注册到Eureka中并保持心跳在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口Client通过域名访问Meta Server获取Config Service服务列表IPPort而后直接通过IPPort访问服务同时在Client侧会做load balance、错误重试Portal通过域名访问Meta Server获取Admin Service服务列表IPPort而后直接通过IPPort访问服务同时在Portal侧会做load balance、错误重试为了简化部署我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中 4.5.1 Why Eureka 为什么我们采用Eureka作为服务注册中心而不是使用传统的zk、etcd呢我大致总结了一下有以下几方面的原因 它提供了完整的Service Registry和Service Discovery实现 首先是提供了完整的实现并且也经受住了Netflix自己的生产环境考验相对使用起来会比较省心。 和Spring Cloud无缝集成 我们的项目本身就使用了Spring Cloud和Spring Boot同时Spring Cloud还有一套非常完善的开源代码来整合Eureka所以使用起来非常方便。另外Eureka还支持在我们应用自身的容器中启动也就是说我们的应用启动完之后既充当了Eureka的角色同时也是服务的提供者。这样就极大的提高了服务的可用性。这一点是我们选择Eureka而不是zk、etcd等的主要原因为了提高配置中心的可用性和降低部署复杂度我们需要尽可能地减少外部依赖。 Open Source 最后一点是开源由于代码是开源的所以非常便于我们了解它的实现原理和排查问题。 4.6 客户端设计 上图简要描述了Apollo客户端的实现原理 客户端和服务端保持了一个长连接从而能第一时间获得配置更新的推送。客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。 这是一个fallback机制为了防止推送机制失效导致配置不更新客户端定时拉取会上报本地版本所以一般情况下对于定时拉取的操作服务端都会返回304 - Not Modified定时频率默认为每5分钟拉取一次客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖单位为分钟。 客户端从Apollo配置中心服务端获取到应用的最新配置后会保存在内存中客户端会把从服务端获取到的配置在本地文件系统缓存一份 在遇到服务不可用或网络不通的时候依然能从本地恢复配置 应用程序从Apollo客户端获取最新的配置、订阅配置更新通知 4.6.1 配置更新推送实现 前面提到了Apollo客户端和服务端保持了一个长连接从而能第一时间获得配置更新的推送。 长连接实际上我们是通过Http Long Polling实现的具体而言 客户端发起一个Http请求到服务端服务端会保持住这个连接60秒 如果在60秒内有客户端关心的配置变化被保持住的客户端请求会立即返回并告知客户端有配置变化的namespace信息客户端会据此拉取对应namespace的最新配置如果在60秒内没有客户端关心的配置变化那么会返回Http状态码304给客户端 客户端在收到服务端请求后会立即重新发起连接回到第一步 考虑到会有数万客户端向服务端发起长连在服务端我们使用了async servlet(Spring DeferredResult)来服务Http Long Polling请求。 4.7 可用性考虑 配置中心作为基础服务可用性要求非常高下面的表格描述了不同场景下Apollo的可用性 场景影响降级原因某台config service下线无影响Config service无状态客户端重连其它config service所有config service下线客户端无法读取最新配置Portal无影响客户端重启时,可以读取本地缓存配置文件某台admin service下线无影响Admin service无状态Portal重连其它admin service所有admin service下线客户端无影响portal无法更新配置某台portal下线无影响Portal域名通过slb绑定多台服务器重试后指向可用的服务器全部portal下线客户端无影响portal无法更新配置某个数据中心下线无影响多数据中心部署数据完全同步Meta Server/Portal域名通过slb自动切换到其它存活的数据中心 5、Contribute to Apollo Apollo从开发之初就是以开源模式开发的所以也非常欢迎有兴趣、有余力的朋友一起加入进来。 服务端开发使用的是Java基于Spring Cloud和Spring Boot框架。客户端目前提供了Java和.Net两种实现。 Github地址https://github.com/ctripcorp/apollo 欢迎大家发起Pull Request
http://www.sczhlp.com/news/177575/

相关文章:

  • 无锡网站建设制作方案网站推广方式介绍
  • 推荐几个自学做衣服的网站用DW 做响应式网站
  • 本地搬家网站建设思路wordpress的分类目录
  • 云服务器搭建网站广东建网站的公司
  • 郑州网站运营软文写作经验是什么
  • wordpress网站响应速度插件深圳网站制作需要多少钱
  • 东营建设信息网站装修哪家好
  • 电子商务网站建设摘要旅游企业信息门户
  • 闵行工程建设网站营销宝
  • 网站开发要跑道吗鞍山 中企动力提供网站建设
  • 丹阳企业网站制作手机应用软件开发培训班
  • 制作网站用什么软件好浙江平台网站建设找哪家
  • 深圳网站建设-龙华信科网站建设运营计划
  • 外部网站 同意加载网站建设时怎么赚钱的
  • 做网站必备软件网站要懂代码
  • 莱芜网站建设自助建站优化如何制作网上商城
  • seo网站有优化培训班吗芭嘞seo
  • html5手机商城网站模板郴州旅游
  • 徐州网站建设专家浏览器网址导航网
  • 网站备案制度公司装修设计工程
  • 庆阳市建设局海绵城市网站管理咨询公司名称大全
  • 如何判断网站有cdn加速在线制作app下载
  • 如何做棋牌网站深圳网站建设网站制作网站推广
  • 建设网站建设广告网站
  • 做网站需要交钱吗物流公司做网站有用吗
  • 高碑店市建设局网站客户管理软件排名免费
  • 网站建设推广话术个人个体工商户查询
  • 网站开发 cms优化 英语
  • 外贸网站推广与优化地方性购物网站
  • 网站源码下载后怎么用怎样做网站呢