Hystrix vs. Sentinel: A Tale of Two Circuit Breakers (Part 1)
Now that Hystrix is in maintenance mode, we take a look a potential alternative to this popular open source microservices platform.
Join the DZone community and get the full member experience.Join For Free
Hystrix has been pretty popular over the last several years. Now that it is in maintenance mode, many people are seeking alternatives. In this article, I will introduce Sentinel: an open-source Java flow control project. I will do so by comparing it with Hystrix, since more people are familiar with it. In this part, we'll compare these two at a higher level. In the next article, we'll look at some code examples.
What Is Sentinel?
In short, it is a circuit breaker. A circuit breaker is triggered when certain resources keep failing. Instead of continuing to pound the already failing resource, the circuit breaker will intercept the request and return a failure signal. That sounds similar to every circuit breaker pattern. However, Sentinel offers more choices such as flow shaping, overload protection, and fault tolerance.
History of Sentinel
- 2012: Sentinel started as a flow control component in Alibaba.
- 2013-2017: with the wild growth of microservices comes the challenge of reliability. Sentinel quickly grows into a tool to prevent cascading disasters
- 2018: Sentinel is open-sourced by Alibaba.
What Is Sentinel For?
- Sential provides many options to handle flow control. Users can choose to shape traffic based on QPS, thread pool numbers, system load, as well as using commands directly to stop traffic or to perform cold starts. Users can also mix and match different rules. Hystrix doesn't really offer comprehensive traffic shaping.
- Sentinal offers fault isolation and circuit breaking. This is similar to Hystrix. However, their approaches are different.
- Sentinal offers real-time monitoring. It also provides a dashboard to aggregate information from the distributed system.
How Is Sentinel Different From Hystrix?
The key difference between the two lies in how isolation is achieved. Hystrix normally uses a bulkhead pattern to isolate dependencies. It puts each dependency in a seperate thread pool. The main benefit of doing this is it provides a clean cut. The drawbacks mainly include the computational overhead that thread pool management incurs.
Sentinel, on the other hand, uses a counter for each dependency. By doing so, not only does it save the overhead of managing the thread pool, but it also gives more control to the user. The user now gets to decide the granularity of degradation of the flow.
This table lists more details of the difference Hystrix and Sentinel in design and implementation:
This may seem a little overwhelming. Users won't notice much difference from a user experience perspective, though.
Sentinal is well suited for the cloud-native environment. It can be integrated with other popular cloud native solutions. One of them is Spring Cloud. Another popular Java distributed framework in China is Dubbo. Sentinal can also work side-by-side with service mesh solutions such as Istio and Envoy.
Sentinal will soon be released as part of the Spring Boot framework. For more information, please visit their GitHub repo.
Published at DZone with permission of Leona Zhang. See the original article here.
Opinions expressed by DZone contributors are their own.