更新时间:2024-04-28 GMT+08:00
分享

附录

背景信息

使用云盘组件RAID磁盘阵列

表1 常见RAID磁盘阵列介绍

RAID级别

简介

读写性能

安全性能

磁盘使用率

组建不同RAID阵列所需的最少磁盘数量

RAID0

RAID0将数据分条存储在多个磁盘上,可实现并行读写,提供最快的读写速率。

多个磁盘并行读写获取更高性能

最差

没有冗余能力,一个磁盘损坏,整个RAID阵列数据都不可用

100%

两块

RAID1

通过构造数据镜像实现数据冗余,阵列中一半的磁盘容量投入使用,另一半磁盘容量用来做镜像,提供数据备份。

读性能:与单个磁盘相同

写性能:需要将数据写入是两个磁盘,写性能低于单个磁盘

最高

提供磁盘数据的完整备份,当阵列中的一个磁盘失效时,系统可以自动采用镜像磁盘的数据

50%

两块

RAID01

结合RAID0和RAID1两种磁盘阵列,先将一半磁盘组建成RAID0分条存储数据,再用另一半磁盘做RAID1镜像。

读性能:和RAID0相同

写性能:和RAID1相同

比RAID10的安全性能低

50%

四块

RAID10

结合RAID1和RAID0两种磁盘阵列,先将磁盘两两组建成RAID1镜像,再组建RAID0将数据分条存储。

读性能:RAID0相同

写性能:RAID1相同

和RAID1的安全性能相同

50%

四块

RAID5

RAID5不需要单独指定数据校验磁盘,而是将每块磁盘生成的校验信息分块存储至阵列中的每块磁盘中。

读性能:和RAID0相同

写性能:由于要写入奇偶校验信息,写性能低于单个磁盘

比RAID10的安全性能低

66.7%

三块

源代码

样例1:DLI Flink SQL脚本

CREATE SOURCE STREAM alarm_info (alarm_id STRING, alarm_type INT) WITH ( 
type = "dis", 
region = "cn-east-3", 
channel = "dis-alarm-input", 
partition_count = "1", 
encode = "csv", 
offset = "0", 
field_delimiter = "," 
); 
 
CREATE SINK STREAM over_alarm ( 
alarm_over STRING 
/* over speed message */ 
) WITH ( 
type = "smn", 
region = "cn-east-3", 
topic_urn = " urn:smn:cn-east-3:0b9553e29c0026f22f3dc007a430e45a:alarm_over ", 
message_subject = "alarm", 
message_column = "alarm_over" 
); 
 
INSERT INTO 
over_alarm 
SELECT 
"your alarm over (" || CAST(alarm_type as CHAR(20)) || ") ." 
FROM 
alarm_info 
WHERE 
alarm_type > 8; 
 
CREATE SINK STREAM alarm_info_output (alarm_id STRING, alarm_type INT) WITH ( 
type = "dis", 
region = "cn-east-3", 
channel = "dis-alarm-output", 
PARTITION_KEY = "alarm_type", 
encode = "csv", 
field_delimiter = "," 
); 
 
INSERT INTO 
alarm_info_output 
SELECT 
* 
FROM 
alarm_info 
WHERE 
alarm_type > 0; 
附:测试源数据示例 
alarm_id	alarm_type 
60114	3 
60121	5 
60122	6 
60123	7 
60124	8 
60126	0 
60127	9 
60128	10 
60129	6

样例2:创建数据表alarm_info,alarm_count_info

create table alarm_info( 
alarm_time string, 
alarm_id string, 
alarm_type int 
) using csv options(path 's3a://obs-alarm-platform/alarm_info') partitioned by(alarm_time); 
 
create table alarm_count_info( 
alarm_time string, 
alarm_type int, 
alarm_count int 
) using csv options(path 's3a://obs-alarm-platform/alarm_count_info');

样例3:按告警类别进行统计

insert into 
alarm_count_info 
select 
alarm_time, 
alarm_type, 
count(alarm_type) 
from 
alarm_info 
group by 
alarm_time, 
alarm_type;

相关文档