在研究XMPP与红隼利用激励因素是被终止虚拟机的问题不做任何清除或信号,机器将离开泳池。XMPP提供用于肯定是否一个机器被链接到池的基础设施。它也提供了用于共享链接的机器(空闲,忙碌等)的状态的一种机制。html
为研究IM协议的推进力来自读取僵尸网络的一个共同特色是使用IRC用于指挥和控制通讯。web
XMPP表明ê 点¯x tensible 中号 essaging和P resence P rotocol,邮局,它是接受了由IETF在2004年标准(RFC 3920,RFC 3921)。安全
一般状况下,TCP可用于XMPP客户端和服务器之间的基本链接,但HTTP能够用做阱(BOSH)。因为链接与客户端实体和客户端的客户端链接始发都没有用,NAT穿越是否是一个问题。服务器
XMPP指定实现必须使用TLS和SASL。网络
该协议的工做原理是流两个XML文件发送接收XML节。XML节是一个message
,presence
或iq
。在message
与presence
节有关用户的身份发送任一用户的内容或信息(空闲,忙碌等)。该iq
节用于查询使用的get / set操做XMPP服务器。session
的JID是对于系统中的每一个客户端的标识符和相似电子邮件地址。每一个JID能够由用户名,域和资源。格式为:username@domain/resource
。服务器自己能够只用域来处理。由于用户能够具备对服务器在任何给定的时间打开的多个链接,该资源份量被用于区分它们。发送到一条消息username@domain
将被发送到来自该用户的全部链接。然而,消息发送到username@domain/resource
将只发送到特定链接。架构
XMPP能够在服务器之间互操做相似于如何SMTP便可。发送给JID在不一样域的消息将被发送到交付该域。app
XMPP所提供的基础设施已经相匹配的设置,咱们的机库的需求。咱们可使用的JID来标识每一个机器,以及每一个核心若是咱们使用JID资源标识符。装卸机忽然从池中的降低也已经提供给咱们。框架
下一步骤是建立用于实际茶隼应用的架构。有两种方法能够作到这一点:茶隼实现做为XMPP客户端机器人,或者实现红隼做为XMPP服务器组件。在这两种状况下,咱们将有建立的机器上使用一个客户端漫游。dom
客户端BOT只是一个XMPP客户端是一个程序,而不是我的用户。机器人能够发送和接收消息,对他们做出相应的反应。
服务器组件有两种形式:内部和外部。内部组件实际增长的服务器代码自己使用提供的插件API。这样的部件能够由服务器的许可的限制,尤为是当它是GPL的软件。外部组件与服务器分开的程序和使用标准协议(它通讯XEP 0114),所以不依赖于任何特定的服务器实现。
在有实际的业务逻辑方面的客户端漫游和组件之间只有细微的差异。主要的区别是可扩展性 - 组件没有处理名册,这多是资源的大量流失时,名册变大。由于咱们想红隼,以便可以同时管理几千元的机器,使用组件将是实现目标。然而,咱们能够用一个简单的客户端漫游开始到API和后来过渡充实到组件一旦API是更稳定。
有几个可用的XMPP服务器实现,几乎全部的人都在GPL下提供的。最流行 的是jabberd2和ejabberd。Jabberd2是用C语言编写,并ejabberd是写在二郎山。Ejabberd是目前最流行 的XMPP服务器实现。
有对XMPP提供(几Python库xmpppy,PyXMPP)。Xmpppy是在GPL下提供,并PyXMPP是LGPL下提供的。
此外,扭曲的Python除了与框架Wokkel提供使用MIT许可证的XMPP服务器和客户端库。