让我们说我们有以下要求:(我们只有1个主人和1个奴隶)
用户打开第一页:输入用户名,然后按下提交按钮。请求转到应用服务器,然后将此用户名写入/更新到主数据库。现在当我们从Master返回成功回调时,页面导航到第2页。但是我们必须在第2页上显示此用户名的详细信息(来自读/从DB)但是假设Master没有将数据复制到Slave。那么如何处理这种情况:
我的问题是我们可以使用其他方法或设计解决方案在第2页上获取数据而无需等待并增加负载。
答案 0 :(得分:0)
您的解决方案策略应该取决于Master和Slave之间的同步间隔。
答案 1 :(得分:0)
该案例是典型的读写一致性问题。选择A或C:
异步复制。仅在主节点上读取或写入,而不是从节点。 (节点是数据分区单元,每台机器占用主节点和从节点的数量),当一台机器关闭时,则触发节点重新平衡。
同步复制。当所有或大多数返回成功时返回成功。 (NWR或Paxos)
我们的分布式nosql数据库通过异步复制数据选择可用性而非一致性。我们只对主数据分区进行读写。
问题是,当一台机器停机时,机器中所有具有未发送数据的主分区都无法被用户读取,直到机器返回并重新将数据发送到副本。
相同的数据中心数据复制延迟小于1毫秒,这意味着当机器停机时,在机器启动之前,无法检索到1毫秒的数据。现在,这可以接受我们的大多数业务要求。
对于不同的数据中心,我们选择多个集群(主集群,从集群)。