xmpp的理解

     最近有个项目,需要在现有的im服务体系下,扩展做跨集群跨idc之间的通信。其中每个集群都有自己的帐号体系,并且需要实现他们之间关系的互通以及通信。看来要实现去中心化了。xmpp正好是个很好的范例,但不同的是我们服务协议是私有的,不过还好可以借鉴里面很多好的思想。如果是个新项目,当然肯定首选xmpp来搞了。
     不知道xmpp当时是否借鉴了电子邮箱的设计思想,无中心化绝对是xmpp的灵魂,很赞。
     在看xmpp协议之前自己想过一些解决方案,但很复杂而且不易实现和扩展,所以才有看完xmpp后的赞叹。
     说说xmpp的几个特性吧。
     1.如何实现无中心?无中心化最大的问题就是如何找到一个用户是在哪个集群上登录的,xmpp是把用户的帐号用域名的方式描述,譬如abc@gmail.com,域名就是集群的地址。
所有注册和登录的用户只能访问这个制定的集群,比如所有gtalk的用户,不管用什么客户端都必须访问gmail这个地址。如果abc@gmail相加。abc@msn.com只需要告诉gmali.com他要添加abc@msn就可以饿了,gmail会把你的请求转到msn的服务器上,一旦双方建立关系,那么在msn和gmail 的db里都会建立双方关系列表,当下次再登录时,就可以看到彼此。。当需要聊天时,同样通过服务器可以中转。
    2. 扩展性,不用多说了,xml的描述性和我们的二进制协议,完全没有可比性。
    3. 状态和消息的订阅,这个也比较有特点,估计是这样发布和订阅的模式可以抽象出所有的应用场景,而且很好描述。
    4. 用户可以自己写gtalk的客户端来登陆gtalk,如果qq可以这样是不是就逆天了,岂不是会多了无数珊瑚虫,哈哈,qq肯定是不敢这么开放的。这个的原理就在于协议是开放的,客户端就可以随便搞。
   

posted on 2013-09-24 22:20  simplemind  阅读(539)  评论(0)    收藏  举报

导航