深入认识Tigase XMPP Server(上)

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

本文的目的是深入认识Tigase XMPP Server的特性。

1、Tigase HTTP API

实现XMPP和HTTP之间的桥梁,可通过REST调用实现对Tigase安装的管理和维护,可通过脚本API在执行时进行扩展。

使用HTTP API组件,能够:
1)下载Tigase XMPPserver执行时的统计,它包括了1000种不同的性能度量。能够做到轻松、高速的监控和早期预警等功能。

2)通过REST API管理Tigase XMPPserver。实现Tigaseserver与第三方维护、管理系统的集成。
3)灵活的脚本框架,能够在执行时加入管理任务。能够在扩展管理和维护功能时无需重新启动服务。
4)灵活的HTTP API框架。能够加入很多其它的服务并托管到XMPP引擎上。

2、Tigase XMPP Server

全球大约有1亿的设备连接到Tigaseserver上,全球大约有1100台server部署执行着Tigaseserver。

业界有非常多优秀的开源XMPPserver,比方eJabberd、Openfire、Jabberd2、Prosody,另一些优秀的商业XMPPserver,比方lsode、Jabber XCP等。

在XMPP.ORG站点上能够看到完整的列表。

Tigase XMPPserver是相当独特的,它全然支持最新的规范(如RFC6120-XMPP CORE、RFC6121-XMPP IM和其它扩展)。
1)高度优化的。主二进制文件小于1MB。可执行于10MB内存的设备上。

2)高度模块化。

每一个部件或组件都能够通过配置载入或替代。

3)非常灵活。

集成到系统中非常方便,支持开箱即用的集群。无需寻找附加软件或扩展库。
4)为低、中、高档server而设计。

还在Amazon的EC2云上广泛測试过。

5)良好的測试。

有专门的工具来执行自己主动化測试,还能够手动执行兼容性測试。以及大量的负载測试。

全部的測试结果都是公开的,全部測试使用的工具和配置细节都是公开的。
6)支持脚本。

支持Groovy、Python、Ruby、Scala等脚本语言编写扩展。

7)易于监控。能够通过HTTP、SNMP、JMX、XMPP等方式监控server。
8)支持SSL。Tigase从设计上就保证了安全,保护用户的隐私。

API不同意从一用户訪问另一用户的数据。在server端实现了强隔离。

3、Tigase ACS

Tigase单个安装(One Installation)能够支撑1400万在线用户;单个安装美妙能够处理50万条消息;单个安装能够实现40台server集群。即Tigase ACS。

Tigase ACS是Tigase XMPPserver的商业级的集群实现。它专注于某些目标。如联系人列表超过10个,以及大规模XMPP系统工作在集群模式:
1)在安装时解决网络流量的问题
2)同意扩展到上百万的在线用户或设备
3)同意把负载分配到多种机器上
4)实现系统的高可用,预防服务的中断
5)支持超大群聊
6)提供消息推送服务

使用ACS能够达到:
1)降低集群节点间的网络流量10倍以上
2)降低CPU利用率至少5倍
3)在高负载情况下也能提供可靠服务
4)支持大量的连接
在设计上可处理500万以上的在线用户。

我们測试过产品状态,支持150万在线用户。
5)支持多server
设计上能够在50台以上server上有效工作。測试过10个集群节点,产品系统执行在40台机器的情况。

6)部署极其简单
仅仅需改动一点配置。数据库层不变。

4、Tigase公布订阅(PubSub)

Tigase支持完整的公布/订阅(PubSub)扩展规范。

能够把消息推送到上百万的频道中。每一个频道能够有上百万的订阅用户。

集群模式下提供了近乎线性的可扩展性和负载分配。

公布订阅扩展同意你创建频道供用户订阅,你能够把内容推送到频道并公布。

然后全部内容或者仅仅是更新的内容会被发送给全部的订阅者。这样的基于角色的系统,与群聊相似。但订阅者不必在线。离线也能把消息推送给用户(仅仅要用户一上线就能收到)。

公布订阅功能能够做什么?
1)能够依据兴趣分组内容,如体育、科学、天气、新闻等,并把内容推送给感兴趣的人。
2)能够用于灾害预警。居民能够依据地理位置进行分组。
3)能够提供基于位置的服务。
4)业务流程能够使用此方式来发送警告。

Tigase的公布订阅能够提供:
1)交付近乎实时的通知给订阅频道的用户
2)基于角色的订阅系统。决定哪些用户仅仅能接收/读取内容。哪些用户能够公布内容到频道,以及频道级管理员、全局管理员。

3)自己定义内容和通知元数据能够非常好地匹配各种需求。

4)灵活的基于用户的交付系统。能够决定是否仅仅把通知交付给在线订阅的用户;是否把通知交付给全部订阅的用户;还能够指定通知的过期时间。以及其它非常多选项。
5)支持数百万的公布订阅频道交付通知给订阅者。
6)公布订阅频道支持上百万的订阅者。

5、消息归档(Message Archiving)

Tigase提供了对消息归档的完整支持(XEP-0136扩展)。支持数据库分片(开箱即用),还能作为外部组建部署到多种server上。

用户往往希望保存聊天记录以便以后检索。基本上眼下大多数聊天client都在本地保存了聊天记录,可是,用户往往不止一个设备,用户希望聊天记录在每一个设备上都能查到。

那么这些聊天记录怎样在各种设备的client之间进行同步呢?

最佳的解决方法就是把聊天记录存储在server端。并执行用户的全部设备都能訪问聊天历史记录。

消息归档组件同意把用户的聊天历史记录存储到server的单个库中,并能按需搜索。Tigaseserver提供了对消息归档扩展的完整支持。

对终端用户而言,他的工作全然透明。自己主动存储消息。

消息归档提供了聊天文档的大量特征:
1)能够在随意时间打开/关闭聊天记录
2)支持OTR(Off-The-Record。即聊后即焚)聊天
3)自己主动把群聊分到不同线程以便逻辑区分不同的对话
4)依据不同的条件,能够灵活地检索聊天历史记录
5)管理员可强制查看全部用户的聊天记录,而无论用户的设置
6)支持开箱即用的数据库分配,同意数据和负载进行分配

6、JaXMPP库

提供Android移动设备、GWT Webclient、独立的Java应用程序等库,全然支持XMPP/Jabber规范及其全部基本的扩展。

JaXMPP代表Java XMPP。但它不仅是Java库,它还兼容GWT。因此能够用于开发Webclient。它还兼容Android Java,因此能够用于开发带XMPP支持的Android移动应用,以及常规的Java应用程序。

此client库的功能完整,并且代码开源并免费。
JaXMPP库站点: 
https://projects.tigase.org/projects/jaxmpp2
JaXMPP库文档: 
https://projects.tigase.org/projects/jaxmpp2/wiki

7、Webclient

全功能的Webclient,支持基本的聊天、MUC、公布/订阅和很多扩展管理接口。通过CORS,经BOSH或WebSocket连接到随意XMPPserver实现跨站点支持。

CORS:Cross-Origin Resource Sharing。跨域资源共享

功能非常全。支持:
1)完整的XMPP规范
2)Web优化(更快的重连和聊天状态恢复)
3)消息归档支持(从server查看历史聊天记录)
4)良好的MUC群聊协议(訪问Web浏览器时能够群聊)
5)公布订阅(直接从Web浏览器公布消息到公布订阅节点)

深入认识Tigase XMPP Server(上)的更多相关文章

  1. Tigase XMPP Server在CentOS部署和配置

    Tigase XMPP Server在CentOS部署与配置 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 以下讲述Tigase XMPP Server ...

  2. Tigase XMPP Server

    Tigase XMPP Server是我们的旗舰服务器端软件,提供XMPP服务或实例通信(IC)服务.最基本的解释是Tigase是一个聊天服务器,但它远不止于此.聊天是其可能的应用程序之一,但任何类型 ...

  3. Tigase XMPP Server的安装

    Tigase和OpenFire都是基于XMPP(Extensible Messaging and Presence Protocol, 可扩展通讯和表示协议)的,主要功能是实现消息的即时通信.Goog ...

  4. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

  5. ASP.NET Core 中文文档 第二章 指南(5) 在 Nano Server 上运行ASP.NET Core

    原文 ASP.NET Core on Nano Server 作者 Sourabh Shirhatti 翻译 娄宇(Lyrics) 校对 刘怡(AlexLEWIS).许登洋(Seay).谢炀(kile ...

  6. 在当前Server上找某某object,注意只需修改"要找的object"就可以使用

    ---在当前Server上找某某object,注意只需修改"要找的object"就可以使用EXEC sp_MSforeachdb 'use ? ;IF EXISTS(SELECT ...

  7. Windows server上rsync的安装和使用

    获取和安装 首先从rsync官网下载软件的安装版本,注意这里要下的是客户端版本,而非服务端版本. 下载完成之后,双击"cwRsync_4.0.5_Installer.exe"图标, ...

  8. 在WINDOWS SERVER 上或远程桌面中使用 MUTEX

    引用: http://www.cnblogs.com/fg0711/archive/2012/05/03/2480502.html 使用Mutex需要注意的两个细节 可能你已经注意到了,例子中在给Mu ...

  9. 多线程查询FTP Server上的文件

    情形是这样的,最近做一个自动化的项目,当batch跑成功了,FTP Server上会有特定的生成文件.但是不确定是什么时候会有,大概是batch跑完了5分钟之内吧,所以在脚本里设置检查点的时候,需要每 ...

随机推荐

  1. RESTful最佳实践之基于 jersey 的增删改查

    jersey-rest-demo 增删改查 项目地址:https://github.com/CoderDream/jersey-rest-demo 源代码:http://download.csdn.n ...

  2. ARM相关知识

    ARM7采用冯·诺依曼(Von-Neumann)结构,数据存储器和程序存储器重合在一起.    同时,此结构也被大多数计算机所采用. ARM7为三级流水线结构(取指,译码,执行),平均功耗为0.6mW ...

  3. Light OJ 1318 Strange Game 组合数+高速幂+分解因子

    长度为l的用k种字符组成的字符串有k^l中 当中m个字符要不同样 那就是k^l*C(l, m)*(k-1)^m 有反复 要除以2 可是你mod n了 不能直接除 n不一定是素数 所以不能乘以逆元 所以 ...

  4. hdu1334-Perfect Cubes

    http://acm.hdu.edu.cn/showproblem.php?pid=1334 题意;求200以内所有满足a^ 3 == b^ 3 + c ^ 3 +d ^ 3 #include< ...

  5. android压缩解压zip文件

    网上各种方法的收集: 1.上次写了个解压缩功能,但有局限性,比如压缩文件xx.zip 里包括子目录的情况下,执行上次解压缩的功能就不能实现我们想要的效果,于是在网上参考了一下java的解压缩功能.对上 ...

  6. 使Web Api 支持跨域资源共享(CORS)

    Reference:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api Imp ...

  7. linux下抓取网页快照

    1.下载 https://code.google.com/p/wkhtmltopdf/downloads/detail?name=wkhtmltoimage-0.11.0_rc1-static-i38 ...

  8. 使用C语言实现字符串中子字符串的替换

    描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待 ...

  9. <转载>使CSS文字图片div元素居中方法之水平居中的几个方法

    文字居中,文字垂直居中水平居中,图片居中,图片水平居中垂直居中,块元素垂直居中?当我们在做前端开发是时候关于css居中的问题是很常见的.情 况有很多种,不同的情况又有不同的解决方式.水平居中的方式解决 ...

  10. Endnote从头开始五:修改output style(转载)

    Endnote从头开始五:修改output style Endnote中虽然有大量的期刊格式,但是并不能囊括所有我们需要的style,所以学会自己制作或编辑已有的期刊格式是很重要的,本节内容是Endn ...