再引
在盛润,做的第二个有意义的产品,叫做PIMS。PIMS,是Prosperity Instant Messaging System的缩写。那是2000年的事情了,那个时候,我就意识到在企业内部可以利用IM来做一些有趣的应用。但是,那只是我个人的想法而已,盛润的领导们已经无心恋战,所以,对于这个PIMS的潜在价值,我们没能去深入发掘。而今天,在中国企业里面主流的IM系统,是腾讯的RTX。
在我自己与人合伙创业的时候,盛润有几个做销售的同事也出去整了个公司,想代理一些软硬件产品。他们找到我,希望看一下我们当时在做的产品。看完之后,他们不置可否,显然是没什么兴趣。但我清楚地记得,闲聊中,他们看似不经意地问我,那个PIMS还有没有继续做。我看出来,他们其实是对这个东西有兴趣。
从MSN发展的势头来看,我感觉,将来在企业里面唱主角的IM系统,会是微软。因为微软具有整合桌面的能力,这是其它的厂商难以防御的,也是它的用户难以抗拒的。
但PIMS的出发点有些不同,这使它具备了一点独特性。让我们一起来看看。
背景
做PIMS,并不是盛润产品开发的直接要求。盛润从来也没有准备过卖这样一个产品。它脱胎于盛润的主力产品:网上交易系统。
简单地说,当时盛润的网上交易系统分为四个部分:
1。客户端,具备上网能力。
2。客户接入服务器,位于互联网上,有独立IP。一般是统一接入,但也有可能分布在不同城市,其间进行负载均衡。
3。交易分发服务器,能被接入服务器找到,一般位于互联网上,可能具有独立IP。分发服务器可能位于不同的城市托管地。
4。交易及查询处理服务器,位于券商内网。它与分发服务器需使用硬件隔离。它与券商的核心交易系统相连。
这个系统有几个问题:
1。不稳定。要求7×24小时在线的服务,隔三差五地出问题。
2。接入服务器和分发服务器各自的角色不清晰。而且有单点故障,因为没有实现群集。
3。分发服务器在决定分发路径的时候,需要解包观察其中的数据。这使它和应用耦合了。
我们对它进行了重新设计。我们,包括两个人:建国和我。我负责设计和测试,他负责实施。建国是我的朋友,也是一个超级程序员,他一人包办了PIMS的所有代码实现。至今令我景仰。
设计
在设计上,我走了一些弯路。
因为开始的时候,受到原有架构的影响,总是想把它做成一个层级结构。客户层,接入层,分发层,处理层。然后在后三层都加入群集功能。这是我们的1.0版。还是一个网上交易系统。它虽然解决了原有系统的主要问题,但是,让我感觉不爽。
在2.0版里面,我完全转换了设计思路。我提出了PIMS的概念。
首先,我看到了藏在网上交易系统后面的一个企业应用模式:一个完整的企业应用,通常,是跨越多个网段的。比如,在这个网上交易系统里面,客户端根本不可能直接访问处理服务器。整个应用跨越了三个以上的网段。而一个企业,如果希望将其业务应用延伸至其客户,跨越网段就是不可避免的。VPN在这里显然不是一个好的解决方式。
如果能够在无论多少网段上构建一个跨网段的名字空间,问题就会简单许多。如果只要设备加入这个名字空间,就能够通过简单的名字访问所需的服务,问题就会简单许多。说起来容易,做起来难。
我借鉴了IP网络的设计思路。我把它设计成一个网状结构。
这个名字空间,主要分为两个部分:路由器和终端设备。所有的路由,通过不同的网段,以某种拓扑结构相互连接成一个网络,它们都具有固定的全局唯一的名字。一个终端设备只要连上了任意一个路由,就可以访问到这个名字空间中的任何节点。终端设备又分为两种:静态终端和动态终端。静态终端具备固定名字,不同的终端可以具备相同的名字,这表明它们对外可以表现为同等物,相当于群集。动态终端的名字在连接上路由之后,由路由动态分配,此名字带上路由的名字作为后缀,可保证全局唯一。
在新的架构下,客户端是动态终端,处理器是静态终端,接入和分发服务器都成为路由。因为在新的架构下,路由同时具备设备接入和消息分发的能力。一般地,提供服务的设备都实现成静态终端,请求服务的设备都实现成动态终端。我们完整地实现路由器,同时提供终端设备的API开发包,使得终端的构造更方便。
那么,为什么叫PIMS呢?这中间的IM从何而来呢?
