2012年9月27日星期四

CAP设计原则

CAP设计原则,是Brewer教授在2000年提出的,它包括了三个方面:
         C(consistency)一致性:数据的一致性,多台服务器间的数据保持一致。
         A(Availability)可用性:即表示性能要求,响应速度快,效率高。
         P(Partition tolerance):分区容错性。一个服务需要在局部出错的情况下,没有出错的那部分被复制的数据分区仍然可以支持部分服务的操作,可以简单的理解为可以很容易的在线增减机器以达到更高的扩展性,即所谓的横向扩展能力。

以上的三点,同时最多只能满足两点。而分区容错是必须要被满足的。大部分情况都会在CA中间进行取舍。

        在海量数据访问环境下,会有一些基本的策略来提高服务质量,例如:

1. 数据sharding。数据分片能够将海量数据的单张数据表拆分,从而提高单表查询效率。但是由此带来的数据一致性维护开销会大大加大。
2. 缓存(cache)。增加cache会大大提高访问速度,但是cache的扩展又是一个头疼的问题,即使在使用一致性hash算法的前提下,扩展节点仍然会造成cache的失效问题。我们还会有一个监控系统,来监控每个节点的cache的状态,包括容量,命中率等。
3. 灰度发布:只开放部分用户验证系统的可用性,在服务稳定后再向外完全推出也是一个很好的策略方案。
4. 监控和报警。没有完美运行的服务,及时发现解决问题是必不可少的。良好的监控报警能够使服务不断的得到优化,从而越来越健壮。
5. 配置中心化:中心化的配置和监控也是很好的策略,能够帮助管理海量服务,并随时监控服务状态。
6. 自定义的协议。

没有评论:

发表评论