入行十几年了,做了不少分布计算、并行计算、内存计算、海量数据处理的项目,按照现在的分类,这些都属于云计算/大数据范畴。今天说说我做过的其中三个项目,只三个。
第一个是我们接到的视频分享网站的视频转码的订单,网站名字就不说了,有替人宣传嫌疑。他们情况是这样,视频网站的内容用MP4格式在网页上播放,但是上传的格式多种多样,我们必须把这些视频统一转换成MP4格式,视频转码的工作想必大家都在自己的电脑上试过,通常一个100M左右的视频转码需要20分钟以上(CPU是Pentium IV)。为了提高转码效率,让用户以接近实时得到结果,必须在收完视频后,立即将一个视频拆分成多个单元,分散到多台计算机上进行转码,然后回收所有转码视频,按照顺序再次组合成一个新视频。我估计现在视频网站都是这个套路。我们这个团队最早是做流媒体起家的,工作没什么难度,轻车熟路,很快就完成了。只要机器足够多,视频差不多可以以接近实时的状态完成转码。后来又再一次改进,从用户上传视频开始立即进行转码,收到一段转一段,用户的视频上传完毕,我们的转码工作也完成,用户可以马上看到自己上传的转码后视频,基本上是零延时,并且稳定性、效率都高于对方提出的要求。做完这个,合作方老板很满意,接着又给了一个CDN的项目。现在我们仍保持着合作的关系。
第二个有点玄乎,项目可以写一篇论文,题目是《关于空中移动目标运行轨迹和落点的问题》。这个项目是XXX发下来的,实质就是炮弹打导弹,大概是想看看能不能打着,论证技术可行性。当时人还在某单位,因为研究领域和空气动力学毫不相关,所以这方面的知识基本属于文盲,知道的也就是那么几个有限的名词和数学公式,但是这正好符合XXX的要求,不需要我们懂这些高深的理论,他们派人和我们合作这个项目。我们的工作就是把很多传感器(他们没明说,但是地球人都明白这东西应该是雷达)接收的数据,包括当前多少公里范围内的空气的风速、风向、地表的曲面率,还有其它一些指标在收集后(这些瞬间产生的三维数据的数据量非常大),分散到一大堆计算机上去执行(测试时准备了100个节点),并且要很快计算出结果(必须比空中运动的目标快)。这其实和现在的SPARK、STORM做的工作很象,要依赖大内存、高性能CPU、和高速网络,跳过硬盘这个瓶颈,才能得以实现快速计算。这个项目花了很长时间,主要是与合作方的沟通改进,然后是再沟通再改进,循环往复,周而复始。后来终于完成了,据说做了试验,可行性很高,上面领导很满意,还摆了庆功酒。反正我没见着也没喝着。其实他们怎么计算的,我到最后也没有搞明白,问过一次,说是秘密。
第三个和两桶油的页岩气有关。当时的情况是在四川涪陵(这个地方产榨菜)发现了大面积的天然气。按照自然规律,油气是共生的,所以两桶油想通过采集页岩样本,分析这个地区地下有没有石油资源,如果有,是不是具有开采价值。这套程序原本已经是有的,艾克森.美孚石油公司开发的,跑在CARY-1向量机上。那套机器是上世纪七八十年代的超级计算机,在当时已经不能满足需要,属于进博物馆之列。而且有些数据分析理论已经过时,需要调整。两桶油最不满意的还是速度太慢,计算一次要几小时几天才能出结果。这一次又是合作,两桶油出熟悉采油的技术专家,我们出并行计算的码农,前前后后合作弄了大半年,算是完成了。这次我们用了新的并行算法,效率提高了一大截。和上次炮弹打导弹一样,整个项目静悄悄开始,静悄悄结束,后面怎么样就不知道了。