案例|S3、Cassandra、HDFS设计中隐藏的高可用法
《案例|S3、Cassandra、HDFS设计中隐藏的高可用法》要点: Anything that can go wrong will go wrong.会出错的事总会出错.————墨菲定律高可用 NoSQL 数据库是指服务无中断地持续运行的系统.许多基于网站的业务要求数据服务能够一直不中断.例如,在线购物的数据库需要保证 7 x 24 的可用性. 为什么需要它们一直运行?假设你的数据库支撑着一个全球化的电子商务网站,那么数分钟的宕机就可能造成一个消费者的购物车被清空,或是系统在德国主要消费时段停止响应.这些类型的故障将会使你的顾客转而选择你的竞争对手并降低你的消费者信任度. 分布式 NoSQL 系统降低了那些需要可扩展性和永久在线特性的系统的每笔交易成本.虽然多数 NoSQL 系统使用非标准的查询语言,但它们的设计和可以部署在低成本的云平台的能力,为那些因初创且需要提供永久在线功能的公司提供了可能的选择. 度量 NoSQL 数据库的可用性
下表展示了一个基于典型可用性目标计算出的每年宕机时间的例子. 可用性目标样例和年宕机时间量化整体系统可用性并不仅仅是计算出某个数字.为了客观地评估 NoSQL 系统,还需要了解系统可用性中的细化指标. 如果一个业务部门声明他们不能承担一个日历年宕机 8 小时的后果,那么就需要构建一个提供 3 个 9 可用性的基础设施系统.多数固定电话交换机的设计目标是达到 5 个 9 的可用性,或每年不超过 5 分钟的宕机时间.现今,除了某些需要更高可用性的场景,5 个 9 被认为是数据服务的黄金标准. 业界使用服务级别协议(service level agreement,SLA)这个术语来描述任何数据服务期望达到的可用性指标.SLA 是服务提供商和客户之间达成的一种书面协议.它定义了服务商需要提供的服务及其期望的可用性和响应时间,而非服务的提供方式.在起草 SLA 时需要考虑以下因素.
NoSQL 系统的可用性配置也许会和上面这些普适规则有出入,但关注点都不应该只是某个单一可用性指标. 案例研究:亚马逊 S3 的 SLA现在,让我们来看看亚马逊为 S3 存储服务编写的 SLA.亚马逊的 S3 是现今最可靠的基于云端的 KV 存储服务,且即使在遇到大量读写高峰的情况下也能持续良好运行.传闻中,这个系统中存储的数据在 2012 年夏季达到了 1 万亿条,为目前容量最大的云端存储.这些数据平均下来大概能达到全球人均 150 条记录. 亚马逊在网站上声明了如下数个可用性指标.
仔细阅读亚马逊的 SLA 对你仍会有帮助.例如,协议定义错误率为 S3 返回了内部错误代码的请求个数,但完全没有提到任何与缓慢的响应时间相关的条目. 在实践中,多数用户将获得的可用性远超过 SLA 中写明的最小值.一个独立的测试服务发现 S3 能够达到 100% 的可用性,即使在长时间高负载的情况下也一样. 预测系统可用性如果要构建一个 NoSQL 数据库,就要能够预测这个数据库的可靠性.你也需要一些工具帮助你分析数据库服务的响应时间. 可用性的预测方法是通过观测每个被依赖的(单点故障)系统组件的可用性估计值来计算系统总体可用性.如果每个子系统使用一个像 99.9 这样的简单可用性估计值,那么将每个数值相乘就可以得出系统总体可用性的估计值.
(编辑:ASP站长网) |