Pubsub upcoming improvements in ejabberd 2.1

During the past months we have greatly enhanced pubsub and PEP support in ejabberd.

Lots of improvements

For several projects we have been working on, we have mostly rewritten the pubsub and PEP support in ejabberd. The code is still extensible by plugins and thus is as flexible as ever but now offer a huge performance enhancement.

Among the improvements in version 2.1, you will get:

  • Relational database storage: in ejabberd 2.1, pubsub is able to store a relational database (MySQL or PostreSQL), as a replacement of Mnesia if you wish. This can be usefull either if you plan to store really large volume of data or would like to have all your data stored in a relational database for central management and backup.
  • Performance and scalability: From our tests, the latest pubsub version can be used even for the most demanding deployments supporting large number of nodes and/or subscribers.
  • Better capabilities handling for PEP: One of the main bottleneck for PEP is the management of the capabilities and the cache of those capabilities. It is particularly challenging if you want to make it right with good s2s support. Our new implementation is much more robust at handling the caps caching and should perform much better on large deployments.
  • Update to the latest pubsub specification and we also now have a broader feature coverage.
  • Change in default policy: The default is now to use the flat hierarchy of node, but you can switch back to the tree hierarchy of nodes.

Some features of this new pubsub implementation are already available in ejabberd development SVN (trunk), you can give them a try.

Performance and adoption for online realtime services

We have been able to support 100 000 subscribers spread over 10 pubsub nodes, having an average events every 2 seconds on a cluster of two ejabberd nodes. We have more optimisation in the making. It makes ejabberd the XMPP server of choice if you plan to heavily use pubsub.

WordPress, Collecta and Buddymob for example are using ejabberd pubsub to support their distribution system and more projects are currently being deployed. If you have XMPP pubsub use case to share, we would love to hear it.

Let us know what you think 💬

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.