J ICOS’s Abstract Distributed Service Component Peter Cappello Computer Science Department UC Santa Barbara
2 Introduction Designing distributed systems correctly is hard. Object-orientation simplifies design. Reusable classes increase productivity. Abstraction leads to reusable classes. We contribute an abstract distributed service component (ADSC).
3 Introduction … Focus on some design issues. Why present this? –The design is non-trivial. –Enhancements described in terms of base design. –Different implementations benefit from issue elucidation. –The code can be downloaded:
4 J ICOS ’s Architecture J ICOS is designed to: Support scalable, adaptively parallel computation Tolerate basic faults Hide communication latency
5 J ICOS ’s Architecture … JICOS comprises 3 service component classes: Hosting Service Provider (HSP): –clients interact solely with the HSP. –HSP manages other service components Task server –A task space Host –Executes tasks
6 Hosting Service Provider Client Architecture …
7 Issue Priority Correctness Elegant Object-Oriented Design Programmability Performance Reliability Administrable Security
8 The ADSC is ServiceImpl ServiceImpl Service HostHspTaskServer
9 Anatomy of an ADSC A finite state machine Receives commands from peer services For each command: –[Update its state] –[Output command[s] to peer services] Finite State Machine With Output Command
10 Anatomy of an ADSC STATE COMMANDS Command Processor
11 RMI Thread executing receiveCommands() Input Command Queue Output Command Queue Command Processor Thread invoking receiveCommands() Anatomy of an ADSC Decouple communication from computation via multi-threading Output Command Queue Output Command Queue RMI Thread executing receiveCommands() RMI Thread executing receiveCommands()
12 RMI Thread executing receiveCommands() Input Command Queue Command Processor Thread invoking receiveCommands() Output command queue Output command queue Output Command Queue RMI Thread executing receiveCommands() RMI Thread executing receiveCommands()
13 RMI Thread executing receiveCommands() Input Command Queue Output Command Queue Command Processor Thread invoking receiveCommands() Anatomy of an ADSC Improve network & processor efficiency via multi-threading Output Command Queue Output Command Queue RMI Thread executing receiveCommands() RMI Thread executing receiveCommands() Command Processor Thread Command Processor Thread invoking receiveCommands() Thread invoking receiveCommands()
14 State Input Command Queue Command Processor Output queue Command Processor Command Processors Output queue Output Command Queues Department Anatomy of an ADSC Partitioning Command Classes
15 State Command Processor Output queue Command Processor Departments Output queue Output Command Queues Service Component RMI Thread executing receiveCommands() RMI Thread executing receiveCommands() RMI Threads executing receiveCommands() RMI Thread executing receiveCommands() RMI Thread executing receiveCommands() Threads invoking receiveCommands()
16 Command Processor Communication Processor Communication Processor Pool DepartmentQ Mail Proxy Manager ServiceCommand List ServiceImpl Proxy Command Synchronous
17 J ICOS Speedup:150-City TSP 1 processor: 6 hours, 18 minutes 52 processors: 8 minutes
18 Thanks! Questions?
19