state of art 的日志检索系统是把日志集中化到中央节点进行排序,建立倒排索引来实现的。无论是往中央节点汇聚,还是log segment的合并排序都需要大量的移动字节,有巨大的成本。
中央化排序的目的是让查询的时候更快,只需要读取很少的字节就可以扫过大量的日志。但是这个日志检索的需求和面向消费者的搜索引擎是有很大不同的。面向定位调错的日志检索系统并不需要搜索引擎那么低的检索延迟。用搜索引擎的倒排架构是一种over kill。如果能够牺牲一定的检索速度,就可以节省大量的建立索引的成本。bitfunnel的基于树状bloom filter的索引结构是更经济的做法。
低写入延迟的高可用队列
现在的kafka单partition的可用性模型是CP的。大部分的消息队列的使用场景可以接受AP的。通过把多个indexed shared log进行组合使用,我们可以组装出一个AP模型的消息队列:应用 RAID 6 于消息队列
强一致的存储
在多个indexed shared log上使用paxos算法进行分布式一致性算法的写入,可以组合成CP模型的日志存储。在这个CP的日志上,可以构建单队列或者多队列的存储系统,不管是KV的还是文档的还是关系型的或者文件系统。一致性算法的说明:不要骗我了,这能有多难嘛!
corfu
Indexed Shared Log 就是对 在 corfu 模型上的几点扩展
Shared Log 已经很有用了。Indexed Shared Log会更有用的。
Indexed Shared Log 的索引模型
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。