由操作系统的存储结构和CAP原则想到架构中的权衡
架构实际上一种权衡的艺术,它的美往往体现在众多矛盾体间的周旋和则中。可以说,没有最好的架构,只有最合适的架构。
在一些经典的系统中常常存在多个矛盾因素并存的情况,而这些系统的经典架构就反映出如何解决这些矛盾而相克的因素的方案,比如操作系统的存储结构和分布式系统中CAP原则就是典型的例子。
1. 操作系统的存储要达到的目的有以下三个:
- 快速存取
- 大容量
- 单位容量的低成本
而这三个目的是相互矛盾和牵制的,存取越快单位容量成本越高;容量越大,存取速度越慢;容量越大,价格越低。既然存在这些客观因素就只能靠架构来解决,操作系统采取的办法就是层次化的存储架构。把不同容量、速度和成本的存储组合起来,层次化的提供存取服务,从上往下看,顺序是速度又快变慢,容量由小变大,单位成本由高变低,访问频率由高变低。其中的关键就在这个访问频率,通过合适的策略保证绝大多数的访问集中在上层才能体现出这种分层结构的优势。
2. 分布式系统要正常运转一般要满足以下三个因素:
- 一致性(Consistency )
- 可用性(Availability )
- 可分布性(Partition Tolerance )
而以上三个因素是无法同时满足的,即所谓的CAP原则,往往只能满足其二而放弃其一。舍谁弃谁得由具体环境而定,像大型互联网这种应用场景,往往是采取BASE(B asically A vailable, S oft-state, E ventually consistent)架构,在具体解决方案上采用以下手段:
- 异步交互(基于事件或消息机制)
- 最终一致性(具体可见Eventually Consistent )
以上两种场景的具体技术暂不去深究,主要是可从中感受到一些解决矛盾问题的原则和思路:
- 对于无法一击致命的问题,可以采取分而治之,可水平分层(如存储结构),也可垂直按领域分(如BASE)
- 抓主要矛盾,在次要矛盾上进行可妥协性解决
- 各尽其能,组合其优。系统各个部分都有其优势和劣势,架构的关键在于找一种组合,尽可能地体现出各个部分的优点,并规避其缺点,往往可把一堆残缺物变成一个完美的整体,其实也可把这个原则用于团队组建和管理上。
相关推荐
cywhoyi 2020-11-23
rise 2020-11-22
sssdssxss 2020-11-20
xuedabao 2020-11-19
alien 2020-11-15
JLow 2020-11-12
ruancw 2020-11-10
地平线 2020-11-02
yinren 2020-11-02
evolone 2020-10-29
liupengqwert 2020-10-28
acaoye 2020-10-27
jyj0 2020-10-27
ruancw 2020-10-27
JAVA飘香 2020-10-26
withjeffrey 2020-10-23
litefish 2020-10-16
richermen 2020-10-15
kjyiyi 2020-10-10