Appearance
安捷实时数据库系统
安捷实时数据库系统由实时数据库(AgilorRTDB)、应用程序开发接口和Agilor-UI和组成。
安捷实时数据库(AgilorRTDB)
AgilorRTDB使用Golang开发,支持主流Linux操作系统(Ubuntu、CentOS等)、国产操作系统(中标麒麟、银河麒麟、中科方德、统信)、国产硬件平台(飞腾、鲲鹏、龙芯、兆芯和海光),并已取得适配认证。
agilord
agilord是AgilorRTDB的后台进程,使用HTTP协议。agilord由如下7个模块构成: HTTP Server: 提供http服务,监听http请求,解析请求,并将处理结果返回给客户端,默认端口为8713,该端口号可在配置文件(/etc/agilor/agilor.toml)中修改;
Authorization:负责权限管理,支持用户名/密码和token两种权限管理,提供write、read级别的权限管理和校验;
SQL Parser:该模块负责解析客户端查询请求中的AgilorQL,AgilorQL是一种类SQL语言,提供SELECT、SHOW等操作,该模块将AgilorQL解析成对象模型;
WAL:实时数据库接收到客户端写入的数据后,首先将数据写入预写日志(write ahead log),以应对单节点故障,数据库因异常重启丢失缓存(Cache)中的数据,重启后,数据库会回放WAL文件中的数据,将其写入缓存。缓存中的数据成功写入磁盘后,数据库会删除对应WAL文件,释放磁盘空间;
Cache:数据库的缓存模块,在内存中缓存客户端写入的数据,通过key-value的形式组织数据,Cache的大小可以在配置文件(/etc/agilor/agilor.toml)的配置,当Cache被写满,或者没有满但距离上一次落盘时间超过XXX,数据库会将Cache中的数据写入磁盘文件持久化存储;
Subscribe/Alert:订阅/报警模块,该模块负责管理客户端的订阅/报警规则,当写入的数据触发了规则后,将实时数据推送到指定的endpoint(ip:port);
Engine:实时数据库的存储引擎,负责测点数据的持久化存储。存储引擎使用了多种技术提高读写吞吐量,以及通过数据生命周期管理、数据压缩减少存储成本。 当Cache中的数据触发落盘条件时,首先将需要落盘持久化存储的Cache中的数据冻结,同时新建一个新的Cache接收新写入的数据,被冻结的Cache只提供数据查询服务。落盘之间,首先对Cache中的数据进行无损压缩(当前只支持无损压缩),按照数据类型使用不同的压缩算法。如,时间戳压缩使用了2阶差分(delta-of-delta)算法以及游程编码(run-length encoding, RLE)和simple8b编码,浮点型数据使用了XOR算法,布尔类型数据使用了位压缩(bit-packing),字符串类型数据使用了Snappy压缩。同时,当数据写入磁盘文件后,会使用GZIP算法对文件进行二次压缩,大大提高压缩比。 存储引擎会根据数据的保留周期自动对写入磁盘的数据进行分片管理,既,将磁盘文件划分为多个分区,每个分区只保留一个时间范围内的数据,当该分区的数据过期后,直接删除该分区,释放磁盘空间,如下图所示:
agilor-cli
agilor-cli 命令行工具提供了基础的数据库操作功能,通过http协议与 agilord 通信。
当前agilor-cli提供“数据库初始化(init)”、“数据写入(write)”、“数据查询(query)”、“数据导入(backup)”、“数据恢复(restore)”、“数据订阅(subscribe)”功能。
APIs
AgilorRTDB原生支持Restful API,当前提供Java API、JDBC、C++ API、ODBC接口。
Agilor-UI
Agilor-UI 客户端工具提供:数据查询
、数据可视化
、点位监听/管理
、点位趋势图
、系统监控
等功能。