Web应用的数据访问需求和对策
Web数据的访问的主要特点可归纳如下:
? 高并发访问,尤其是读优先。
? 高可用性——系统访问服务不中断(对互联网应用来说这点往往是被重点强调的)。
? 较高的容错要求——系统要求能容忍一定程度的网络链接故障、网络分区故障、机器故障。因为机器多了、分布广了出问题的概率也多得多了。
? 数据访问并非需要严格一直性。
存储架构上的相应对策如下:
最大的技术策略是放弃传统数据访问所要求的 ACID 特性而遵循 BASE + CAP特性—— 所谓ACID 是指:DBMS强调ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性 (Durability)。这些特性保证数据的一致性和安全性,但实现起来必然降低了系统的可用性和访问速度。 因而现在普遍认可的方向是保证可用性和速度,而放弃一定的数据一致性和安全性(互联网应用中多数数据是可再生的,或者容忍错误的,不要求那么准)。BASE + CAP正式这种策略的抽象含义。BASE 是指:基本可用(Basically Availble);软状态(Soft-state);最终一致性(Eventual Consistency )。CAP特性是指:一致性(Consistency);可用性(Availability);分区容忍性(Tolerance of network Partition)等三个需求无法同时满足,必须有取舍。(如果不熟悉这些概念去google 找找吧,尤其是最终一致性这点最为精彩,可参看http://www.allthingsdistributed.com/2007/12/eventually_consistent.html)
为了提高系统吞吐和数据安全,上面我们谈到使用副本技术。而副本系统的访问策略则有一些不同选择。罗列一下吧!
副本传播方式可有——同步方式和异步方式,所谓同步方式是说写入所有副本到给定点需要同步完成;而异步方式则是先写一份到某个点上,然后该点将在延后一定时刻后才将其传播到其它点上。显然同步方式更安全、各副本数据一致性,但可用性低(如果严格同步要求,则是一个点死掉,则写操作即认为失败)、效率低。而异步则效率高(可合并数个请求再一次传播)、可用性高(不要求所有待写入点都严格可用)、但各副本会有一个不一致窗口(因为数据有可能还没传播完成)。
访问逻辑控制方式可有—— 多master 和单master 方式。多master是指每个副本存储点都可接受读写请求,且由其控制传播逻辑。而单master则只能有制定的点负责接收请求,其他点只负责接收master传播过来的读写请求。显然多master效率更高,但更需要控制请求顺序,修正数据冲突。——往往需要借助诸如"数据核对"、"集中决算"等副本冲突解决机制。而单master由于读写都在一个点上串行化了,因此不用解决数据冲突,但缺点就是效率低。
上述四个方式可相互组合,各有利弊。你需要根据自己的应用情况,来选择合适的策略组合。
![](/images/smallPic/fenxiang.png)
能力秀动态
■为期9年共举办18期的大学生网络营销能力秀活动已圆满结束(2009-2018)。能力秀——网络营销开始的地方!祝所有秀友前程似锦!向所有网络营销老师、所有支持能力秀活动的人员和机构、所有为能力秀活动付出辛勤努力的工作人员们表示衷心的感谢并致以崇高的敬意!