内容:尽可能放宽系统中的时间约束。
场景:当考虑在用户操作步骤之间,某些项目或对象必须保持某种状态的约束时。
用法:放宽业务规则的约束。
原因:因为大多数关系型数据库的ACID属性,要扩展带有时间约束的系统难度极高。
要点:认真考虑诸如某个产品从用户查看开始,到购买为止的时间约束的必要性。与让用户有些失望相比,系统因为无法扩展而停止服务相比更为严重。
分布式环境中有三个核心要求存在:
1.一致性(Consistency):从客户角度看,一组操作同时发生。
2.可用性(Availability):每个操作必须都能收到预期的响应
3.分区容错性(Partition tolerance):即使个别消息丢失,操作仍然可以完成。
放宽了时间约束相当于在一致性上放宽了时间要求,这个对于分布式的问题解决也放宽了解决思路。
解决CAP问题的架构的常用方法是BASE,即基本可用(Basically Available)、软状态(Soft state)、最终一致(Eventually consistent)。
除非是同步要求很高的系统,例如同步聊天的系统,其他的系统都要考虑这种时间约束的问题。同步性要求越高的系统,扩展性的挑战难度越高。正常的银行业务系统,一般都是分布式系统,放宽了时间约束,因为几秒钟的等待与系统不可用之间,银行多会选择等待几秒。