什么是分布式系统中的复制?
在分布式系统中,数据存储在网络中的不同计算机上。因此,我们需要确保数据可供用户随时使用。数据的可用性是一个重要的因素,通常通过数据复制来实现。复制是将多个数据副本保存在不同位置的做法。
为什么我们需要复制?
首先也是最重要的一点是,由于节点复制,它使我们的系统更加稳定。由于以下原因,最好在网络中拥有节点的副本:
- 如果一个节点停止工作,分布式网络仍然可以正常工作,因为它的副本会在那里。因此,它增加了系统的容错能力。
- 它还有助于负载共享,其中服务器上的负载在不同的副本之间共享。
- 它提高了数据的可用性。如果创建副本并将数据存储在消费者附近,则获取数据会更容易和更快。
复制类型
- 主动复制
- 被动复制
主动复制:
- 客户端的请求转到所有副本。
- 要确保每个副本都以相同的顺序接收客户端请求,否则系统将变得不一致。
- 不需要协调,因为每个副本以相同的顺序处理相同的请求。
- 所有副本都响应客户端的请求。
好处:
- 这真的很简单。主动复制中的代码始终相同。
- 它是透明的。
- 即使一个节点发生故障,它也可以由该节点的副本轻松处理。
缺点:
- 它增加了资源消耗。副本数越多,所需的内存就越大。
- 它增加了时间复杂度。如果在一个副本上进行了某些更改,则也应该在所有其他副本上进行。
被动复制:
- 客户端请求转到主副本,也称为主副本。
- 有更多的副本充当主副本的备份。
- 主副本通知所有其他备份副本有关所做的任何修改。
- 响应由主副本返回给客户端。
- 主副本定期向备份副本发送一些信号,让他们知道它工作得很好。
- 如果主副本发生故障,备份副本将成为主副本。
好处:
- 资源消耗较少,因为备份服务器仅在主服务器发生故障时才发挥作用。
- 与主动复制不同,由于不需要在所有节点副本中进行更新,因此时间复杂度也较低。
缺点:
- 如果发生某些故障,响应时间会延迟。