分布式系统非常关注三个指标:数据一致性;系统可用性;节点连接性和可扩展性;这三个指标是什么关系,今天我们就来说说分布式理论的基础CAP。什么是数据一致性?数据“强一致性”是指系统希望只读取最新写入的数据。比如这个效果可以通过单点序列化来实现。关于会话一致性、DB主从一致性、DB双主一致性、DB和Cache一致性、数据冗余一致性、消息时序一致性、分布式事务一致性、库存扣减一致性等,都存在类似的一致性问题。什么可用性?如果系统每运行100个时间单位就有1个时间单位停止服务,则称该系统具有99%的可用性。可用性和可靠性是两个比较容易混淆的指标。以取款机为例:输入正确能取到正确的钱,说明系统是可靠的;ATM提供7*24小时服务,表明系统可用;保证系统高可用的方法有:冗余;自动故障转移;什么是连通性和可扩展性?分布式系统往往有多个节点,每个节点并不是完全独立的,需要相互通信。当节点连接失败时,需要考虑数据能否保持一致,系统如何进行容错处理。同时,连通性和可扩展性密切相关。如果你想增加机器扩展的性能,你必须有良好的连接性。当一个节点离开系统时,系统就出现了问题,这往往意味着系统无法扩展。什么是CAP定理?CAP定理总结了上述分布式系统的三个特点:一致性;可用性;分区容忍度;并且,定理指出在系统实现中,三者至多考虑两点。一致性、可用性、多节点可扩展性只能选其次。既然加了锁,那通用的最佳工程架构实践是什么?网上最常见的做法是:节点连通性、多节点Scalability和连接异常的处理必须保证满足P;ConsistencyC和AvailabilityA通常是可选的;选择ConsistencyC,例如:传统的单库水平切分就是这种类型的典型选择;选择AvailabilityA,例如:双主库同步高可用是典型的此类选择;强一致性困难怎么办?单点序列化可以保证“强一致性”,但是对系统的并发性能和高可用有较大的影响,互联网的玩法更多的是“最终一致性”。短期内可能读不到最新的数据,但在一个可接受的时间窗口后,可以读到最新的数据。比如:数据库主从同步,从库上的数据是最终一致性。总结CAP可以理解为一致性、可用性、连接性和可扩展性;CAP只能三选二;最常见的做法是AP+最终一致性;【本文为专栏作家《58神剑》原创稿件,转载请联系原作者】点此查看该作者更多好文
