In this article, we’ll go through the overview of basic design patterns.
Circuit Breaker: This is a pattern that helps to manage calls from one service to another. There are three states of it:
- Open: Calls from one service to another service are not allowed.
- Closed: Calls from one service to another service are allowed.
- Half-Open: A few calls from one service to another service are allowed but not all calls are allowed.
Two implementations for circuit breakers: Hystrix and Resilience4J.
Bulkhead: It allows to set maximum concurrent users that can connect to a service.
Backpressure: We will add details of it later.
Bloom filters: it is a data structure to search an element in a data set quickly with the level of certainty. Guava is a known Java API implementation of bloom filters.
HyperLogLog: it is a data structure that can provide the probabilistic calculation of the cardinality of a data set. Let’s say we want to understand how many unique visitors visited a mall. We can use HyperLogLog data structure to do it efficiently.
Gang of Four Design Patterns: It consists of three types of patterns: structural, creational, and behavioral, In total there are 23 of patterns.
References:
Bloom filters: https://richardstartin.github.io/posts/building-a-bloom-filter-from-scratch
HyperLogLog: https://www.baeldung.com/java-hyperloglog