分布式系统的数据共享策略与一致性探讨
1. 数据共享决策的重要性
在设计避免单点故障和恢复策略时,需要决定是否以及如何在节点、节点家族和集群之间复制数据。这些决策会影响系统的可用性(包括容错性、弹性和可靠性)以及可扩展性。幸运的是,部分决策可推迟到系统压力测试和基准测试时做出,也可根据已知需求和过往设计类似系统的经验提前决定。不过,处理分布式系统时,访问和移动数据是最困难的事情之一,可能成为系统的最大瓶颈。对于每个表和状态,有三种数据复制策略可供选择:不共享、部分共享和全共享,需明智选择最符合目标规模或可用性水平的策略。
2. 不共享(Share nothing)架构
不共享架构中,数据和状态不共享,可针对特定节点、节点家族或集群。解决硬件、网络和负载均衡等底层基础设施问题后,不共享架构可实现线性可扩展系统。因为每个节点集合都有自己独立的数据和状态副本,可独立运行。扩展时,只需添加更多基础设施并重新配置负载均衡器。
以下通过一个示例说明:有两个前端节点和两个逻辑节点,客户端发送登录请求,请求通过负载均衡器转发到前端节点,前端节点再将请求转发到其主逻辑节点。逻辑节点检查客户端凭据并创建会话,将会话状态存储在数据库中。若存储客户端会话数据的节点崩溃,客户端发送新请求时,前端节点将其转发到备用逻辑节点,备用逻辑节点因不知会话信息而拒绝请求。客户端收到未知会话错误后,发送新登录请求,由第二个逻辑节点处理。此后客户端的所有请求应转发到包含会话的逻辑节点,否则若崩溃节点恢复,客户端需再次登录。
不共享架构的优点是无需跨节点复制会话状态,可随同时连接用户数量增加继续添加前端和逻辑节点,提高可扩展性。缺点是节点丢失时,与之关联的状态和数据也会丢失,需选
超级会员免费看
订阅专栏 解锁全文
6万+

被折叠的 条评论
为什么被折叠?



