SitePen Support
Webtide

Comet Gazing: Maturity

by Comet DailyMarch 14th, 2008

Comet Gazing is a semi-monthly feature on Comet Daily. We pose a question to our Contributors and post the answers.

This time, we’ve asked our contributors to outline the maturity of their preferred Comet server implementation. We asked 8 primary questions, which we have also put into a handy Comet Maturity comparison grid view. Want to add info about your Comet implementation? Contact us.

The criteria are as follows:

  1. Portability (cross-platform and cross-language)
  2. Vertical Scalability (# of clients or messages/sec for a single server node)
  3. Horizontal Scalability (strategies for deploying multiple nodes)
  4. Bayeux support or support for something similar
  5. Delivery Guarantees
  6. Transports (polling, long polling, callback polling, iframe streaming, htmlfile streaming, xhr streaming, multipart streaming, SSE)
  7. Status (alpha, beta, production)
  8. License and Pricing

Andrew Betts
Meteor

  1. Server daemon will run on any platform for which Perl is available.
  2. In live use typically 1,000 clients per node receiving 2 msgs (~400 bytes) per sec each. Tested up to 5,000 clients per node receiving 1 msg/sec each.
  3. Nodes exist independently, supports broadcasting for message distribution. Cluster of three Meteor nodes runs FT Alphaville.
  4. Transports are completely configurable within simple constraints.
  5. Server supports client ‘catch-up’, allowing clients to regulate quality of service themselves.
  6. Polling (Yes), Long polling (Yes), callback polling (Yes), iframe streaming (Yes), htmlfile streaming (Yes), xhr streaming (Yes), multipart streaming (Yes, but no client support), SSE (Yes, but no client support). Meteor also distinguishes between smart polling (in which the poll frequency changes in proportion to message frequency) and simple polling (in which it does not). Both are supported.
  7. Stable, in production use.
  8. GPL v2. Free.
  9. Additional Notes: Meteor is all about simplicity, ease of use and getting on with solving a single problem effectively. It is a standalone tool to complement your existing web applications, doesn’t show any bias or favour toward any framework or technology, and can be set up and run by anyone. It is very thoroughly documented, with a commitment to keeping documentation exactly in sync with releases, and the website provides a number of imaginative live examples as well as comprehensive step-by-step tutorials. It’s reliable, it scales, and with a low barrier to entry, it’s worth checking out.

Alessandro Alinone
Lightstreamer

  1. Lightstreamer Server is deployable on any platform with Java. Lightstreamer Adapters and Clients are based on several languages. Server APIs: Java, .NET, and TCP sockets. Client APIs: Flash, Flex, Java SE, Java ME, and .NET
  2. Scalability depends only on the message throughputs, not on the number of clients (e.g. on a single CPU, 100,000+ sockets opened with zero throughput; 20,000 sockets opened with 1 msg/sec).
  3. Full support of load balancing appliances.
  4. Lightstreamer network protocol
  5. Yes (see the Lightstreamer website for details)
  6. Polling, Long Polling, iframe streaming.
  7. Production
  8. Free licensing for Moderato edition. Commercial licensing for Allegro, Presto, Vivace editions (site license or per-server license).
  9. Additional Notes: Lightstreamer was created in 2000. In these eight years, it has been adopted and used in many production systems, especially by the largest banks. Lightstreamer has been chosen by TIBCO Software as the core of their Ajax Message Service product (AMS), with an OEM license agreement. The most long-lasting production case for Lightstreamer has been IntesaTrade (a bank part of Intesa Sanpaolo Group), where Lightstreamer Server has been running for 5+ years. Lightstreamer provides many advanced features beyond the Comet engine, such as: bandwidth management, frequency management, adaptive throttling, delta delivery, conflation, pre-filtering, meta-push, and a fine-grained permissioning system.

Dylan Schiemann
Cometd + Python

  1. Based on Twisted Python. Runs anywhere Python runs. JavaScript and Python clients.
  2. No load testing done yet.
  3. Possible, but not implemented yet.
  4. Supports Bayeux.
  5. Not yet.
  6. Long polling, callback polling, iframe Streaming.
  7. Beta.
  8. Open source license (BSD), free

Greg Wilkins
Cometd + Jetty

  1. Jetty is available on Java 1.4 and above, which makes it available on a large range of devices, from Android telephones to large multicore servers. For Comet applications, Jetty has optimized support for Bayeux/Cometd, DWR reverse Ajax and ActiveMQ Ajax message delivery. The client side support for Bayeux is available in Java, the Dojo Toolkit, and jQuery, and efforts are underway to support it in Ext JS as well as others.
  2. Jetty/Bayeux can support 20,000 simultaneous clients per node with several thousands of messages per second. Jetty/ActiveMQ has been able to deliver 7,000 price changes per second to 40,000 users over a 3 node cluster.
  3. The messaging semantic of Bayeux easily integrates with distributed messaging systems such as JMS to provide cluster support. Jetty has integrations with Terracotta and Wadi for session clustering support.
  4. Jetty provides the core Cometd Java Bayeux implementation and it is optimized for the Jetty asynchronous features.
  5. Not supported.
  6. Polling, long polling, and callback polling. Previous support for iframe streaming has been drop due to lack of demand.
  7. Production.
  8. Apache 2.0 open source. Commercial support and services available via Webtide.

Martin Tyler
Caplin

  1. Linux and Solaris Server. JavaScript, Java and .Net client APIs. Java and C server APIs.
  2. 30,000 clients max. 1 million total client updates/sec at 10,000 clients. There are lots of variables involved in benchmark figures. These are the headline figures. More details are available.
  3. Client side load balancing. Client libraries implement various algorithms for choosing a server at connection and reconnection time.
  4. RTTP (Real Time Text Protocol).
  5. Reliable messaging. With streaming transports there is a level of guarantee with TCP/IP, however through reconnections this guarantee is not maintained. Where required, guaranteed messaging is layered on top of the core product.
  6. Polling, iframe streaming, multipart streaming, direct socket.
  7. Production. Liberator has been used in production environments for 8 years. Liberator is used commercially by a number of large banks globally.
  8. Liberator is a commercial product sold by Caplin Systems in the finance industry. Recently Caplin released a free version for use in non commercial environments.

Roberto Saccon
ErlyComet

  1. Implementation is 100 % Erlang, Runs on all platform capable of hosting the Erlang VM (Linux, BSD, Windows, Mac)
  2. No load testing done yet
  3. Yes (ErlyComet is designed from ground up as distributed system)
  4. Yes, Bayeux
  5. Yes (messages get queued until delivered)
  6. Long polling, callback polling
  7. Alpha
  8. Open source license (MIT), free

Jean-Francois Arcand
GlassFish

  1. GlassFish runs on top of Java, so it can be installed on any OS that supports the Java implementation (Unix/Linux/Window/OSX/etc.).
  2. Sun achieved 883.66 JOPS@Standard on a single app server instance running on a Sun Fire T2000 server. That translates to over 7,000 simultaneous active users.*
  3. GlassFish V2 contains many new features, among them enhanced clustering capabilities. The new clustering capabilities enhance high availability and scalability for deployment architectures through in-memory session state replication. With in-memory state replication, clustered server instances replicate session state in a ring topology, storing the replicated information in memory. With GlassFish, you can:
    • Create and manage clusters from a single administration console, manage a cluster as a single entity
    • Dynamically grow or shrink a cluster by adding or removing application server instances.
    • Automatically update the load balancer.
    • Automatically monitor cluster health and balance load across available instances.
  4. GlassFish supports Bayeux.
  5. GlassFish supports delivery guarantees by offering a set of Push/Notification handlers. Those handlers can be used to throttle/combine/filters/add quality-of-services (QoS)/ messages pushed by the server.
  6. Polling, long polling, callback polling, iframe streaming, htmlfile streaming, multipart streaming, xhr streaming.
  7. GlassFish’s Comet implementation has been successfully deployed in production situations, some of them available on the Internet. GlassFish’s Bayeux support is still being tested and is considered beta.
  8. Glassfish is open sourced in OSI-approved license CDDL and GPL v2. It is free for use even in production. Sun provides support and services for Glassfish. Subscriptions start from $4500 for 4 sockets per year. Please see the Application Server Subscriptions and the From Download to Subscription pages for details.
  9. Additional Notes: GlassFish supports Comet for Web Applications. It also support other “push” protocols similar to Comet like XMPP, SOA HTTP binding, etc.

*SPEC and the benchmark name SPECjAppServer 2004 are registered trademarks of the Standard Performance Evaluation Corporation. Benchmark result stated above reflect results published on www.spec.org as of March 14th 2008. For the latest SPECjAppServer 2004 benchmark results, visit http://www.spec.org/. Referenced score: [1] One Sun Fire T2000 (1 chip, 8 cores) appserver and one Sun Fire T2000 (1 chip, 6 cores) database; 883.66 JOPS@Standard.

Michael Carter
Orbited

  1. Runs on Windows, OS X, Linux, and any Unix-compatible system.
  2. Tested against 10,000 idling clients without issue on Intel Core Duo 1.6 GHZ.
  3. Orbited acts as a distributed hash table, allowing unlimited horizontal scaling with an O(1) peer-messaging dispatch algorithm. See HaloD for more information.
  4. Not supported, but Orbited does support Revolved, a publish/subscribe protocol with features similar to Bayeux.
  5. Yes.
  6. Polling, long polling, callback polling, iframe streaming, htmlfile streaming, xhr streaming, multipart streaming, sse streaming.
  7. Late Alpha.
  8. MIT License (open source).
  9. Additional Notes: How mature is your Comet server of choice? The answer is not as simple as you might think. Comet is currently a moving target, and the landscape now will change dramatically over the next 12 months. Any project that claims to have a stable and mature architecture probably just has a stalled development effort. For instance, I have yet to see an adequate architecture for horizontally scaling a Comet cluster. Current projects can only mostly only speak to the stability of the server running in a production environment in response to questions on maturity. This isn’t a critique of any individual software project, rather it speaks to the fact that Comet is still a very new and relatively unknown technology.

    By this measure, Orbited passes the bar well. It has run without significant problems in multiple production environments for upwards of six months. Keep in mind that Orbited is an experimental project, and I wouldn’t recommend Orbited for the general public immediately. The architecture and best practices are changing significantly as time progresses, and particularly with the upcoming 0.4.0 release next week, so developers are only encouraged to use Orbited if they don’t mind working within an evolving paradigm.

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]
Comet Support by SitePen

7 Responses to “Comet Gazing: Maturity”

  1. Robert Schultz Says:

    Excellent article!

    After seeing how popular my World of Solitaire (http://worldofsolitaire.com) website is (JavaScript Solitaire) I decided that my next JavaScript web game would be multi-player.

    I’ve been following the cometdaily RSS feed for a while now. Up until this article I always figured I would need to ‘code my own’ comet server app in order to get the performance, stability and features I wanted. This was a task I wasn’t looking forward to, as it just gets in the way of myself actually making the game itself (both the game client and server).

    This article has shown me that there is maturity out there with the wide variety of comet server options available.

    I already have an idea of an experimental multi-player JavaScript game to test out and discover any gotchas related to implementation on the client or server side.

    So now my next step is to look into the comet servers above that look attractive to me (many of the above) and research several things:

    - How do I interface my ‘game/app server’ daemon with the comet server daemon? (Separate processes or unified)
    - What ‘features’ are provided or will get in the way (user model, communication models, etc)
    - How clean is the client side Javascript implementation

    Thanks again for creating cometdaily.com and updating it :)

  2. Stephan Schmidt Says:

    Nice post, right on time when I consider choosing a comet implementation.

    Resin has one too, but wasn’t mentioned,

    http://www.caucho.com/resin/examples/servlet-comet/

    Peace
    -stephan

  3. Martin Tyler Says:

    Robert,

    Whichever Comet solution you choose, it would be a nice demo, so feed it back or let us know here please.

    Some of the solutions above have server side APIs, some of them are for remote processes and some are directly in the Comet server themselves - and obviously languages differ too.

  4. Comet Daily » Blog Archive » Comet Maturity Grid Says:

    [...] our recent article on the Maturity of Existing Comet Implementations, we took a first stab at comparing the features between Comet servers and clients that lead to a [...]

  5. Geoffrey Lee Says:

    That was an incredibly useful article! Up until this point, I wasn’t even aware that some of these projects supported Comet.

  6. SitePen Blog » Which Comet Implementation? Says:

    [...] Comet Daily, we recently had a post comparing the maturity of various Comet implementations. From this, we came up with the idea of a Comet Comparison Guide to make it easy to learn about the [...]

  7. chpn Says:

    Eurasia3 http://code.google.com/p/eurasia/

    1. unix like ,stackless python 2.5 or python 2.5
    2. It is claimed that it surports millions clients or 10 thousands of CGI requests per second
    3.
    4. no
    5.
    6. htmlfile
    7. alpha6
    8. open source, you can download the source ,a license file is content in the source

    chinise documention only.

Leave a Reply



Copyright 2014 Comet Daily, LLC. All Rights Reserved