随着互联网信息的爆炸式增长,大数据存储的解决方案越来越多,这里介绍一下常见的分布式存储架构方案。
1 主备机制
主备机制又称为主从机制,主节点(master)是提供数据的查询和更新服务,备节点(slave)在主节点提供服务期间不提供对外服务。
如图1-1所示,备节点从主节点获取更新消息,或主节点主动广播消息,一旦主节点挂掉,客户端可以通过负载均衡设备切换到备节点继续服务。
像redis、mysql等做分布式方案都属于这种设计,通过binlog/oplog同步到备节点。
2 对等机制
集群中每个节点都是一样的对等结构,每一个节点都保存了数据的元信息以及数据,每个节点都提供数据的查询和更新服务,如图2-1:
图 2-1 节点对等机制
在数据容灾方面,集群会对数据进行分片,且分片有多个副本的存在这些节点中,一旦某个节点挂掉,客户端通过某种哈希算法找其它副本即可继续服务。一种更好的表示如图2-2所示:
图 2-2 节点均衡迭代
在针对不同场景的读取和更新的优化上,一般使用QUORUM机制,保证W+R>N即可。
像Cassandra、Dynamo等都属于这种设计
3 数据和集群管理
把集群中数据的元信息以及数据以及集群的管理信息进行分离,数据节点主要根据其元信息管理数据的增删改查,数据节点统一由集群的服务进行管理,集群的管理服务也是分布式,每个管理节点可能是主备,也可能是对等机制。
数据节点启动时,向管理节点汇报服务信息,后续每隔一段心跳时间汇报一下数据节点的状态(包括数据状态、服务健康状态等),若某个数据节点挂掉,心跳不能继续进行,故客户端连接时候,抽取心跳时间间隔内的服务器进行访问即可,如图3-1:
图 3-1 集群管理
针对心跳时间间隔内的服务器突然不可用,客户端可以采取一定优化措施。有些分布式系统为了元数据的统一管理和方便查询,将元数据信息甚至配置信息统一用新的分布式方案进行部署管理。
像Tair、hyperdex等属于这种设计方式。