分布式键值存储是一种数据库系统,旨在跨多个联网节点以键值对的形式存储和检索数据。与传统数据库不同,它通过在服务器之间分配数据来优先考虑可扩展性、容错性和低延迟访问。每个条目都包含一个唯一的键(如字符串或标识符)和一个关联的值(可以是简单数据或复杂对象)。示例包括 Redis Cluster、Amazon DynamoDB 和 etcd。这些系统通常用于需要快速读/写操作的场景,如缓存、会话存储或实时应用程序。
分布式键值存储通过将数据分成碎片(子集)分布在各个节点上来实现可扩展性。例如,DynamoDB 使用一致性哈希来均匀地分配键,确保没有单个节点成为瓶颈。复制是另一个关键特性:数据被复制到多个节点,以防止发生故障时丢失。当一个节点脱机时,系统会自动将请求路由到副本。然而,这在一致性和可用性之间引入了权衡。像 Apache Cassandra 这样的系统允许可调整的一致性级别,让开发人员决定读/写是否应与大多数副本同步,还是优先考虑速度。像 etcd 这样(使用 Raft 共识算法)的强一致性系统确保所有副本都同意更新,但可能会牺牲延迟。
分布式键值存储的使用案例通常涉及高吞吐量、低延迟的需求。例如,Redis 被广泛用于缓存网页以减少数据库负载,而 DynamoDB 则支持游戏排行榜等应用程序中的实时功能。Web 应用程序中的会话存储是另一个常见的用途,因为跨节点分配用户会话可以避免流量高峰期间的瓶颈。然而,这些系统不太适合复杂的查询(例如,连接或聚合),因为它们缺乏关系模式。当简单性、水平扩展和可预测的访问模式(直接键查找)超过了对高级查询功能的需求时,开发人员会选择它们。它们的设计与微服务架构非常吻合,在微服务架构中,无状态服务依赖于外部存储来共享数据。