TCP/IP协议设计遵循的是“端到端透明”(E2E)的理念,即假设网络是不可靠的,因此在两个通信端点之间,即使只是还存在一条链路,通信还可以继续。从大约2005年开始Ipbaobao撰写过很多文章加以介绍,也小赚了一些稿费(:-
在ipbabao之前的讨论中,没有探讨该理念潜藏的另外一个基本假设:如果连两个通信终端不可靠了就没法了,因为E2E只假设网络不可靠,因此将所有可靠性的机制(如TCP)都放在了终端上。
这种假设似乎很合理,如果连通信终端都不工作了,那么这次通信是根本没法进行的,因为不可能让终端也可以迂回,也可以无状态,也可以无连接!ipbaobao之前讨论E2E时,也就没有探讨过终端的影响。
从云计算的角度看,显然受到了挑战:从用户终端看,如果云计算的一个服务器(也是终端)宕机了,为何不能切换到另外一个服务器(从TCP的角度看,指不同IP地址的服务器)工作?如果一个地区的云服务/IDC崩溃了,为何不能切换到另外一个云服务/IDC?
4月份Amazon的EC2宕机,云计算用户出现了两个选择:1)只租用一个地方的云服务器,宕机后,服务也就没法了,一般小公司都是这样的,省钱;2)同时租用2个以上(不能地区)的EC2服务,以便获得更高的可靠性,但这让成本翻番了,一些Money比较充裕的公司,选择了这种。如果你是做通信的,看第二种情况是不很熟悉?对,是传统电信的双机、双链路备份的思想,难道云计算让可靠性问题的解决思路,又回到了传统通信时代?
可靠了会很贵,但又不是所有云应用都希望的,就象有些互联网应用是UDP方式的,有些是TCP方式的那样。
这引发了一个新议题:如果像互联网E2E的基本假设那样,云服务是不可靠的,那么可靠性都需要应用层解决吗,是否需要设计新的一层面向云计算的TCP呢?
可以把第一种服务叫做UDP式云服务,第二种叫TCP式云服务。