全球化分布的LF:一个去中心化的全副本键值存储系统
项目简介
LF(发音为"aleph")是一个彻底的去中心化、完全复制的键值存储系统。它允许任何人无需特殊许可就能运行节点,并且所有节点在功能上都是平等的。每个节点都存储整个数据集,这种设计使得LF成为一种创新的数据存储解决方案。
该项目由ZeroTier, Inc.开发,并授权于Mozilla公共许可证V2.0下。尽管目前不进行维护,但其仍在提供,以展示一系列有趣的想法,你可以将其视为"ZeroTier Labs"的研发孵化项目。
技术剖析
LF基于有向无环图(DAG)数据模型构建,简化了同步过程,同时也支持多种安全和冲突解决策略。它的DAG可以看作是一个巨大的冲突自由复制数据类型(CRDT)。工作量证明用于公有网络上的写入速率限制,同时也是冲突解决时可考虑的因素之一。其他因素包括节点的本地主观启发式算法以及由证书颁发机构签发的证书。
LF这个名字来源于Jorge Luis Borges的小说《The Aleph》和William Gibson的小说《Mona Lisa Overdrive》,两部作品均涉及到包罗万象的概念——一个点中容纳所有点的空间,与LF的数据存储理念相吻合。
应用场景
LF的存在是为了在开放的去中心化系统中实现类似etcd和consul在集中管理环境中的功能,即提供快速可靠的小型但关键信息存储。这些信息可能包括密钥、证书、身份信息、配置文件、IP、DNS名称、URL、数据哈希等。
与通常使用的分布式哈希表(DHT)不同,LF旨在提供更快的速度、更高的安全性,并能在网络状况不稳定时保持连续可用性。
项目特点
- 简单易用部署,预设了有用的默认设置和凭证,可以直接连接到公开的公共网络。
- 去中心化系统,开放式参与,没有单点故障。
- 近乎实时的亚秒级查询,即使在网络中断的情况下也能对全球数据集进行快速访问。
- 多样化的安全模式,允许用户选择不同的冲突解决机制,包括本地启发式算法、工作量证明的“权重”、对他节点的信任选举,以及证书。
- 灵活的记录查找API,支持多层键和针对64位序号的范围查询。
- 全部加密,包括记录键,确保数据私密安全,即便在全球复制的情况下也是如此。
- 心跳信号(pulse)机制,可用于实时广告服务、对象或用户可用性。
限制与不足
- 只适合小数据块,不适用于频繁变化的大规模数据。
- 遵循CAP定理的AP权衡(可用性,分区容错)。数据库是最终一致性的,不支持锁操作。
- 对CPU、内存、存储和带宽的要求较高,不适合小型和资源受限设备。
- 存储需求随时间增长,类似于区块链的设计。然而,由于存储成本持续降低,这在未来可能不成问题。
构建与运行
LF支持Linux、Mac和Free/Open/NetBSD平台。需Go 1.11及以上版本和C99标准的现代C编译器。只需输入make
即可在大多数平台上构建。
马上开始
LF客户端和完整节点实现都在同一个lf
二进制文件中。运行它会显示帮助信息。默认配置下,LF客户端能够查询lf.zerotier.com
,这是一个公共节点,使用ZeroTier运营的默认公共数据库。这意味着您立即就可以尝试简单的查询。
要了解更多关于选择器、序号和值的用法,请参考项目的README。
结语
LF是一个为小而关键信息提供去中心化存储的创新工具,对于需要高速、安全、高度可用性的应用开发者来说,它是理想的选择。虽然有一些局限性,但随着技术的发展,LF的理念和实施可能会为未来的分布式系统开辟新的道路。不妨试试这个项目,看看它是否能满足你的需求。