一,CAP定理
理解存储,首先需要了解CAP定理。CAP定理是存储系统的基本定理。
可以参考:阮一峰的 CAP 定理的含义
CAP分别为Consistency(内容一致性)、Availability(设备可用性)、Partition tolerance(分区容错性)。Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。
分区容错的意思是,区间通信可能失败。即G1、G2之间通信不可避免有可能失败,所以一般P总是成立;
内容一致性的意思是,G1和G2的内容要一致;
可用性的意思是,若客户端发请求到G1或G2,则提供 服务返回内容。
一般来说,CA是无法同时保证的:
- 若要保证G1、G2内容的一致性,在G1内容发生改变时G2也跟着变,,则必然G2加锁,G2设备的可用性无法保证;
- 若要保证设备的可用性,势必不能加锁,内容一致性无法保证;
在CDN系统中,架构设计时可用性高于一致性;即发布一张网页到 CDN,多个服务器有这张网页的副本。后来发现一个错误,需要更新网页,这时只能每个服务器都更新一遍。这也造成了CDN中一致性相关的业务需求比较多。
CA理论:【一致性+可用性】单点集群,通常在可扩展性上不太强大,如传统Oracle数据库。
CP理论:【一致性+分区】数据的一致性要求高-加锁,如Redis、Mongodb。
AP理论:【可用性+分区】数据的一致性要求低-不加锁,如大多数网站架构的选择。
二,BASE解决方案
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。有三个特性:
基本可用(Basically Available)
软状态(Soft state)
最终一致(Eventually consistent)
三,分布式
分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。
简单来讲:
1,分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。
2,集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。
四,CDN业务分析
CDN厂商作为缓存服务的提供者,在服务框架上选择的是A高可用性和P分区容错,这就必然需要在业务处理和流程策略上多花精力在C内容一致性的保障。当然这也是做CDN测试主要关注的点和线上常出问题的环节。
怎么做CDN相关的测试呢?
首先,模块功能的测试,大纲法切分功能模块,等价类细分功能点,针对每个类做正常测试、边界值测试、异常类测试;
其次,常用的业务流场景测试,正交法、场景法进行流程相关的测试;
再次,软件的详细设计,状态迁移法、因果图法、错误推断法进行更细致的测试;
然后,服务多是迭代产品,功能间的相互影响,新需求对原有需求的影响,最好做自动化;
再后,安全相关的,如劫持、DDOS攻击等线上安全相关的策略;
最后是性能三大类中容量测试、压力测试、稳定性测试。