2007年3月13日星期二

从地球到火星

反波关于“互联网之父” ---- Vinton Gray Cerf 的节目中,Vinton 给清华的学生介绍了一个虚拟项目:在星际间架设互联网。遇到两个问题:

1、Availability(可用性)
地球和火星在同一个黄道面,不同的轨道和周期,它们必然有个时候相位差为180度,即地球、太阳和火星呈一直线,太阳在中间。这个时候通信就会中断,怎么办?

2、Latency(延迟性)
地球到火星之间的距离用光速衡量,最近三分半,最远二十分钟。这就造成了相当大的延迟,最坏的情况,这边问“吃了么?”,那边听到了回答“没呢”,这边要四十分钟以后才能听到这个回答,这时那边也许已经吃完了:)

我喜欢这类虚拟的假设,解决虚拟的问题有时会对现实很有帮助。就拿 Vinton 他们发明的 TCP/IP 来说,在它之前没有互联网,而它确立的寻址方法、分包传输,创造了这个人类有史以来最快速有效的信息交流系统。

第一个问题其实在我看来不算问题。现有 TCP/IP 在构架之初就确立了一套多路径的传输体系,两点之间的路径不唯一,路由器之类的网络设备通过各种路由协议和算法找到一条当时最短(lowest cost)的路径。Cisco 靠这个发了大财,本世纪初年它平均每个员工创造的利润远超世界首富的公司微软。而对一般的用户网民来说,大家都知道一个叫 Proxy(代理服务器)的东西。当两点之间不能直接通信,可以通过第三点中转。比方说地球到火星的直线连接被太阳遮断了,可以通过木星、土星或随便什么星中转嘛。谁规定一定要走直线来着?

第二个问题才真正有挑战。网络视频提供商 YouTube 其实只要在美国有一个服务器就够了,只要带宽足够,世界各地用户下载收看的体验是差不多的。而网络游戏提供商 Blizzard 就不一样,早在玩“星际争霸”战网的时代,我就只能上亚洲服务器,如果上北美服务器,操作再好也赢不了。因为延迟的关系,你看到的战场可能是半秒钟前的情况,你发送的指令半秒钟以后才能传到战场,差了一秒钟的时间你怎么可能打赢本地玩家?人们说网络慢,多数时候说的是带宽不够,而在我们游戏玩家的概念中,带宽和延迟是完全不同的两个概念,带宽再大也解决不了延迟问题。

要解决第二个问题,可以参考网络游戏公司分地域假设服务器的方法,不光游戏公司,很多网站在不同的网络也有镜像服务器(mirror)。电信和网通分家以后,在中国开个网站也要弄两套一模一样的服务器,一边放一个。用“有一说二”胖大海的说法就是“戈尔巴乔夫的屁股----分裂了,分裂了”(胖哥讽刺的是移动和联通)。这是题外话。

学过《信号与系统》的同学知道系统可分即时系统和动态系统。输入直接决定输出的叫做即时系统。静态页面就是即时系统,任何人任何时间访问同一个页面,得到的结果都是一样的,这种系统最方便镜像。服务器里所谓 load balance 一般就是针对这样的静态数据。那些静态的数据,地球和火星上各备一份,问题解决了一小半,动态系统怎么办?

动态系统的输出由输入和系统状态决定,过去的输入可能会影响现在输出。最简单的比方就是银行账户,每次操作的结果都可能影响下次操作。我能想到的就是不断复制系统状态,而复制过程又出现了很多问题,比方说以哪一边为基准?哪些关键数据要死锁/排它访问。这些问题在地球上就把我们整得七荤八素,更别说火星了。

最终我想,出路大概有两条:

1、人们最终会改变生活习惯,回到古时候那种"烽火连三月,家书抵万金"的通信时代,对通信的非实时性有客观的认识。

2、再出一个最好是一群和爱因斯坦同样伟大的物理学家,打破现有空间理论,发现某种虫洞效应,证明两点之间有比直线更短的路径,或者发现有比光速更快的传播信息的方式。

我宁愿是第一种出路,这样下辈子当我觉得地球人很烦的时候至少我还可以去火星。即便回不去通信不发达的古代作个峨冠博带的文士,能去火星当个土著也不赖 ---- 每天吃饱睡足,听听后弦的歌《只爱火星人》



没有评论: