【转】构建大型的XMPP bot(即IM机器人)

kongshanxuelin 2008-09-26
最近看到一篇文章 Thoughts On Scalable XMPP Bots, 描述构建一个大型基于IM bot的一些思路。

    * Client Bot

就是Client 自己按照IM协议作为一个普通的客户连接到服务器。普通用户添加这个bot账号之后可以进一步进行相关的业务交互。Client Bot在实现各种专有IM系统中比较常见,比如MSN bot, GTalk Bot等。

Client Bot最大的问题就是能够添加的好友列表的长度限制。因为bot是一个普通的客户端,所以普通客户端最多只能添加数百个好友的问题就成了最大的障碍。

另外由于bot通常流量过大,而且会给服务器造成额外压力,很容易被服务器当做发广告信息或垃圾信息或其他业务竞争方面的原因遭受屏蔽。

综上所述,基于client bot构建一个大型业务系统不是最佳的选择。

    * Component Bot

这个只对XMPP系统而言,XMPP中Component使用专门的协议与服务器交互。实际上component有自己的domain, 如 rabbiter 使用 rabbiter@rabbiter.DOMAIN

在 ejabberd 上,component可以使用round robin负载均衡算法,将component请求分布到多个相同component name的服务上。以实现一个跨服务器的大型业务系统。

    * S2S Bot

Bot有自己专门的域名,如 tim-bot.com, 它可以在 DNS 设置轮询使服务定向到多个具体的服务器上。但是由于此方法需要单独申请域名并配置配置独立的服务,这个做法显得有点过于复杂。

Component和S2S bot适合构建自己的基于bot的服务。比如文章开头连接中所说的Chesspark(一个实现下棋游戏的bot),以及以前介绍的Rabbiter一个开源的XMPP微博客实现。
Global site tag (gtag.js) - Google Analytics