tigase

Tigase Load Tests again

独自空忆成欢 提交于 2019-12-05 02:22:48
By admin on May 29, 2010 I have had a great opportunity and pleasure to use Sun's environment both hardware and software to run load tests on the Tigase server for a couple of last weeks. Sun also ofered me something more. Their knowledge and help during the tests allowed me to improve Tigase and fine tune the system to get the best results. I would like to say great thank you to Deepak Dhanukodi, ISV Engineering from Sun who was a huge help. Below is a description of the tests I run, environment and results I got. Summary I know summary should be at the end but I realize that many people may

Tigase输出从客户端和服务器的请求应答日志

ぐ巨炮叔叔 提交于 2019-12-04 04:37:10
http://chutianxing.wordpress.com 有些中文翻译文章,不过需要翻墙访问 Tigase改装目标 把Tigase迁移到DAF是我们的目标。DAF(Datou Application Framework)是手机大头的服务器 集群 应用开发框架,它使用 Zeroc ICE 作为服务器节点和节点之间的通讯中间件,使用 Google Protocol Buffers 作为通讯内容格式。 第一日 – 从客户端和服务器之间的通讯开始 在开始的前几天,思路是模糊的,因为对tigase还有太多不了解,所以日记中的一些结论是基于猜测和经验产生的,很可能在继续深入的时候被推翻。所以各位看官发现有重大问题时不必惊慌,以后我会自己发现的。 可以想像,迁移工作分为以下几个重要部分: XMPP要求entity与entity之间使用xml进行通讯,但DAF要求entity与entity之间使用PB进行通讯。所以在服务端,我们需要把entity和entity(这里的两个entity特指tigase的内部组件或服务)之间的xml通讯修改为pb通讯,或者采用简单一些的方法:干脆不对tigase进行任何拆解,整个一个服务作为DAF中的一个节点。 不管最终方案是否对Tigase进行拆解,都必须对XMPP协议进行转换,转换为大头私有协议,这需要一个协议转换器。

搭建Tigase jaxmpp使用

和自甴很熟 提交于 2019-12-04 01:00:05
假设本机已经成功安装了 MySQL 数据库 A :搭建 Tigase 官方安装文档: http://www.tigase.org/content/manual-installation-console-mode 1:下载架包并解压缩 /usr/local/tigase-server-5.1.4-b2998 2:修改./scripts/tigase.sh文件为可执行文件 chmod u+x./scripts/tigase.sh 3:修改配置文件 修改tigase.conf的java路径 JAVA_HOME=/usr/lib/jvm/jdk1.7.0_03 修改init.properties文件的配置。 --admins=zcx@domain.com --virt-hosts = domain.com --debug=server --user-db=mysql --user-db-uri=jdbc:mysql://localhost:3306/tigase?user=root&password=xxx&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true 其他的扩展组建,集群,插件等配置,参考官方init.properties配置文件所名 http://www.tigase.org/content/tigase

Tigase XMPP Server源码部署

放肆的年华 提交于 2019-12-04 00:59:53
1相关文档 Tigase官网: http://www.tigase.org 开发指南: http://www.tigase.org/devel-guide Eclipse下部署Tigase源码: Hack Tigase Jabber/XMPP Server in Eclipse Tigase5.2版本以后使用了Maven Git下载以及Maven编译: Tigase XMPP Server 5.2.0 and later - compilation and generating distribution packages Tigase下载页: http://www.tigase.org/downloads 版本库:( Tigase项目管理 各模块的版本库可查询到) Tigase-server: https://repository.tigase.org/git/tigase-server.git Tigase-xmltools: https://repository.tigase.org/git/tigase-xmltools.git Tigase-utils: https://repository.tigase.org/git/tigase-utils.git 2下载说明 现在是2014年4月28日,Tigase最新版本是5.2.1 在intellij中 VCS——check

Tigase组件第三节 – 多线程

﹥>﹥吖頭↗ 提交于 2019-12-04 00:59:38
Tigase组件第三节 – 多线程 发表评论 作者 储天行 on 2010/11/16 本文翻译自 – http://www.tigase.org/content/component-implementation-lesson-3-multi-threading 拥有多个CPU或多核CPU的电脑已经非常普及了。你也许会把像XMPP服务这样的应用部署到多核或多CPU的电脑上。但是现在你的新组件还只能在单一线程里面处理所有的packet。 如果packet的处理是复杂的运算(比如垃圾信息过滤),那么后果可能很严重:一个CPU负载为100%,而另外的几颗CPU却还在闲置。你也许非常希望所有CPU或核心都能够分摊负载,共同参与到工作当中。 Tigase API提供一种非常方便的方式让组件的 processPacket(Packet packet) 在多个线程中运行。 int processingThreads() 方法返回组件被分配到几个线程当中。缺省情况下,返回值为“1”,这是因为并不是所有的组件都能够允许多线程并发处理packet。你可以通过覆写(overwrite)processThreads方法来指定processPacket可以在几个线程里面并发执行。 如果packet的处理只是简单的CPU运算,那么你也许会想要尽可能多的线程来压榨CPU的潜力: 1 2 3 4

Tigase组件 – Packet过滤

扶醉桌前 提交于 2019-12-04 00:59:00
本文翻译自 – http://www.tigase.org/content/packet-filtering-component Packet过滤API Tigase为所有组件都提供了一个packet过滤API。你可以分别过滤传入和传出packet。 通过学习过滤,我们可以知道如何对packet进行拦截,如何修改packet内容,如何彻底得屏蔽packet。通过屏蔽,我们可以让packet跳过后续的处理过程,也可以彻底抛弃它。 packet的过滤基于 PacketFilterIfc 接口,请参考接口的javadoc来获取全部细节。过滤的主要方法是 Packet filter(Packet packet) ,它以packet作为入口参数并对其进行处理,里面可以填写代码,针对packet的特定内容进行报警(如果后续处理忽视被报警的内容,可以有效的减小系统负载),并最终产生一个传出 Packet 用来做后续处理。如果传出的packet为null,说明这个包已经被屏蔽,它不需要再进行任何的后续处理;否则它会传出最原始的packet实例(即传入packet)或者是 传入packet副本的修改版本 。 需要强调的是:即使Packet对象不是immutable的,我们也绝不建议对已经存在的Packet实例做任何修改。这是因为Packet实例可能同时被其他的组件或线程进行处理

Tigase插件 – packets是如何被session manager和plugins处理的

别来无恙 提交于 2019-12-04 00:58:47
本文翻译自 – http://www.tigase.org/content/how-packets-are-processed-sm-and-plugins 理解插件是如何工作的对开发插件是非常重要的,在不同的场景下由不同类型的插件来负责处理packet。在开始正式的编码工作之前,建议你现阅读一下下面的文档。 什么是IQ(储天行注:这一个部分是在翻译时额外添加的,原文中没有) 在开始之前,先介绍一下什么是IQ。这个东西出现在后面的很多地方。Google了一下,IQ的意思是Info/Query:它是一种请求和应答机制,和http有一些类似的地方。 IQ的语意允许一个实体向另一个实体发送请求,并从另一个实体获取应答。请求和应答当中的数据在IQ元素的第一级子节点(命名空间的声明)当中被定义,请求方实体可以通过id标签来跟踪交互过程。如此一来,IQ交互的数据交换模式就类似于“get/result” 或者 “set/result”(在某些情况下,也可能是get/error和set/error)。如有困惑请参考XMPP官方英文文档:http://xmpp.org/rfcs/rfc3920.html#stanzas-semantics-iq Requesting Responding Entity Entity ---------- ---------- | | | <iq type='get'

Tigase XMPP Server

匿名 (未验证) 提交于 2019-12-02 23:55:01
Tigase XMPP Server是我们的旗舰服务器端软件,提供XMPP服务或实例通信(IC)服务。 最基本的解释是Tigase是一个聊天服务器,但它远不止于此。 聊天是其可能的应用程序之一,但任何类型的即时通信服务,无论是人员还是机器,都可以通过Tigase XMPP服务器进行。 有相当多提供像开源:,当下几个XMPP服务器 的Openfire , Jabberd2 , 韵律 或专有: ISODE , Jabber的XCP , ejabberd 。 这些都是XMPP软件的很好的例子,我们强烈建议您在做出决定之前检查它们。 xmpp.org网站 上提供了更完整的列表 。 但是, Tigase XMPP Server 在许多方面都是独一无二的。 与所有其他产品一样,它完全支持最新的规范: RFC 6120 - XMPP CORE 和 RFC 6121 - XMPP IM 以及 大量扩展 。 但是Tigase超越了这一点。 除了不断改进软件的专业且经验丰富的支持人员外,Tigase还具有“开箱即用”功能,具有以下功能: 高度优化。 没有调试数据,主二进制文件小于1MB。 是的,我们的开发人员在汇编程序上长大,并学会了将代码优化到最后一点。 Tigase可以用 10MB的内存 成功运行 。 极其模块化。 没有固定的单行代码。 每个元素,组件

Tigase插件 – 编写插件

六月ゝ 毕业季﹏ 提交于 2019-12-02 21:28:53
本文翻译自 – http://www.tigase.org/content/writing-plugin-code 上一篇文章描述了XMPP stanza如何在session manager当中被处理。处理分为四个步骤,每个步骤都有相对应类型的插件负责处理。 第一步 – 预处理 – XMPPPreprocessorIfc:这是预处理器插件需要实现的接口 第二步 – 处理 – XMPPProcessorIfc:这是处理器插件需要实现的接口 第三步 – 投递 – XMPPPostProcessorIfc:这是投递处理器插件需要实现的接口 第四步 – 过滤 – XMPPPacketFilterIfc:这是结果过滤器插件需要实现的接口 如果你已经看过这四个接口的代码,你会发现每个接口都只有一个方法需要实现。没错,这个方法就是处理packet的地方它们具有非常相似的入口参数,下面对这些参数进行介绍: Packet packet – 需要被处理的packet,这个参数不可以为null。即使这个对象不是immutable的,在方法里也不能对它进行修改。它的任何一个变亮都不能发生改变。 XMPPResourceConnection session – session里面包含所有的用户会话数据和访问用户数据库的方法。它允许向持久化数据库中存储信息,但如果用户在线只允许向内存中存储数据。在方法调用时

Tigase组件第四节 – 服务发现

自作多情 提交于 2019-12-02 21:28:05
Tigase组件第四节 – 服务发现 发表评论 作者 储天行 on 2010/11/17 本文翻译自 – http://www.tigase.org/content/component-implementation-lesson-4-service-discovery 新组件在服务发现列表当中仍然显示“未定义的描述”。它也没有提供任何有趣的特性和子节点。 接下来,我们将用简单的方式修改组件的基本信息,并添加一些服务发现特性。除此之外,文档还提供一些如何在运行时添加/删除服务发现节点,如何更新已有元素的指导。 组件的描述和类别/类型可以通过覆写下面两个方法来实现: 1 2 3 4 5 6 7 8 9 @Override publicString getDiscoDescription() { return"Spam filtering"; } @Override publicString getDiscoCategoryType() { return"spam"; } 请注意,在 服务发现标识注册表 当中,并没有定义“Spam”类别/类型。这仅仅是用来演示。在真实应用的时候请参照服务发现标识注册表当中的类别/类型来挑选一个最适合。添加完上面两个方法并重新启动服务器之后,再查看服务发现列表窗口,可能会出现下图所示的效果。 更新描述和分类之后的服务发现列表 这很简单