[Paper Review] A Peer-to-Peer Middleware Framework for Resilient Persistent Programming
This paper proposes a peer-to-peer middleware framework that unifies orthogonal persistence, distribution, and replication into a single, resilient programming model. By integrating P2P storage with persistent object systems, it enables transparent fault tolerance and data resilience without programmer intervention, achieving a global, ubiquitous, and reliable single address space in distributed applications.
The persistent programming systems of the 1980s offered a programming model that integrated computation and long-term storage. In these systems, reliable applications could be engineered without requiring the programmer to write translation code to manage the transfer of data to and from non-volatile storage. More importantly, it simplified the programmer's conceptual model of an application, and avoided the many coherency problems that result from multiple cached copies of the same information. Although technically innovative, persistent languages were not widely adopted, perhaps due in part to their closed-world model. Each persistent store was located on a single host, and there were no flexible mechanisms for communication or transfer of data between separate stores. Here we re-open the work on persistence and combine it with modern peer-to-peer techniques in order to provide support for orthogonal persistence in resilient and potentially long-running distributed applications. Our vision is of an infrastructure within which an application can be developed and distributed with minimal modification, whereupon the application becomes resilient to certain failure modes. If a node, or the connection to it, fails during execution of the application, the objects are re-instantiated from distributed replicas, without their reference holders being aware of the failure. Furthermore, we believe that this can be achieved within a spectrum of application programmer intervention, ranging from minimal to totally prescriptive, as desired. The same mechanisms encompass an orthogonally persistent programming model. We outline our approach to implementing this vision, and describe current progress.
Motivation & Objective
- To overcome the limitations of 1980s persistent programming systems, which were confined to single-host stores and lacked flexible data sharing.
- To integrate orthogonal persistence with modern peer-to-peer (P2P) systems to enable resilient, long-running distributed applications.
- To provide a unified programming model where local, remote, and persistent objects are treated identically, reducing conceptual and engineering complexity.
- To support a spectrum of programmer intervention—ranging from minimal to fully prescriptive—on persistence, distribution, and replication policies.
- To achieve transparent fault recovery by automatically reinstating objects from distributed replicas upon node or connection failure.
Proposed method
- Designing a middleware framework that combines RAFDA middleware for distributed object access with a P2P-based persistent storage layer.
- Implementing a common API for multiple P2P routing protocols (CAN, Pastry, Chord) to enable flexible and scalable object location and routing.
- Building a distributed directory service on top of the P2P overlay to manage object references and replication metadata.
- Supporting generic persistent storage architecture that enables objects to be transparently stored and retrieved across the P2P network.
- Integrating policy-based control for replication, distribution, and recovery, allowing customization based on application needs.
- Using a stateful protocol for object lifecycle management (e.g., bean states) to guide the programmer’s responsibilities in resilience and persistence.
Experimental results
Research questions
- RQ1Can a unified programming model be created that treats local, remote, and persistent objects with identical semantics?
- RQ2How can P2P infrastructure be leveraged to provide transparent, resilient, and scalable persistence for distributed applications?
- RQ3To what extent can fault tolerance be achieved without requiring application-level awareness of node failures or network partitions?
- RQ4What is the role of programmer intervention in managing persistence, replication, and distribution policies within a resilient system?
- RQ5Can orthogonal persistence be extended beyond single-host stores to a truly distributed, self-organizing P2P environment?
Key findings
- The framework successfully unifies local, remote, and persistent object references into a single addressing model, enabling transparent access across the network.
- The system achieves fault tolerance by automatically reinstating failed objects from distributed replicas, with no awareness required from reference holders.
- The integration of P2P routing (CAN, Pastry, Chord) with persistent storage enables scalable and self-organizing data distribution.
- The approach supports a spectrum of programmer involvement, from minimal (orthogonal persistence) to fully prescriptive (custom replication and recovery policies).
- The RAFDA middleware and P2P storage components have been fully implemented and are being integrated into a cohesive system.
- The architecture demonstrates that a global, ubiquitous, and reliable single address space can be approximated through data replication and P2P overlays, improving application availability and scalability.
Better researchstarts right now
From reading papers to final review, dramatically reduce your research time.
No credit card · Free plan available
This review was created by AI and reviewed by human editors.