三月的第一个版本周,任务超级多,全组同学几乎天天加班到22点左右,版本日那天更是到凌晨两点半才回家。那段期间,我发了一条朋友圈:“求解如何短时间多线程高质量地做任务?”没想到得到朋友们的热烈讨论:
先说一说字数最多的那个吧,虽然我是程序媛,但是我能说在这之前完全没听说过CAP理论吗(捂脸)。前几天在喜马拉雅上听到吴晓波的《说好的人民币国际化,为何突然加大了管制?》第一次听说了蒙代尔三角理论(三元悖论)。(感觉自己好羞羞,知道的东西太少太少了。)于是决定抽空写一写这神奇的三角。
CAP理论
哎呦,妈呀!概念很简单,理解起来却很复杂,就简单说说概念吧。
CAP是一致性(Consistency)、可用性(Availability)、partition-tolerance(分区容错)的简写。在介绍CAP之前,先说一说开发人员最常用和最熟悉的关系型数据库。关系型数据库中有个概念叫事务,事务的特点概括起来就是ACID,即原子性(Atomicity)、一致性(Consistency)、独立性(Isolation)和持久性(Durability)。CAP的前提是在分布式系统中,如果丢弃P特性的话,就失去分布式的意义了。通常来讲,在NoSQL或者大规模的分布式系统设计当中,会优先选择A和P,但这不意味着就一定会放弃C,因为一致性是有区分的:强一致性和最终一致性。对于大多Web应用而言,其实并不需要强一致性。举个简单的例子:淘宝和12306。淘宝的商品信息、促销数据等其实都可以做缓存,而12306的商品是一个个座位,座位与座位,座位与站点等之间的关联性很大,实时性要求也很高,所以对于12306的商品而言,一致性要求是非常高的,所以它的可用性和分区容错就会被影响到了。淘宝的商品相对独立,一致性要求并不是很高。其实,真正强一致性的例子应该是银行账户的信息吧。
大概就是这样吧,还是不能理解CAP理论的话,可以参看分布式系统之CAP理论。
蒙代尔三角理论
经济学果然比计算机难多了。
蒙代尔三角理论的三个角是<b>货币政策的独立性</b>、<b>资本自由流动</b>、<b>汇率稳定</b>。拿香港为例,作为国际金融中心,想要的是资本的自由流动和汇率稳定(盯住美国,利率水准由美国主导),放弃的是货币政策的独立性。拿中国为例,最重视的是货币政策的独立性,资本自由流动和汇率稳定二者自由浮动吧,根据资本市场的具体情况具体调整了。前两年,人民币贬值,中国的外汇储备由3.99万亿跌破3万亿,政府为了稳定人民币汇率,在某种程度上放弃了资本流动的幅度,这就是为什么今年以来国民越来越难将人民币汇到海外。所以蒙代尔三角理论和CAP理论类似,只是说无法同时满足最优,重点就看你最看重点在哪里了。
这些理论都是人类智慧的结晶,然而,这些理论的背后是不是表明了一种现象:人都是贪心的,都是追求完美的,希望每一方面都能达到理想状态,然而并非事事皆能尽人意的。突然又想到今天(2017-03-31)早上听吴军的硅谷来信,讲庄子的“吾生也有涯,而知也无涯,以有涯随无涯,殆已!”这句话大家都懂,我就不多说了,就讲讲吴军提到的一个故事吧。有两个姑娘想出国深造,一个是公务员,整天没什么事做,但是她要美容要做指甲要与闺蜜们约会,这些她都不想丢下,于是一周加起来背单词的时间也不到十小时,所以结果可想而知;另一个姑娘是个护士,护士有多忙不用我说,偶尔还要值夜班,然而,她把除了工作以外的所有时间都只用来做背单词这一件事,最后被美国著名医科大学录取,所以优秀的人其实都只在做一件事。回到开头我在朋友圈问的那个问题:“求解如何短时间多线程高质量地做任务?”短时间、多线程、高质量就好比蒙代尔三角理论的三个角,如果希望每个角都达到理想效果,也许什么事情都做不好。这个时候,优先级的划分以及减法运算的使用显得尤其重要。之所以会写这篇文章,一是想记录一下自己学到的理论知识,二是希望自己可以根据这些理论知识对于生活中遇到的某些现象有主动思考的意识,并能够拥有脱离现象看本质的领悟力吧。
学海无涯,与你为伴!