An introduction to general systems thinking (silver anniversary ed.)
An introduction to general systems thinking (silver anniversary ed.)
Chord: A scalable peer-to-peer lookup service for internet applications
Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Distributed Algorithms
Feedback Control of Computing Systems
Feedback Control of Computing Systems
Concepts, Techniques, and Models of Computer Programming
Concepts, Techniques, and Models of Computer Programming
Consensus on transaction commit
ACM Transactions on Database Systems (TODS)
Introduction to Reliable Distributed Programming
Introduction to Reliable Distributed Programming
Self Management and the Future of Software Design
Electronic Notes in Theoretical Computer Science (ENTCS)
Oz/K: a kernel language for component-based open programming
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
A Relaxed-Ring for Self-Organising and Fault-Tolerant Peer-to-Peer Networks
SCCC '07 Proceedings of the XXVI International Conference of the Chilean Society of Computer Science
Symmetric replication for structured peer-to-peer systems
DBISP2P'05/06 Proceedings of the 2005/2006 international conference on Databases, information systems, and peer-to-peer computing
Convergence in language design: a case of lightning striking four times in the same place
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
A statistical theory of chord under churn
IPTPS'05 Proceedings of the 4th international conference on Peer-to-Peer Systems
Hi-index | 0.00 |
Programs are fragile for many reasons, including software errors, partial failures, and network problems. One way to make software more robust is to design it from the start as a set of interacting feedback loops. Studying and using feedback loops is an old idea that dates back at least to Norbert Wiener's work on Cybernetics. Up to now almost all work in this area has focused on how to optimize single feedback loops. We show that it is important to design software with multiple interacting feedback loops. We present examples taken from both biology and software to substantiate this. We are realizing these ideas in the SELFMAN project: extending structured overlay networks (a generalization of peer-to-peer networks) for large-scale distributed applications. Structured overlay networks are a good example of systems designed with interacting feedback loops. Using ideas from physics, we postulate that these systems can potentially handle extremely hostile environments. If the system is properly designed, it will perform a reversible phase transition when the node failure rate increases beyond a critical point. The structured overlay network will make a transition from a single connected ring to a set of disjoint rings and back again when the failure rate decreases. We are exploring how to expose this phase transition to the application so that it can continue to provide a service. For validation we are building three realistic applications taken from industrial case studies, using a distributed transaction layer built on top of the overlay. Finally, we propose a research agenda to create a practical design methodology for building systems based on the use of interacting feedback loops and reversible phase transitions.