Chapter 14. Distributed Systems Techniques and Patterns

In this chapter, we will introduce some fundamental techniques of distributed systems. Some of these are generalizations of the concurrent patterns we have already met, but others are new abstractions caused by one or more of the fallacies of distributed computing enumerated by L. Peter Deutsch and James Gosling in the mid-1990s.

The fallacies are:

  • The network is reliable.

  • Latency is zero.

  • Bandwidth is infinite.

  • The network is secure.

  • Topology doesn’t change.

  • There is one administrator.

  • Transport cost is zero.

  • The network is homogeneous.

Some of these effects will impact us more than others—​for example, the question of latency is of particular importance, as is the possibility of topology change within a cluster. In addition, architecture styles like service-oriented architecture (SOA) and microservice-based architectures can significantly increase the number of distributed connections, which, in turn, increases the potential impact of the fallacies.

That is, we may discover that although we distributed our app as a means of optimizing it and allowing it to scale, instead we did the exact opposite because we failed to take into account one or more of the fallacies. To counteract this possibility, we need some tools and techniques to help immunize us from the impact of the fallacies.

In this chapter, we will introduce several of these useful technologies and will point out which of the fallacies are relevant ...

Get Optimizing Cloud Native Java, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.