Saturn vip

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章