有一天你收到老客户罗志祥的电话,要求查询"明天的约会安排";
你一脸蒙蔽,我不知道啊,你的记忆页上没这个信息啊; 客户咣当挂断了电话。
当天复盘, 猜想是昨天罗志祥把业务电话打到我老婆那里了,事实确实如此。
你们都意识到分机号带来的新问题。
多么可怕的分布式设计中的缺陷!你的分布式系统是不一致的!总会有一个时机,客户会将业务电话打到你们其中一个;在下一次拨号时,客户就可能收到不一致的信息。
睡前吹风时间, 你想到一个主意:
- 当我们其中一个人接到客户新的记忆业务,我们会在挂电话之前告诉另一个人
- 这样我们都能在笔记本上记下新业务
- 当客户查询时,我们两个都可以轻松应对
-
这里有一个问题:当其中一人收到新业务电话,两人就不能并行工作了。
例如:当你收到新业务并告诉我记录信息时, 我不能接其他电话。
但是这个问题也不大,因为大部分都是查询业务(可以再拨电话重试),我们首要的是确保信息正确。
你老婆进一步提出:如果某天你不在岗,我收到新业务,你的笔记本不能得到最新信息,这就会有可用性问题, 因为我没能通知你,我就不能挂断电话完成这单业务。
你慢慢理解了分布式系统中的“一致性”和“可用性”。你提出了更优方案:
1. 收到新业务电话, 挂电话前通知对方,这样两个人都能记下信息
2. 某天其中一人不在岗,另外一人收到新业务电话 ,给缺岗者发一封邮件
3. 第二天缺岗者上岗查收邮件,更新自己的笔记本。