CISUC

Connection Handler: A Design Pattern for Recovery from Connection Crashes

Authors

Abstract

Creating dependable distributed applications for the cloud is a challenging task that heavily depends on the communication middleware. Such middleware will invariably depend on the Transmission Control Protocol (TCP), as TCP stands at the core of reliable communication on the Internet. Despite offering reliability against dropped and out-of-order packets, the ubiquitous TCP provides no recovery options when connections crash due to, for example, lost connectivity. Should this happen, developers must rollback the communication endpoints to some coherent state, using their own error-prone solutions. In fact, overcoming this limitation is a difficult and unsolved problem, and so far, no solution managed to gain wide acceptance, as they all impact TCP’s simplicity, performance, or pervasiveness. In this chapter, we present the Connection Handler design pattern, a reusable design solution that allows the development of cloud communication middleware that is tolerant to connection crashes. Being a design pattern, it bears little or no dependence to the operating system, programming language, or external libraries, having minimal impact on any other cloud system layers. To demonstrate that the Connection Handler does not impair performance and involves a low programming complexity, we applied it to: (i) a stream-based TCP, (ii) an HTTP, and (iii) a message-oriented application. Our results show that our design pattern is efficient and of general use, thus being applicable to a wide range of cloud-based applications and services.

Keywords

Reliable communication, Cloud computing, TCP Connection crashes, Connection handler, Fault-tolerance, Design patterns

Book Chapter

Software Engineering in the Era of Cloud Computing, 9, pp. 211-251, Springer, Cham, January 2020

DOI


Cited by

No citations found