LinDB 是一个高性能、高可用并且具备水平拓展性的开源分布式时序数据库。 LinDB 目前在饿了么存储了全量的监控数据,每天增量写入 88TB,全量数据总计 2.7PB。
高性能
LinDB 参考了其他时序数据库里的最佳实践,并且在此基础上做了些优化。 和 InfluxDB 中的 Continuous-Query 不一样,在创建数据库之后,LinDB支持根据指定的时间间隔自动对数据进行rollup。 不仅如此,LinDB 在并行查询和计算分布式时序数据方面速度相当快。
原生的多活支持
LinDB 在设计阶段就是为了在饿了么的多活系统架构下工作的。LinDB的计算层(brokers)支持高效的跨机房聚合查询。
高可用
LinDB 使用 ETCD 集群以保证原数据的高可用和存储安全(也支持单机模式启动)。 当出现故障时,多通道复制的WAL协议可以避免数据的不一致情况:
1). 任一复制通道只有一名成员负责数据的权威性,因此避免了数据冲突;
2). 数据可靠性保障:只要先前的leader数据并未丢失,当其重新上线时,这些数据便将被复制到其他的副本中;
水平拓展性
LinDB 使用了基于 Series(Tags) 的 sharding 策略,可以真正解决热点问题(另外也考验了系统设计的能力),简单的增加新的 broker 和 storage 节点即可实现水平拓展。
Metric的治理能力
为了保证系统的健壮性,LinDB 并不假设所有用户都已了解 metric 使用的最佳实践。因此,LinDB 提供了 metric 和 tag 粒度的限制能力,避免整体集群在部分用户错误的使用姿势下崩溃。
地址:https://github.com/lindb/lindb
发表评论 取消回复