Saturn vip
Saturn包括兩大部分,Saturn Console和Saturn Executor。
Saturn Console部署
1.2 軟件準備
JDK : 1.7+
ZooKeeper: 3.4.6+ (建議使用ZooKeeper 3.4.6 (官網下載鏈接),更高版本未經驗證)
nodejs: 7.8.0+
2 開始部署
2.1 安裝ZooKeeper
按照官方文檔進行安裝。
2.2 安裝MySQL
當前Saturn支持2個數據庫:MySQL和H2。H2主要用於測試,生產環境推薦使用MySQL。MySQL主要用於存儲作業配置及配置歷史,系統配置,以及namespace及zk集羣信息等等。
關於MySQL的版本,沒有任何要求。
安裝MySQL,遵循MySQL的官方文檔進行這裏不作說明。
2.3 數據準備
下面操作是針對MySQL,對於H2可以仿照類似的做法。
2.3.1 database創建
數據庫的名字可以自行指定。下面是個例子:
CREATE DATABASE saturn CHARACTER SET utf8 COLLATE utf8_general_ci;
2.3.2 schema創建
從這裏獲取最新的schema.sql。如果希望獲得其他版本的schema,可以在源代碼的其他tag上獲取。
SET FOREIGN_KEY_CHECKS=0;
– Table structure for job_config
CREATE TABLE job_config
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘作業ID主鍵’,
job_name
varchar(255) NOT NULL COMMENT ‘作業名稱’,
namespace
varchar(255) NOT NULL COMMENT ‘命名空間’,
zk_list
varchar(255) DEFAULT NULL COMMENT ‘zookeeper連接列表’,
job_class
varchar(255) DEFAULT NULL COMMENT ‘作業類名’,
sharding_total_count
int(11) DEFAULT NULL COMMENT ‘作業分片總數’,
load_level
int(11) NOT NULL DEFAULT ‘1’ COMMENT ‘每個分片默認負荷’,
cron
varchar(255) DEFAULT NULL COMMENT ‘cron表達式’,
pause_period_date
text COMMENT ‘停止週期日期’,
pause_period_time
text COMMENT ‘停止週期時間’,
sharding_item_parameters
text COMMENT ‘分片序列號/參數對照表’,
job_parameter
text COMMENT ‘作業參數’,
monitor_execution
tinyint(1) DEFAULT ‘1’ COMMENT ‘監控異常’,
process_count_interval_seconds
int(11) DEFAULT NULL COMMENT ‘處理總數間隔秒數’,
concurrent_data_process_thread_count
int(11) DEFAULT NULL COMMENT ‘當前數據處理線程總數’,
fetch_data_count
int(11) DEFAULT NULL COMMENT ‘獲取到的數據總數’,
max_time_diff_seconds
int(11) DEFAULT NULL COMMENT ‘最大時間相差的秒數’,
monitor_port
int(11) DEFAULT NULL COMMENT ‘監控端口’,
failover
tinyint(1) DEFAULT NULL COMMENT ‘是否爲失效的作業’,
misfire
tinyint(1) DEFAULT NULL COMMENT ‘是否爲被錯過的作業(可能需要觸發重發)’,
job_sharding_strategy_class
varchar(255) DEFAULT NULL COMMENT ‘作業分片策略類’,
description
text COMMENT ‘作業描述’,
timeout_seconds
int(11) DEFAULT NULL COMMENT ‘超時秒數’,
show_normal_log
tinyint(1) DEFAULT NULL COMMENT ‘是否顯示正常日誌’,
channel_name
varchar(255) DEFAULT NULL COMMENT ‘渠道名稱’,
job_type
varchar(255) DEFAULT NULL COMMENT ‘作業類型’,
queue_name
text COMMENT ‘隊列名稱’,
create_by
varchar(255) DEFAULT NULL COMMENT ‘創建人’,
create_time
timestamp NULL DEFAULT NULL COMMENT ‘創建時間’,
last_update_by
varchar(255) DEFAULT NULL COMMENT ‘最近一次的更新人’,
last_update_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
prefer_list
text COMMENT ‘預分配列表’,
local_mode
tinyint(1) DEFAULT NULL COMMENT ‘是否啓用本地模式’,
use_disprefer_list
tinyint(1) DEFAULT NULL COMMENT ‘是否使用非preferList’,
use_serial
tinyint(1) DEFAULT NULL COMMENT ‘消息作業是否啓用串行消費,默認爲並行消費’,
backup1
varchar(255) DEFAULT NULL COMMENT ‘備用字段2’,
backup2
varchar(255) DEFAULT NULL COMMENT ‘備用字段3’,
backup3
varchar(255) DEFAULT NULL COMMENT ‘備用字段2’,
job_degree
tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘作業重要等級,0:沒有定義,1:非線上業務,2:簡單業務,3:一般業務,4:重要業務,5:核心業務’,
enabled_report
tinyint(1) DEFAULT NULL COMMENT ‘上報執行信息,1:開啓上報,0:不開啓上報,對於定時作業,默認開啓上報;對於消息作業,默認不開啓上報’,
dependencies
varchar(1000) DEFAULT NULL COMMENT ‘依賴的作業’,
groups
varchar(255) DEFAULT NULL COMMENT ‘所屬分組’,
timeout_4_alarm_seconds
int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘超時(告警)秒數’,
time_zone
varchar(255) NOT NULL DEFAULT ‘Asia/Shanghai’ COMMENT ‘時區’,
is_enabled
tinyint(1) DEFAULT ‘0’ COMMENT ‘是否啓用標誌’,
job_mode
varchar(255) DEFAULT NULL COMMENT ‘作業模式’,
custom_context
varchar(8192) DEFAULT NULL COMMENT ‘自定義語境參數’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_namespace_job_name
(namespace
,job_name
),
KEY idx_namespace
(namespace
),
KEY idx_zk_list
(zk_list
),
KEY idx_job_name
(job_name
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
– Table structure for job_config_history
CREATE TABLE job_config_history
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘作業ID主鍵’,
job_name
varchar(255) NOT NULL COMMENT ‘作業名稱’,
job_class
varchar(255) DEFAULT NULL COMMENT ‘作業類名’,
sharding_total_count
int(11) DEFAULT NULL COMMENT ‘作業分片總數’,
load_level
int(11) NOT NULL DEFAULT ‘1’ COMMENT ‘每個分片默認負荷’,
time_zone
varchar(255) DEFAULT NULL COMMENT ‘時區’,
cron
varchar(255) DEFAULT NULL COMMENT ‘cron表達式’,
pause_period_date
text COMMENT ‘停止週期日期’,
pause_period_time
text COMMENT ‘停止週期時間’,
sharding_item_parameters
text COMMENT ‘分片序列號/參數對照表’,
job_parameter
text COMMENT ‘作業參數’,
monitor_execution
tinyint(1) DEFAULT ‘1’ COMMENT ‘監控異常’,
process_count_interval_seconds
int(11) DEFAULT NULL COMMENT ‘處理總數間隔秒數’,
concurrent_data_process_thread_count
int(11) DEFAULT NULL COMMENT ‘當前數據處理線程總數’,
fetch_data_count
int(11) DEFAULT NULL COMMENT ‘獲取到的數據總數’,
max_time_diff_seconds
int(11) DEFAULT NULL COMMENT ‘最大時間相差的秒數’,
monitor_port
int(11) DEFAULT NULL COMMENT ‘監控端口’,
failover
tinyint(1) DEFAULT NULL COMMENT ‘是否爲失效的作業’,
misfire
tinyint(1) DEFAULT NULL COMMENT ‘是否爲被錯過的作業(可能需要觸發重發)’,
job_sharding_strategy_class
varchar(255) DEFAULT NULL COMMENT ‘作業分片策略類’,
description
text COMMENT ‘作業描述’,
timeout_4_alarm_seconds
int(11) DEFAULT NULL COMMENT ‘超時(告警)秒數’,
timeout_seconds
int(11) DEFAULT NULL COMMENT ‘超時(Kill線程/進程)秒數’,
show_normal_log
tinyint(1) DEFAULT NULL COMMENT ‘是否顯示正常日誌’,
channel_name
varchar(255) DEFAULT NULL COMMENT ‘渠道名稱’,
job_type
varchar(255) DEFAULT NULL COMMENT ‘作業類型’,
queue_name
text COMMENT ‘隊列名稱’,
create_by
varchar(255) DEFAULT NULL COMMENT ‘創建人’,
create_time
timestamp NULL DEFAULT NULL COMMENT ‘創建時間’,
last_update_by
varchar(255) DEFAULT NULL COMMENT ‘最近一次的更新人’,
last_update_time
timestamp NULL DEFAULT NULL COMMENT ‘最近一次的更新時間’,
namespace
varchar(255) NOT NULL COMMENT ‘命名空間’,
zk_list
varchar(255) DEFAULT NULL COMMENT ‘zookeeper連接列表’,
prefer_list
text COMMENT ‘預分配列表’,
local_mode
tinyint(1) DEFAULT NULL COMMENT ‘是否啓用本地模式’,
use_disprefer_list
tinyint(1) DEFAULT NULL COMMENT ‘是否使用非preferList’,
use_serial
tinyint(1) DEFAULT NULL COMMENT ‘消息作業是否啓用串行消費,默認爲並行消費’,
job_degree
tinyint(1) DEFAULT NULL COMMENT ‘作業重要等級,0:沒有定義,1:非線上業務,2:簡單業務,3:一般業務,4:重要業務,5:核心業務’,
enabled_report
tinyint(1) DEFAULT NULL COMMENT ‘上報執行信息,對於定時作業,默認開啓上報;對於消息作業,默認不開啓上報’,
groups
varchar(255) DEFAULT NULL COMMENT ‘所屬分組’,
dependencies
text COMMENT ‘依賴的作業’,
is_enabled
tinyint(1) DEFAULT ‘0’ COMMENT ‘是否啓用標誌’,
job_mode
varchar(255) DEFAULT NULL COMMENT ‘作業模式’,
custom_context
varchar(8192) DEFAULT NULL COMMENT ‘自定義語境參數’,
PRIMARY KEY (id
),
KEY job_name_idx
(job_name
),
KEY namespace_idx
(namespace
),
KEY zk_list_idx
(zk_list
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘作業配置歷史表’;
– Table structure for saturn_statistics
CREATE TABLE saturn_statistics
(
id
bigint(11) NOT NULL AUTO_INCREMENT COMMENT ‘統計表主鍵ID’,
name
varchar(255) NOT NULL COMMENT ‘統計名稱,例如top10FailJob’,
zklist
varchar(255) NOT NULL COMMENT ‘統計所屬zk集羣’,
result
longtext NOT NULL COMMENT ‘統計結果(json結構)’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
– Table structure for namespace_info
CREATE TABLE namespace_info
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
is_deleted
tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
create_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
created_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
last_update_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近更新時間’,
last_updated_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近更新人’,
namespace
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘域名’,
content
varchar(16383) NOT NULL DEFAULT ‘’ COMMENT ‘域名詳細信息內容’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_namespace_info_namespace
(namespace
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘域名信息表’;
– Table structure for sys_config
CREATE TABLE sys_config
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
property
varchar(255) NOT NULL COMMENT ‘屬性名’,
value
varchar(2000) NOT NULL COMMENT ‘屬性值’,
PRIMARY KEY (id
),
KEY property_idx
(property
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘系統配置表’;
– Table structure for zk_cluster_info
CREATE TABLE zk_cluster_info
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
is_deleted
tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
create_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
created_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
last_update_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近更新時間’,
last_updated_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近更新人’,
zk_cluster_key
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘集羣key值,唯一’,
alias
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘別名’,
connect_string
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘連接串’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_zk_cluster_info_zk_cluster_key
(zk_cluster_key
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘zk集羣信息表’;
– Table structure for namespace_zkcluster_mapping
CREATE TABLE namespace_zkcluster_mapping
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
is_deleted
tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
create_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
created_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
last_update_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近更新時間’,
last_updated_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近更新人’,
namespace
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘域名’,
name
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘業務組’,
zk_cluster_key
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘集羣key’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_namespace
(namespace
),
KEY idx_zk_cluster_key
(zk_cluster_key
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘域名集羣映射表’;
CREATE TABLE release_version_info
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
version_number
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘版本號’,
package_url
varchar(512) NOT NULL DEFAULT ‘’ COMMENT ‘發佈包所在的服務地址’,
check_code
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘發佈包完整性的校驗碼’,
version_desc
varchar(2048) DEFAULT ‘’ COMMENT ‘發佈包描述’,
create_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
created_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
last_update_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近更新時間’,
last_updated_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近更新人’,
is_deleted
tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_rvi_version_number
(version_number
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘Saturn發佈版本信息表’;
CREATE TABLE namespace_version_mapping
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主 鍵’,
namespace
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘域名’,
version_number
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘版本號’,
is_forced
tinyint(1) DEFAULT ‘0’ COMMENT ‘當前版本已經不低於該版本時,是否強制使用該配置版本:0,不強制;1,強制’,
create_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
created_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
last_update_time
timestamp NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近更新時間’,
last_updated_by
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近更新人’,
is_deleted
tinyint(1) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_nvm_namespace
(namespace
),
KEY idx_nvm_version_number
(version_number
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘域名版本配置表’;
CREATE TABLE temporary_shared_status
(
id
bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
status_key
varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘狀態鍵’,
status_value
varchar(4000) NOT NULL DEFAULT ‘’ COMMENT ‘狀態值’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_tss_status_key
(status_key
)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘共享狀態表’;
DROP TABLE IF EXISTS user
;
CREATE TABLE user
(
id
BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
user_name
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘用戶名’,
password
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘用戶密碼’,
real_name
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘用戶真實名字’,
employee_id
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘工號’,
email
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘郵箱’,
created_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
create_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
last_updated_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近一次的更新人’,
last_update_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
is_deleted
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_user_user_name
(user_name
),
KEY idx_user_is_deleted
(is_deleted
)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘用戶表’;
DROP TABLE IF EXISTS role
;
CREATE TABLE role
(
id
BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
role_key
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘角色標識’,
role_name
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘角色名’,
description
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘角色描述’,
created_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
create_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
last_updated_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近一次的更新人’,
last_update_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
is_deleted
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_role_role_key
(role_key
),
KEY idx_role_is_deleted
(is_deleted
)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘角色表’;
DROP TABLE IF EXISTS permission
;
CREATE TABLE permission
(
id
BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
permission_key
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘權限標識’,
permission_name
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘權限名’,
description
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘權限描述’,
created_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
create_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
last_updated_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近一次的更新人’,
last_update_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
is_deleted
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_permission_permission_key
(permission_key
),
KEY idx_permission_is_deleted
(is_deleted
)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘權限表’;
DROP TABLE IF EXISTS user_role
;
CREATE TABLE user_role
(
id
BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
user_name
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘用戶名’,
role_key
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘角色標識’,
namespace
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘域名’,
need_approval
TINYINT(4) NOT NULL DEFAULT ‘1’ COMMENT ‘是否需要審批:0,不需要審批;1,需要審批’,
created_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
create_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
last_updated_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近一次的更新人’,
last_update_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
is_deleted
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_user_role_key
(user_name
, role_key
, namespace
),
KEY idx_user_role_is_deleted
(is_deleted
)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘用戶角色關係表’;
DROP TABLE IF EXISTS role_permission
;
CREATE TABLE role_permission
(
id
BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
role_key
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘角色標識’,
permission_key
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘權限標識’,
created_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
create_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
last_updated_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近一次的更新人’,
last_update_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
is_deleted
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_user_permission_key
(role_key
, permission_key
),
KEY idx_user_permission_key
(is_deleted
)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘角色權限關係表’;
INSERT INTO user
(user_name
,password
) VALUES(‘admin’,‘admin’);
INSERT INTO user
(user_name
,password
) VALUES(‘guest’,‘guest’);
INSERT INTO user_role
(user_name
, role_key
, need_approval
) VALUES(‘admin’, ‘system_admin’, ‘0’);
INSERT INTO role
(role_key
) VALUES(‘system_admin’);
INSERT INTO role
(role_key
) VALUES(‘namespace_developer’);
INSERT INTO role
(role_key
) VALUES(‘namespace_admin’);
INSERT INTO permission
(permission_key
) VALUES(‘job:enable’);
INSERT INTO permission
(permission_key
) VALUES(‘job:batchEnable’);
INSERT INTO permission
(permission_key
) VALUES(‘job:disable’);
INSERT INTO permission
(permission_key
) VALUES(‘job:batchDisable’);
INSERT INTO permission
(permission_key
) VALUES(‘job:runAtOnce’);
INSERT INTO permission
(permission_key
) VALUES(‘job:stopAtOnce’);
INSERT INTO permission
(permission_key
) VALUES(‘job:remove’);
INSERT INTO permission
(permission_key
) VALUES(‘job:batchRemove’);
INSERT INTO permission
(permission_key
) VALUES(‘job:add’);
INSERT INTO permission
(permission_key
) VALUES(‘job:copy’);
INSERT INTO permission
(permission_key
) VALUES(‘job:import’);
INSERT INTO permission
(permission_key
) VALUES(‘job:export’);
INSERT INTO permission
(permission_key
) VALUES(‘job:update’);
INSERT INTO permission
(permission_key
) VALUES(‘job:batchSetPreferExecutors’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:restart’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:dump’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:extractOrRecoverTraffic’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:batchExtractOrRecoverTraffic’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:remove’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:batchRemove’);
INSERT INTO permission
(permission_key
) VALUES(‘executor:shardAllAtOnce’);
INSERT INTO permission
(permission_key
) VALUES(‘alarmCenter:setAbnormalJobRead’);
INSERT INTO permission
(permission_key
) VALUES(‘alarmCenter:setTimeout4AlarmJobRead’);
INSERT INTO permission
(permission_key
) VALUES(‘dashboard:cleanShardingCount’);
INSERT INTO permission
(permission_key
) VALUES(‘dashboard:cleanOneJobAnalyse’);
INSERT INTO permission
(permission_key
) VALUES(‘dashboard:cleanAllJobAnalyse’);
INSERT INTO permission
(permission_key
) VALUES(‘dashboard:cleanOneJobExecutorCount’);
INSERT INTO permission
(permission_key
) VALUES(‘registryCenter:addNamespace’);
INSERT INTO permission
(permission_key
) VALUES(‘registryCenter:batchMoveNamespaces’);
INSERT INTO permission
(permission_key
) VALUES(‘registryCenter:exportNamespaces’);
INSERT INTO permission
(permission_key
) VALUES(‘registryCenter:addZkCluster’);
INSERT INTO permission
(permission_key
) VALUES(‘systemConfig’);
INSERT INTO permission
(permission_key
) VALUES(‘authorizationManage’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:enable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:batchEnable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:disable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:batchDisable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:runAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:stopAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:remove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:batchRemove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:add’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:copy’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:import’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:export’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:update’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘job:batchSetPreferExecutors’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:restart’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:dump’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:extractOrRecoverTraffic’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:batchExtractOrRecoverTraffic’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:remove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:batchRemove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘executor:shardAllAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘alarmCenter:setAbnormalJobRead’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘alarmCenter:setTimeout4AlarmJobRead’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘dashboard:cleanShardingCount’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘dashboard:cleanOneJobAnalyse’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘dashboard:cleanAllJobAnalyse’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘dashboard:cleanOneJobExecutorCount’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘registryCenter:addNamespace’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘registryCenter:batchMoveNamespaces’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘registryCenter:exportNamespaces’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘registryCenter:addZkCluster’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘systemConfig’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘system_admin’, ‘authorizationManage’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘job:enable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘job:batchEnable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘job:disable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘job:batchDisable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘job:stopAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘alarmCenter:setAbnormalJobRead’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_developer’, ‘alarmCenter:setTimeout4AlarmJobRead’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:enable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:batchEnable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:disable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:batchDisable’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:runAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:stopAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:remove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:batchRemove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:add’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:copy’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:import’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:export’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:update’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘job:batchSetPreferExecutors’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:restart’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:dump’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:extractOrRecoverTraffic’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:batchExtractOrRecoverTraffic’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:remove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:batchRemove’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘executor:shardAllAtOnce’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘alarmCenter:setAbnormalJobRead’);
INSERT INTO role_permission
(role_key
, permission_key
) VALUES(‘namespace_admin’, ‘alarmCenter:setTimeout4AlarmJobRead’);
– 3.0.1 update
ALTER TABLE role
ADD is_relating_to_namespace
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否關聯域:0,不關聯;1,關聯’;
ALTER TABLE user_role
ADD KEY idx_user_role_u_r_n_n_i
(user_name
, role_key
, namespace
, need_approval
, is_deleted
);
ALTER TABLE user_role
ADD KEY idx_user_role_r_n_n_i
(role_key
, namespace
, need_approval
, is_deleted
);
ALTER TABLE user_role
ADD KEY idx_user_role_n_n_i
(namespace
, need_approval
, is_deleted
);
ALTER TABLE user_role
ADD KEY idx_user_role_n_i
(need_approval
, is_deleted
);
UPDATE role
SET role_name
=‘系統管理’, is_relating_to_namespace
=‘0’ WHERE role_key
=‘system_admin’;
UPDATE role
SET role_name
=‘域開發管理’, is_relating_to_namespace
=‘1’ WHERE role_key
=‘namespace_developer’;
UPDATE role
SET role_name
=‘域管理’, is_relating_to_namespace
=‘1’ WHERE role_key
=‘namespace_admin’;
– 3.2.0 update
ALTER TABLE job_config
ADD rerun
tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否重跑標誌’;
– 3.3.0 update
ALTER TABLE zk_cluster_info
ADD description
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘集羣描述’;
ALTER TABLE job_config
ADD up_stream
VARCHAR(1000) NOT NULL DEFAULT ‘’ COMMENT ‘上游作業’,ADD down_stream
VARCHAR(1000) NOT NULL DEFAULT ‘’ COMMENT ‘下游作業’;
ALTER TABLE namespace_info
ADD bus_id
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘業務組id’;
CREATE TABLE saturn_dashboard_history
(
id
BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’,
zk_cluster
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘所屬zk集羣’,
record_type
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘類型’,
topic
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘主題’,
content
LONGTEXT COMMENT ‘內容’,
record_date
DATE COMMENT ‘記錄日期’,
created_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘創建人’,
create_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ COMMENT ‘創建時間’,
last_updated_by
VARCHAR(255) NOT NULL DEFAULT ‘’ COMMENT ‘最近一次的更新人’,
last_update_time
TIMESTAMP NOT NULL DEFAULT ‘1980-01-01 00:00:00’ ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最近一次的更新時間’,
is_deleted
TINYINT(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否刪除:0,未刪除;1,刪除’,
PRIMARY KEY (id
),
UNIQUE KEY uniq_dashboard_history_zk_cluster_record_type_topic_record_date
(zk_cluster
, record_type
, topic
, record_date
)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT =‘dashboard歷史記錄表’;
INSERT INTO sys_config
(property
, value
) VALUES(‘MAX_JOB_NUM’, ‘100’);
INSERT INTO sys_config
(property
, value
) VALUES(‘INTERVAL_TIME_OF_ENABLED_REPORT’, ‘5’);
INSERT INTO sys_config
(property
, value
) VALUES(‘ALARM_RAISED_ON_EXECUTOR_RESTART’, ‘false’);
INSERT INTO sys_config
(property
, value
) VALUES(‘MAX_SECONDS_FORCE_KILL_EXECUTOR’, ‘300’);
INSERT INTO sys_config
(property
, value
) VALUES(‘AUTHORIZATION_ENABLED’, ‘false’);
INSERT INTO sys_config
(property
, value
) VALUES(‘CONSOLE_ZK_CLUSTER_MAPPING’, ‘default:/default’);
INSERT INTO sys_config
(property
, value
) VALUES(‘IDC_ZK_CLUSTER_MAPPING’, ‘’);
INSERT INTO sys_config
(property
, value
) VALUES(‘IDC_CONSOLE_ID_MAPPING’, ‘’);
INSERT INTO sys_config
(property
, value
) VALUES(‘IDC_CONSOLE_DOMAIN_MAPPING’, ‘’);
執行schema.sql。
安裝Console
下載得到saturn-console-{version}-exec.jar,將之放到合適的目錄。
啓動 Console**(id=test-console)**
nohup java -DVIP_SATURN_CONSOLE_CLUSTER=test-console -DSATURN_CONSOLE_DB_URL=jdbc:mysql://localhost:3306/saturn - DSATURN_CONSOLE_DB_USERNAME=your_username -Dserver.port=9080 -DSATURN_CONSOLE_DB_PASSWORD=your_password -jar saturn-console-{version}-exec.jar &
2.4.2.2 啓動參數描述
參數名 是否支持環境變量/JVM參數 描述 是否必須
VIP_SATURN_CONSOLE_CLUSTER 都支持 Console集羣id N
SATURN_CONSOLE_DB_URL 都支持 DB 連接url Y
SATURN_CONSOLE_DB_USERNAME 都支持 DB用戶名 Y
SATURN_CONSOLE_DB_PASSWORD 都支持 密碼 Y
saturn.console.log JVM參數(-D) 日誌目錄。默認是/apps/logs/saturn_console N
VIP_SATURN_DASHBOARD_REFRESH_INTERVAL_MINUTE 都支持 Dashboard後臺刷新頻率,單位是分鐘。默認值是1。 N
server.port JVM參數(-D) 啓動端口,默認9088 N
authentication.enabled JVM參數(-D) 是否啓用用戶認證。默認爲false。詳情參閱認證和授權一節 N
authorization.enabled.default JVM參數(-D) 是否默認啓用用戶鑑權。默認爲false。詳情參閱認證和授權一節 N
2.4.3 創建ZK集羣
Executor會從ZK獲取相應域的作業信息,並上報作業的運行狀態到ZK。而一個Console(集羣)可以管理多個ZK集羣。下面會介紹如何在Console添加zk集羣。假設我們要添加的zk集羣id爲test。
2.4.3.1 在系統配置綁定console與zk集羣
在“系統配置”處的CONSOLE_ZK_CLUSTER_MAPPING,綁定console和zk集羣,
格式爲{console_id}:{zk_cluster_id}。
如果console啓動沒有指定VIP_SATURN_CONSOLE_CLUSTER,則使用default。
2.4.4 創建域
域是多個作業的管理單元,域與zk集羣進行綁定,兩者是多對一的關係。一個域只從屬於一個zk集羣。
在註冊中心的“域管理”頁面,添加域(namespace), 同時與zk cluster綁定。
Saturn Executor部署
Executor是作業的執行器。這一節將介紹如何將調試好的作業部署到Executor上面運行。關於如何開發調試作業,見“入門”一章。
Executor啓動時,需要指定所屬的域。啓動後,Executor會自動拉取域下的作業配置信息,然後根據Saturn Console scheudler的調度安排,以及作業的Cron表達式去執行作業調度。
1 檢查
檢查是否能訪問Saturn Console (參見Saturn Console部署指南)
檢查Saturn Console上是否有指定的namespace(可以在Console的註冊中心搜索一下namespace名字)
檢查是否能訪問ZooKeeper (參見Saturn Console部署指南)。可以通過telnet 對應zk的端口,默認是(2181)
如果你要部署的是Java作業,檢查是否已經打包了一個*-app.zip的包。詳情參見Saturn作業開發指引之Java作業
2 開始部署
2.1 設置環境變量
設置saturn console uri:
export VIP_SATURN_CONSOLE_URI=http://localhost:9080
2.4 啓動executor
cd saturn-executor-{version}/bin
#修改權限
chmod a+x saturn-executor.sh
#啓動
./saturn-executor.sh start -n www.abc.com -e executor_001 -D VIP_SATURN_CONSOLE_URI=http://localhost:9080
參數描述:
參數 必填 描述 默認值
-n Y 本executor所屬的namespace
-e N 本executor的唯一ID,如果不指定則使用hostname hostname
-env N 運行模式,可取值爲dev/product。 dev模式下-Xmx爲512m,product模式下-Xmx爲2G product
-d N 業務library所在目錄 $TARGET_DIR/app
-r N 運行模式,前臺(foreground)或者後臺(background),空代表background模式。 空
-jmx N jmx端口 24501
-sld N saturn日誌目錄 /apps/logs/saturn/{namespace}/{executorname}-{ip}/
jvmArgs N 需要添加的JVM參數 空
VIP_SATURN_INIT_JOB_BY_GROUPS (-D或環境變量) N 如果Executor機器設置了這個變量,則該Executor只能啓動該域下屬於該groups的作業; 否則,可以啓動該域下全部作業。
多值用逗號分隔groups1,groups2 無
下面展示一個成功啓動的console 輸出:
$ ./saturn-executor.sh start -n www.abc.com -e executor-0134
The java version is 1.8.0_121
Log redirects to /apps/logs/saturn/www.abc.com/executor-0134-xxx.xxx.xxx.xxx
The jmx port is 24501.
Saturn executor start successfully, running as process:18332.
如果啓動失敗,根據console提示的路徑查看saturn-executor.log。
2.5 單臺物理機啓動多個executor
建議在一臺物理機啓動一個executor。 如果想在單臺物理機啓動多個executor,建議採用以下步驟:
將saturn-executor-{version} copy到多個
在啓動這些executor時,分別指定不同executorname和JMX端口,命令如下:
$ ./saturn-executor.sh start -n www.abc.com -e executor-001 -jmx 24502
注意:executor name,默認是hostname;jmx端口默認是24501