关于阿里NASA计划的感想

先提醒一下,这篇文章可能大部分都在胡言乱语。

题目里说的,是阿里巴巴最近提出来的 NASA,不知道的可以看这一篇报导。 大概意思就是阿里巴巴要在机器学习、芯片、物联网、操作系统、生物识别等方面砸钱搞科研了。

我最先想到的是昨天看到的王垠的一些文章,他认为 linux 的很多设计存在缺陷, 甚至想亲自出马写一个操作系统。其他方面姑且不论,在分布式计算这一方面, linux 系统是有很大的进步空间的。

linux 设计之初,是没有人想到它会在今后被用来跑高并发的分布式系统的。 当时的主要使用场合是 PC,linux 为了安全性能使用了一些效率较低的设计,比如进程不能共享内存。这个设计直接导致了上下文切换的巨大开销。 在当时看来,上下文切换的开销是可以被接受的。但是,在执行并行计算或者分布式计算任务的时候,上下文切换就成为了性能杀手。 进程/线程切换频繁,加上单独的进程/线程任务相对简单化,后果不用我说你也知到。或许这也是一种千年虫现象吧。 在分布式系统中,我们有的是办法把各种问题转移到 master 或者 client,让每台 server 全心全意当 CPU。 我们可以做到进程内存共享,消灭上下文切换,消灭进程与线程的区别。(说句题外话,消灭线程绝对是一件大快人心的事)

王垠还吐槽了一点,linux 进程交换信息的主要方式是字符串,进程间没法相互传结构性数据。文件读写也是, 我们写一个工具经常还要先写个 parser。这个东西还是一个历史遗留问题,到现在都没有一个结构性数据的统一规范给我们用。 这东西对效率有多大影响也要视具体应用而定,大部分情况影响不大。但是还有一个心情问题:如果分布式系统开发时能随意共享内存, 传递数据结构,开发者的心情肯定会很爽,效率肯定会很高。

我还要补一个方面:通过操作系统层面的函数式数据结构和垃圾回收,消灭绝大部分锁。这不是什么新鲜的事情, 只不过把原来函数式语言编译器做的事情交给操作系统去做了。与其把锁隐藏,不如把锁消灭。当然, 肯定要保留一些变量类型,这方面可以向 clojure 学习。

操作系统方面好像扯了蛮多了。其实这方面的缺陷肯定有不少人已经看到了,但是搞个新的分布式操作系统很可能是个伪需求: 多搞几个集群问题就解决的差不多了。所以分布式 OS 没见到谁搞,手机 OS 倒是搞了一个又一个。

回到那条新闻,马云的 NASA 能搞成什么样子姑且不论,这个计划起码反映了阿里在技术领域的探索欲,这不是百度之流的公司可以比的。 联系到阿里在电商领域的霸主地位,或许阿里能在树十年后成为互联网行业的超级公司。

其他几个领域我都是菜鸟,就不做评论了。