「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:五

简介: 「读书笔记」《大规模分布式存储系统:原理解析与架构实战》:五

5 分布式键值系统

可以看成是分布式表格模型的一种特例。

哈希分布算法。

5.1 Amazon Dynamo

问题 采取的技术
数据分布 改进的一致性哈希(虚拟节点)
复制协议 复制写协议(Replicated-write Protocol,NWR 参数可调)
数据冲突处理 向量时钟
临时故障处理 数据回传机制(Hinted handoff)
永久故障后的恢复 Merkle 哈希树
成员资格及错误检测 基于 Gossip 的成员资格和错误检测协议

5.1.1 数据分布

一致性哈希算法思想:给系统中每个节点分配一个随机 token,这些 token 构成一个哈希环。执行数据存放操作时,先计算主键的哈希值,然后存放到顺时针方向第一个大于或等于该哈希值的 token 所在的节点。

一致性哈希的优点:节点加入、删除时只会影响到在哈希环中相邻的节点,而对其他节点没有影响。

Dynamo 使用了改进的一致性哈希算法:每个物理节点根据其性能的差异分配多个 token,每个 token 对应一个「虚拟节点」。每个虚拟节点的处理能力基本相当,并随机分布在哈希空间中。

由于种子节点的存在,新节点加入比较简单。新节点首先与种子节点交换集群信息,从而对集群有了认识。DHT(Distributed Hash Table,一致性哈希表)环中的其他节点也会定期和种子节点交换集群信息,从而发现新节点的加入。

5.1.2 一致性与复制

复制:数据回传。

Dynamo 亮点技术:NWR,N 表示复制的备份数,R 指成功读操作的最少节点数,W 指成功写操作的最少节点数。 只要满足 W + R > N,就可以保证当存在不超过一台机器故障的时候,至少能够读到一份有效的数据。

如果应用重视读效率,可以设置 W = N,R=1;如果应用需要在读写之间权衡,一般可以设置 N=3,W=2,R=2。

NWR 看似完美,实则不然。在 Dynamo 这样的 P2P 集群中,由于每个节点存储的集群信息有所不同,可能出现同一个记录被多个节点同时更新的情况,无法保证多个节点之间的更新顺序。为此 Dynamo 引入向量时钟(Vector Clock)的技术手段尝试解决冲突。

5.1.3 容错

Dynamo 将异常分为 2 种类型:

  • 临时性的异常:如机器假死
  • 永久性的异常:如硬盘报修或机器报废等

容错机制:

  • 数据回传
  • Merkle 树同步
  • 读取修复

5.1.4 负载均衡

取决于如何给每台机器分配虚拟节点号,即 token。

分配节点的方法:

  • 随机分配:缺点是可控性差。
  • 数据范围分配 + 随机分配

5.1.5 读写流程

image.png

读取过程中,如果数据不一致,默认策略是根据修改时间戳选择最新的数据,当然用户也可以自定义冲突处理方法。读取过程中如果发现某些副本上数据版本太旧,Dynamo 内部会异步发起一次读取修复操作,使用冲突解决后的结果修正错误的副本。

image.png

5.1.6 单机实现

Dynamo 的存储节点包含 3 个组件:

  • 请求协调
  • 成员和故障检测
  • 存储引擎

Dynamo 设计支持可拔插 的存储引擎,如 Berkerly DB,MySQL InnoDB 等。

5.1.7 讨论

Dynamo 采用无中心节点的 P2P 设计,增加了系统的可扩展性。

Dynamo 只保证最终一致性,多客户端并发操作的时候很难预测操作结果,也很难预测不一致的时间窗口。

总体来看,Dynamo 在 Amazon 的使用场景有限,后续的类似系统会采用其他设计思路以提供更好地一致性。

5.2 淘宝 Tair

Tair 是淘宝开发的一个分布式 K/V 存储引擎。Tair 分为持久化和非持久化两种使用方式:

  • 非持久化可以看成是个分布式缓存
  • 持久化的 Tair 将数据存放于磁盘中。

Tair 可配置数据的备份数目。

5.2.1 系统架构

组成:

  • 1 个中心控制节点 - config server:负责管理所有 Data Server,维护其状态信息。一主一备。
  • 若干服务节点 - data server:对外各种数据服务,并以心跳的形式将自身情况汇报给 Config Server。

5.2.2. 关键问题

数据分布

哈希后,分布到 Q 个桶中。Q 要远大于集群的物理机器数,如 Q = 10240

容错

数据迁移

config server

客户端缓存路由表。

Data Server

Data Server 具备抽象的存储引擎层,可以很方便地添加新存储引擎。Data Server 还有一个插件容器,可以动态加载、卸载插件。

默认包含两个存储引擎:

  • Mdb
  • Fdb

5.2.3 讨论

Tair 中引入了中心节点 Config Server。这样很容易处理数据的一致性,不再需要向量时钟、数据回传、Merkle 数、冲突处理等复杂的 P2P 技术。另外,中心节点的负载很低。

Tair 持久化不尽如人意。如,Tair 持久化存储通过 异步复制 技术提高可靠性,可能会丢数据。

相关文章
|
15天前
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
23天前
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
129 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
20天前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
24天前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
24天前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
Spring Boot 3.x 微服务架构实战指南
|
27天前
|
消息中间件 数据采集 NoSQL
秒级行情推送系统实战:从触发、采集到入库的端到端架构
本文设计了一套秒级实时行情推送系统,涵盖触发、采集、缓冲、入库与推送五层架构,结合动态代理IP、Kafka/Redis缓冲及WebSocket推送,实现金融数据低延迟、高并发处理,适用于股票、数字货币等实时行情场景。
161 3
秒级行情推送系统实战:从触发、采集到入库的端到端架构
|
15天前
|
XML 人工智能 JSON
意图识别准确率97.6%!高阶多轮对话RAG架构实战分享​
本文系统解析NLU中意图识别与槽位抽取的4种技术方案:从提示词工程入门,到节点分离、RAG增强,再到多轮对话优化,覆盖不同场景的选型策略,助力AI智能体精准理解用户需求。
394 3
|
14天前
|
监控 数据可视化 数据库
低代码的系统化演进:从工具逻辑到平台架构的技术解读
低代码正从开发工具演变为支撑企业架构的智能平台,融合可视化开发、AI引擎与开放生态,实现高效构建、自动化运维与跨场景协同,推动数字化转型迈向智能化、系统化新阶段。
|
27天前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
285 7
|
9天前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)

推荐镜像

更多
  • DNS