My Ph.D. thesis work at UC Berkeley focused on the development of a robust, high-performance platform for Internet services, called SEDA. The goal is to build a system capable of supporting massive concurrency (on the order of tens of thousands of simultaneous client connections) and avoid the pitfalls which arise with traditional thread and event-based approaches. SEDA is an acronym for staged event-driven architecture, and decomposes a complex, event-driven application into a set of stages connected by queues. This design avoids the high overhead associated with thread-based concurrency models, and decouples event and thread scheduling from application logic. By performing admission control on each event queue, the service can be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity. SEDA employs dynamic control to automatically tune runtime parameters (such as the scheduling parameters of each stage), as well as to manage load, for example, by performing adaptive load shedding. Decomposing services into a set of stages also enables modularity and code reuse, as well as the development of debugging tools for complex event-driven applications.
Our current prototype of a SEDA-based services platform is called Sandstorm. Sandstorm is implemented entirely in Java and uses the NBIO package to provide nonblocking I/O support. Support for the JDK 1.4 java.nio package is included as well. Despite using Java, we have achieved performance that rivals (and sometimes exceeds) that of C/C++. We have also implemented a SEDA-based asynchronous SSL and TLS protocol library, called aTLS. All of this software is available for download below. We have built a number of applications to demonstrate the SEDA framework. Haboob is a a high-performance Web server including support for both static and dynamic pages. Other applications include a Gnutella packet router and Arashi, a Web-based email service similar to Yahoo! Mail. The best place to start for more information is the SOSP‘01 paper on SEDA and the corresponding talk slides. My Ph.D. thesis has much more information as well. If you have questions, comments, or are interested in collaborations, please feel free to contact me by e-mail (see my home page). A number of open source and commercial systems are based on SEDA and NBIO. These include:
July 12, 2002: Lots of updates. CVS, release, and mailing list hosting is now at http://seda.. Now you can access the latest SEDA codebase via anonymous CVS, hopefully encouraging more collaborative development of the code. The seda-users mailing list is back up - please subscribe. All of the code has been consolidated into a single CVS tree under the package name seda (renamed from mdw). The Haboob Web server and aTLS code are also released and more completely documented. And a nice one-line performance patch to NBIO is included that increases network bandwidth by 30% or so!
File downloads are hosted by SourceForge.net. Click here for the SEDA SourceForge Page. You may either download the SEDA software as a set of pre-packaged "official" releases (.tar.gz format, source code included), or use anonymous CVS to access the "live" tree. The CVS tree will be updated more frequently than the "official" releases, which are meant to represent stable, tested versions of the software. The CVS tree is the "live code" that is under constant development. See the file README in each release for information on compilation and usage. All of the SEDA code is covered under an open-source license (see below). Official releases All files are available from this SourceForge page. Or, you may click on one of the links below:
Anonymous CVS access Anonymous CVS access is available for those users who want to maintain a "live" source tree. To check out the SEDA tree using anonymous CVS, use the following commands: cvs -d:pserver:anonymous@cvs.seda.:/cvsroot/seda login ( Just press enter when asked for a password ) cvs -z3 -d:pserver:anonymous@cvs.seda.:/cvsroot/seda co seda Javadoc API documentation You can browse the Javadoc documentation for SEDA.
The mailing list for SEDA and NBIO are now hosted by SourceForge. The list is called seda-users and is a low-volume list for questions about SEDA and NBIO usage and development. Click here to subscribe You can also subscribe to the seda-commits list, which receives automatic notifications of commits to the SEDA CVS tree. This can be useful if you want to be notified immediately of changes to the code. Note that this list is not archived.
By transitioning the SEDA project to SourceForge.net, it is now possible to open up the development of the SEDA code a wider community. If you are an active user of the SEDA or NBIO code and would like to contribute, please join the seda-users mailing list. SourceForge makes it possible for all of the developers to share a single CVS tree, make code releases, and so forth. I encourage interested developers to join the team!
The best place to look for performance information about SEDA is the various papers about the system. Earlier (and somewhat outdated) performance results are discussed in the following web pages:
The SEDA release is covered under the following Open Source license: Copyright (c) 2002 by Matt Welsh and The Regents of the University of California. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without written agreement is hereby granted, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. If you have any questions, comments, or bug reports, don‘t hesitate to get in touch with me! |
|
来自: ShangShujie > 《网络》