当前位置:网站首页>Service fusing hystrix
Service fusing hystrix
2022-07-05 05:18:00 【Meow xiansen likes fish】
One 、 summary
1.1 The problem of Distributed Computing
Applications in complex distributed architectures have dozens of dependencies , Every dependency will inevitably fail at some point 、
Service avalanche
When calling between multiple microservices , Suppose microservices A Call microservices B Micro service C, Microservices B Micro service C Call other microservices , That's what's called “ Fan out ”. If the call response time of a microservice on the fan out link is too long or unavailable , On the service A More and more system resources will be occupied by the call of , And then cause the system to crash , This is called “ Avalanche effect ”.
For high traffic applications , A single back-end dependency can cause all resources on all servers to saturate in seconds . Worse than failure is , These applications can also lead to increased latency between services , Backup queues , Threads and other system resources are tight , Cause more cascading failures in the whole system . These indicate the need to isolate and manage failures and delays , To the failure of a single dependency , Will not affect the entire application or system . therefore , Usually when you find that an instance under a module fails , At this time, this module will still receive traffic , Then the problematic module calls other modules , So there's a cascading failure , Or an avalanche .
1.2 Hystrix
Hystrix Is an open source library for dealing with latency and fault tolerance in distributed systems , In distributed systems , Many dependencies inevitably fail , For example, timeout. 、 Abnormal etc. .Hystrix To ensure that in the case of a dependency problem , It doesn't cause the overall service to fail , Avoid cascading faults , To improve the flexibility of distributed systems .
“ Circuit breaker ” It's a switching device , When a service unit fails , Through the fault monitoring of the circuit breaker ( Similar to a blown fuse ), Return an expected... To the caller 、 Alternative responses that can be handled (FallBack), Instead of waiting for a long time or throwing an exception that the caller can't handle , This ensures that the threads of the service caller will not be held for a long time 、 Occupy unnecessarily , Thus, it can avoid the fault spreading in the distributed system , Even an avalanche .
1.3 Hystrix effect
- Package request : Use HystrixCommand The calling logic since the package team , Each command is executed in a separate thread . The author used the “ Command mode ”.
- Trip mechanism : When the error rate of a service exceeds a certain threshold ,Hystrix It can trip automatically or manually , Stop requesting the service for a period of time .
- Resource isolation :Hystrix A small thread pool is maintained for each dependency ( Or semaphores ). If the thread pool is full , The request sent to the dependency will be rejected immediately , Instead of waiting in line , So as to speed up the failure determination .
- monitor :Hystrix It can monitor the changes of operation indicators and configurations in near real time , For example, success 、 Failure 、 Overtime , And rejected requests .
- Fallback mechanism : When the request fails 、 Overtime 、 Be rejected , Or when the circuit breaker is on , Perform fallback logic . The fallback logic is provided by the developer , For example, return a default value .
- Self repair : After the circuit breaker is opened for a period of time , Will automatically enter “ half ” state .
1.4 Hystrix Important concepts
1.4.1 Service isolation
It refers to dividing the system into several service modules according to certain principles , Each module is relatively independent , No strong dependence . When something goes wrong , Can isolate problems and impacts within a module , And the risk of non-proliferation , It does not affect other modules , Does not affect the overall system services .
1.4.2 Service failure
The concept of fusing comes from the circuit breaker in Electronic Engineering (Circuit Breaker). In the Internet system , When downstream services respond slowly or fail due to heavy access pressure , Upstream services to protect the overall availability of the system , You can temporarily cut off calls to downstream services . The sacrifice is local , The measure to preserve the whole is called fusing .
1.4.3 service degradation
So called demotion , It's when a service melts , The server will no longer be called , At this point the client can prepare a local one itself fallback Callback , Returns a default value . It can also be understood as telling the truth .
What conditions trigger demotion ?
- The program runs abnormally
- Overtime
- Service fusions trigger service degradation
- Thread pool / If the semaphore is full, the service will be degraded
1.4.4 Service restriction
Flow restriction can be considered as a kind of service degradation , Current limiting is to limit the input and output flow of the system , To protect the system . Generally speaking , The throughput of the system can be measured , In order to ensure the stable operation of the system , Once you reach the threshold you need to limit , We need to limit the flow and take a small amount of measures to achieve the purpose of limiting the flow . example : Put off solving 、 Refuse to resolve , Or partial refusal to solve, etc .
边栏推荐
猜你喜欢
Applet live + e-commerce, if you want to be a new retail e-commerce, use it!
Django reports an error when connecting to the database. What is the reason
Redis has four methods for checking big keys, which are necessary for optimization
Research on the value of background repeat of background tiling
[to be continued] [UE4 notes] L2 interface introduction
Do a small pressure test with JMeter tool
Chinese notes of unit particle system particle effect
Use of snippets in vscode (code template)
用 Jmeter 工具做个小型压力测试
Embedded database development programming (V) -- DQL
随机推荐
Haut OJ 1245: large factorial of CDs --- high precision factorial
[turn]: Apache Felix framework configuration properties
PMP candidates, please check the precautions for PMP examination in July
BUUCTF MISC
Recherche de mots pour leetcode (solution rétrospective)
C language Essay 1
LeetCode之單詞搜索(回溯法求解)
【ES实战】ES上的native realm安全方式使用
Optimization scheme of win10 virtual machine cluster
Transport connection management of TCP
发现一个很好的 Solon 框架试手的教学视频(Solon,轻量级应用开发框架)
Out and ref functions of unity
Binary search basis
Unity find the coordinates of a point on the circle
服务熔断 Hystrix
Research on the value of background repeat of background tiling
Web APIs DOM节点
GBase数据库助力湾区数字金融发展
Embedded database development programming (V) -- DQL
Data is stored in the form of table