分布式系统·作业五 LeeRinji

通常认为弱一致性模型给程序开发人员增加了额外的负担。这一命题在那种程度上确实是正确的

分两个角度考虑。

  1. 强一致性模型通常使用如锁或通信的同步机制来保证对同步变量的操作一致连续,而弱一致性模型下复制是异步的,这会导致编程时需要考虑副本间的差异、各种操作之间的依赖关系以及伴随的各种情况。从这一点上来看弱一致性模型给程序开发人员增加了额外的负担。
  2. 弱一致模型通常比强一致模型有更强的容错性、扩展性、吞吐量,也可以降低服务的延迟,在这个角度上看弱一致模型在开发上也有其便利性。

你会选择哪种类型的一致性来实现电子股票市场?请解释你的答案

因果一致性。因为考虑到股价的前后变化是有逻辑上的顺序的,对同一支股票的买入卖出之间可能会有因果联系;而不同股票的操作就通常没有关系,放松限制条件可以提高服务性能。

请列举全序广播的实现方法,解释基本原理并比较它们之间的不同点。从全序广播的实现方法中选取2个或2个以上进行比较,这篇论文的Introduction中介绍了一些方法

虽然目前的全序组播算法在排序机制方面存在差异,但是都不能同时实现低延迟和高吞吐量:排序其算法和逻辑时钟算法难以提供高吞吐量,而优先级算法不能实现低延迟(延迟随成员数目线性增长)

请列举顺序一致性、因果一致性、单调读、单调写、读写一致性、写读一致性的具体场景

顺序一致性

例如,银行的交易记录就应该是顺序一致性的,实时扣除的账户金额,到另一个账户上是有时延的,但是最终要求金额准确无误。需要为用户保证绝对可靠的数据安全,虽然在数据一致性上存在延时,但最终务必保证严格的一致。

因果一致性

电子股票交易市场可以使用因果一致性,理由见第二问。

单调读

单调读可以应用在一个购物网站的库存显示上。商品详情页面上显示的库存量,通常不是商品的真实库存量,只有在下单购买的时候,系统才会检查该商品的真实库存量。使用单调读,可以使用户不会发现库存越来越多的诡异情况。

单调写

例如,用户在论坛连续回贴时,回帖需要按他回复的顺序排列,不能在刷新后乱序甚至丢失。

读写一致性

一个论坛服务器可以使用读写一致性,它可以保证,如果用户刷新页面,他们总会看到自己刚提交的任何帖子和更新。它不会对其他用户的写入做出承诺,其他用户的更新可能稍等才会看到,但它保证用户自己提交的数据能马上被自己看到。

写读一致性

一个贴子的引用机制可以使用写读一致性。由于用户在引用的过程中被引用的内容自身可能被修改和删除,引用的部分通常会使用用户最新读到的一次缓存。