科技一周~夜空里,有多少星辰的进程?
作者 硅谷寒 | 2014-03-23 13:06 | 类型 硅谷科技周报 | Comments Off
系列目录 科技一周
科技一周~夜空里,有多少星辰的进程? 2014/03/22 某一个夜晚,我独自仰望星空,幻想宇宙,看那遥远的星辰,罗列似棋,浩如烟海,但不知渺渺深处,来自何方,又归去何处?时空既然一致,奈何一个有初始,而另一却无边界?星河灿灿,是有序而列,还是并无因果?我只是一个普通到不能的人,自然无法破解心中之疑问,但这世上,毕竟有太多的天才,她(他)们定可勘破宇宙,洞悉天机。就像本年度图灵奖得主,Leslie Lamport,或许那无数的星辰,在他的眼里,不过是千万个计算的节点,而整个宇宙,又岂不是诺大的一个分布式系统?
本周科普聊天,讲讲新科图灵奖得主Lamport在其经典论文里所提及的“如何解决分布式系统中的互斥问题”。所谓“互斥问题”,是指在系统中的某一资源,在任何一个时间点上只能接受一个线程的请求,直到该线程把资源释放之后,该资源才可以再接受其它线程的请求。如果互斥问题没有解决好,很有可能导致几个线程互相死锁,从而使整个系统停止。我无意去使用艰深的学术词汇,在这里,仅仅用一个生动的事例来说明之。 清朝乾隆四十六年,兼任户部尚书的军机大臣和珅,有感于往年黄河洪灾之害,特别定制了一套洪灾救援方案:位于黄河上游之省份若发生洪灾,其巡抚不仅要向军机处发出钱粮求援文件,还要同时向其下游之省份发出“本省已遇洪灾”的警告;下游之省份在收到上游洪灾警告后,如果也遭受了洪灾,需在其钱粮救援文件的开篇加注“上游省份先受灾”。 这样一套方案的好处是,不会扰乱救援的“因果”(happened-before)顺序,先受灾的省份将会先得到救援。举例来说,河南省在山东省的上游,按照以前旧的方案,当河南遭受洪灾,开封府向北京发出求援信,需要约3天时间才能到达京城;通常在河南遭受洪灾之后约2天,山东省就会遭灾,而从济南府发送求援信到京城,只需约1天。这样的结果是,山东省的求援信有可能会比河南先到京城,从而令军机处给后遭灾的山东先发去了钱粮。因为钱粮是一种“紧缺资源”,军机处需要重新筹措,于是河南的灾民就会处于一种长时间得不到救援的状态。这与“先遭灾先救援”的准则相矛盾。 改换为新方案后,开封通知济南的时间小于2天,所以济南会在洪灾到来之前,就知道河南先受灾。这样,即使山东的信件先到京城,由于其上加盖了上游河南先遭灾的说明,军机处很容易知道河南在山东之前已经遭灾,于是可以稍等片刻,待河南信件到达,则先把救援钱粮发送到河南;而后再筹措下一批钱粮予以山东。这样就会与救灾准则相吻合。 其实,和珅的方案暗含了Lamport在其经典论文[5]中所设计的“化偏序为全序”和“逻辑时钟”的概念。如果把河南、山东、北京三个地区当做三个分布式并发进程,受灾与求援是两种事件,那么三地之间所“传递的信件关系”则定义了这些事件的一个“全序”(Total Order);在全序的基础上,河南和山东各自在自己的求援信里都注明了“逻辑”的时间戳,从而可以保证因果序列的一致性。 怎么样,大贪官也可以是天才吧,和珅可是比Lamport大了191岁呦!(注:严格说来,这种时间戳是基于真实的“物理时钟”,至于“逻辑时钟”和“物理时钟”的解释,留待下期讨论) [1]. ACM.org, http://amturing.acm.org/award_winners/lamport_1205376.cfm , Mar 2014. [2]. Ryan W. Neal, Google sued for data-mining, http://www.ibtimes.com/google-sued-data-mining-california-students-claim-violation-educational-privacy-1562198 , Mar 2014. [3]. Brad Molen, Google announces android wear, http://www.engadget.com/2014/03/18/google-android-wear/ , Mar 2014. [4]. Colin Druce-McFadden, LEGO robot defeats Rubik’s cube in world record time, http://www.dvice.com/2014-3-17/lego-robot-defeats-rubiks-cube-world-record-time , Mar 2014. [5]. Lamport, L. “Time, clocks, and the ordering of events in a distributed system”, Communications of the ACM, 1978, 21(7): 558-565. 图1. [1]. 图2. [3]. 图3. [4]. 注:文中和珅故事,纯属虚构,在“意”不在“形”。
| |