Shell's Home

Dec 2, 2007 - 1 minute read - Comments

IM之争

我不记得这个Title是否已经写过了,不过无所谓,因为国际形势发生了变化。

以前是ICQ和QQ争霸中国市场。后来MSN加进来一脚,ICQ淡出了。现在Fetion跑进来了。那么未来呢?

我们先看看IM软件的发展方向吧。IM最早的远亲应当是IRC和电子邮件。不过电子邮件对于服务器需求太强大,用于实时对聊做不到。IRC虽然需求小了点,但也在不可承受的范围内。随着网络的发展,大家挂网时间越来越多。所以大家要求一种廉价有效的即时通讯手段。可以和某个人对话,而不用耗费太多的服务器成本。于是,ICQ应运而生了。ICQ可以说是最初的P2P体系者,两个人聊天的时候数据都是互相发送的,只有登录的时候才和服务器通讯。这样的好处是避免了大量的服务器开销,坏处是无法穿透防火墙。

从协议上说,IM的协议互动机制和电子邮件基本是一致的。如果不介意服务器开销的话,我们可以把IM协议构架在POP3和SMTP上。对于这种倾向,有人应该感觉熟悉。那不是MSN的离线消息么?差不多。我们定义发送逻辑为,如果可以找到对方IP就找对方IP,不可以找到对方IP就给对方发送邮件。接受的时候我们就接受邮件,如果碰到特殊格式的就解析掉当做消息处理。同时如果在线则服务器会主动推送邮件消息过来(如果不这样就要非常快的定时查询新消息,非常耗费资源)。那么我们就构成了一个跨越服务商的IM方案了,并且还支持多种客户端和离线消息。例如我们通过智能手机的终端接入进来(记得么?我们的客户端其实只是个特殊点的邮件程序),那就成了无线IM。

问题是,我们动了谁的奶酪?

服务商恐怕对此会非常不高兴。大家知道,电子邮件服务商的竞争比IM残酷多了。那么多IT公司,有多少是纯粹做电子邮件做发起来的?几乎没有。为什么呢?因为电子邮件的开放性强。开放性强是历史的产物,早在主机时代邮件协议就已经固定了,而且有了大量的实现。如果哪个ISP不遵循,那么就没有用户。但是遵循标准的结果就是谁都可以被谁替代。也许某某邮箱系统的界面好看点,某某邮箱系统的容量大点,某某邮箱的速度快点,某某邮箱的垃圾少点。但是都不是不可以替代的,属于非强用户粘着性的产品。(注意我没有使用弱这个词,因为一般人习惯用一个邮箱后也就不怎么更改了)如果邮箱服务收费,ISP会发现,几乎是立刻就没有用户了——

然而IM则是在端点时代才发展出来的,而且始作俑者不是IETF成员,IETF也没有太关注。——这捅了大篓子。现在的IM产品,几乎一个产品和另外一个无法连接。一旦你大部分的朋友使用了某种IM,你也必须被迫使用某种IM。好比贝壳虽然不喜欢QQ(这厮没Linux版本还老封锁协议),但一帮朋友都是QQ的,难道不用?这是意味着IM是扩散用户粘着的产品!

这意味着什么呢?ISP们不用推销,只要他们拥有一定的用户了,用户就会自动扩展用户群。而且你的用户不会轻易离开你,即使你收费,也有相当的用户。如果改成开放的形式,很多大型的IM商就等着客户流失吧。因为他们有相当的客户群,因此往往会收取一定的费用或者产生较多的广告。而IETF已经开始制订IM的交互协议了,即SIMPLE协议。先不说这个协议是否先进是否安全,至少这个协议是开放的。开放的协议意味低附加值的服务,因此IM商肯定会抵制协议的推行。一般的逻辑是。如果SIMPLE协议的总客户集群无法和自己的客户群比较,则不和SIMPLE互通。这样有利于维持自己的IM群,进而取得收益。如果SIMPLE协议的总客户集群已经大大超过了自身的客户群,则和SIMPLE互通。因为可以扩大自己的群,进而扩大用户。所以SIMPLE协议应该是从新兴公司开始推广的。

因此,作为一个用户来说,我更希望大家现在开始使用带有SIMPLE特征的服务。这样更有利于促使更多IM商互通服务,而且还会减少服务的费用。

从历史上说,当今的各大IM厂商自有其来。QQ是特殊历史时期的特殊软件。开始的时候其实就是简化的ICQ中文版,除了中国制造外没有什么特长。后来中国的互联网娱乐潮起,QQ向娱乐转型,主攻大众市场,结果红的发紫。MSN则是更晚时期的产物,是MS攻占全球IM市场的拳头产品,主攻的是商务市场。Fetion是中移动今年新推出的IM产品,特点是和手机互通。

就发展趋势来预期,IM主要呈现两个特点,一个是全分布化,一个是嵌入化。

虽然IM软件的工作原理对于服务器要求不高,然而很多后续服务对于服务器却有强烈需求。我们先仅仅计算基础通讯消费吧。一个人登录的时候先认证,后回传所有好友的名单,套接字。一般登录一次开销最小也要在3K上下。一般成熟的IM软件总用户量至少是1000W以上(国内市场),峰值冗余计算为五倍。计算结果就是一天的通信最少300G,最低带宽需求是20M。这还仅仅是登录造成的通讯成本。我们再考虑持续心跳激活某个特定客户端的重复时间——那这个开销就不是某个服务器所能支持的了。现在的IM服务器端,一般都是服务器组来完成这系列的需求。当然——未来的IM软件,我们的期许绝对不是仅仅1000W用户这个级别了,至少要包含国内的上亿人,加上国际的上亿人。每个IM的有效注册用户规模可能达到数亿这种恐怖规模。加上嵌入化的发展,在线时间也会越来越长。因此服务器的规模也会随之上升,进而造成IM收费时代的到来。

如果要IM持续免费,则我们就必定要发展分布式IM。简单来说,用户登录,持续心跳等等都不以服务器为中心,而以分布网络为中心。服务器只辅之以用户入口和统一的模糊查询的功能。这样会大大减轻服务器的负担,但是也会带来几个问题。

首先是用户的注册,没有用户数据库了。不过不难解决,可以让用户不需要注册。因为没有一个统一的服务器,因此用户注册只需要生成一个UUID,生成一对公私密钥,就算完成了。登录的时候即是告知别人自己的UUID,公钥和套接字即可。需要寻找一个好友的时候,可以使用UUID查询此人的套接字,具体方法请看DHT,Kademila,我上面有写的。

其次是大规模块内容的传输,简单来说其实就是传文件。这些数据如果可以直接传输则没有问题,但是在无根分布系统中,间接数据传输是要过中间机的。这样会造成中间机的网络开销。这个还要看人家乐意不乐意呢。这个没有什么好的解决方法。

最后则是安全问题。这倒不难解决,发送内容用私钥和对方公钥各加密一遍,接受用对方公钥和私钥解密就好了。第一次发送一个统一加密块,后面就用这个块加密,定时更换。兼顾了安全和效率。

IM的另外一个特点就是嵌入化,简单来说就是移植向手机上。中国的移动运营是特殊状态,不过世界的发展大致都是一样的。就是将手机发展为网络终端,然后尽量用软件解决问题。那么中国移动现在的短信优势还能持续多久就是一个非常大的问题了。当然不排除短信优势消灭前飞信拥有了新的特性的可能。