Calendar

January 2008
M T W T F S S
« Dec   Feb »
 123456
78910111213
14151617181920
21222324252627
28293031  

Tag Cloud

Categories

Archives

Highest Rated

Most Viewed

Recent Posts

Recent Comments


« WOW-Engine 3D Physics Engine | Main | Microsoft buying Yahoo! »

BlazeDS vs LiveCycleDS

By Rich Tretola | January 31, 2008Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
724 views

Here is a nice post for those of you who are trying to compare BlazeDS to LiveCycleDS.

Note that I had a question in comments:
Can you give your opinions on concurrent users? The article I read at http://flexblog.faratasystems.com/?p=277 said there was a major difference in the number of concurrent users that BlazeDS would support vs LiveCycleDS.

If anyone has any info on this, please respond to this post.

Share/Save/Bookmark

Topics: BlazeDS, LiveCycleDS |

6 Responses to “BlazeDS vs LiveCycleDS”

  1. Beau Scott Says:
    February 7th, 2008 at 5:29 pm

    Wouldn’t BlazeDS’s concurrency limitation be a factor of the application server’s limit, not BlazeDS itself?

    Beau

  2. everythingflex Says:
    February 7th, 2008 at 8:59 pm

    This was sent to me by Seth Hodgson so I thought I would share it:

    It depends on what features your application is using. If you’re just using RPC services (RemoteObject, HTTPService, WebService) over an AMFChannel from the client to the server, there’s no difference in performance between BlazeDS and LCDS. That’s just traditional HTTP requests/responses between the client and sever - so you’re limited by OS/hardware specs to some max request per second processing capacity for your box (this limit would also depend on what your RemoteObjects are doing, etc.)

    If you application is using messaging (or auto-sync data management), that requires a channel that can get messages from the server down to the client. There’s simple polling, and that behaves the same in BlazeDS and LCDS. But the better “push” channels is where things differ significantly. BlazeDS supports long-polling and streaming over HTTP to “push” data to the client but it has to manage this through the servlet API which has the unfortunate restriction right now of mandating blocking IO. We’re participating in the Servlet 3 JSR which will add non-blocking IO APIs but that won’t be available for some time in a standard fashion across all the containers we support.

    For traditional request/response style interaction between the client and server blocking IO was reasonable, but for server data push and messaging, it’s not so good.

    LCDS provides support for the RTMPChannel (direct duplex socket connection between the client and server) as well as non-blocking long-polling and streaming support over HTTP that bypasses the servlet API and its blocking IO limitation. All of these options in LCDS are built on top of the Java NIO APIs.

    Non-blocking IO doesn’t require a thread per connection sitting blocked in a read() call on the underlying socket. So you can have hundreds, thousands, etc. connections without the expense of a thread per each. You can mitigate that expense in BlazeDS by tuning down the stack size for your Java threads, but that’s still much more than 0 overhead.

    In terms of the total number of “push” connections a BlazeDS or LCSD server will support, back of the envelope estimates are in the hundreds for BlazeDS (because of servlet blocking IO and the fact that servlet containers generally don’t have more than hundreds of threads in their request handler thread pool) and in the thousands for LCDS thanks to Java NIO. Whether you’re talking about 5K or 10K depends on your OS, hardware and application. At some point, depending on the number of messages you’re sending and the amount of processing and IO your’re doing you’ll saturate your box.

    There’s more detail regarding the various channel options in BlazeDS and LCDS and when to use what posted here: http://www.dcooper.org/blog/client/index.cfm?mode=entry&entry=8E1439AD-4E22-1671-58710DD528E9C2E7

    RTMP is availble in the current LCDS release but the NIO-based long polling and streaming endpoints for LCDS are not - get on the LCSD beta program if you want to give them a try.

  3. andy matthews Says:
    June 25th, 2008 at 8:58 pm

    I spoke with Adam Lehman at Webmaniacs this year and he specifically said that use of LCDS for a production app (even with a multi-proc server) was “okay with Adobe” unless your app was expected to have hundreds of concurrent users. Blaze can handle around 500 at a time, whereas LCDS is 10 times that (5000 plus).

    He even stated to me “I’d even be willing to put that in an email”. So take that as you will.

  4. everythingflex Says:
    June 26th, 2008 at 4:40 am

    We are getting ready to do some load testing next week on a multi-server BlazeDS architecture so the results will soon show themselves.

  5. Niraj Sonar Says:
    July 7th, 2008 at 3:55 am

    Hi,

    Have you got the results of load testing. Can you share the same with us for concurrent users. I want to know how many concurrent users can be supported by blazeDS in single instance. Can we scale it up for further ?

  6. everythingflex Says:
    July 8th, 2008 at 7:49 am

    No yet, but what we are testing is not a single server. It will be a cluster.

Comments