Optimizing web content delivery using web server accelerator
ACSC '02 Proceedings of the twenty-fifth Australasian conference on Computer science - Volume 4
A composable framework for secure multi-modal access to internet services from Post-PC devices
Mobile Networks and Applications
Improving Java Server Performance with Interruptlets
ICCS '01 Proceedings of the International Conference on Computational Sciences-Part I
Decentralized orchestration of composite web services
Proceedings of the 13th international World Wide Web conference on Alternate track papers & posters
Asynchronous event handling in the real-time specification for Java
JTRES '07 Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems
Externalizing Java Server Concurrency with CAL
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
An efficient and predictable implementation of asynchronous event handling in the RTSJ
JTRES '08 Proceedings of the 6th international workshop on Java technologies for real-time and embedded systems
Proceedings of the 7th International Workshop on Java Technologies for Real-Time and Embedded Systems
Efficient asynchronous event handling in the real-time specification for Java
ACM Transactions on Embedded Computing Systems (TECS)
A Green Computing Based Architecture Comparison and Analysis
GREENCOM-CPSCOM '10 Proceedings of the 2010 IEEE/ACM Int'l Conference on Green Computing and Communications & Int'l Conference on Cyber, Physical and Social Computing
Experience using a coordination-based architecture for adaptive web content provision
COORDINATION'05 Proceedings of the 7th international conference on Coordination Models and Languages
Hi-index | 0.00 |
Building highly concurrent systems, such as large-scale Internet services, requires managing many information flows at once and maintaining peak throughput when demand exceeds resource availability. In addition, any platform supporting Internet services must provide high availability and be able to cope with burstiness of load. Many approaches to building concurrent systems have been proposed, which generally fall into the two categories of threaded and event-driven programming. We propose that threads and events are actually on the ends of a design spectrum, and that the best implementation strategy for these applications is somewhere in between. We present a general-purpose design framework for building highly concurrent systems, based on three design components -- tasks, queues, and thread pools -- which encapsulate the concurrency, performance, fault isolation, and software engineering benefits of both threads and events. We present a set of design patterns that can be applied to map an application onto an implementation using these components. In addition, we provide an analysis of several systems (including an Internet services platform and a highly available, distributed, persistent data store) constructed using our framework, demonstrating its benefit for building and reasoning about concurrent applications.