I-Backpressure yi-negotiation ebonakalayo phakathi kwamveliso kunye nabathengi. Ulawule, kwaye iinkqubo zayo zihlanganisa ngokufanelekileyo. Ignorise, kwaye zihlanganisa phantsi kwe-peak load.
I-Backpressure yi-negotiation ebonakalayo phakathi kwamveliso kunye nabathengi. Ulawule, kwaye iinkqubo zayo zihlanganisa ngokufanelekileyo. Ignorise, kwaye zihlanganisa phantsi kwe-peak load.
Ukubuyekezwa kwangaphambili kubonisa ukuba namasipala ezininzi ezincinane kunye nezakhiwo ezilungileyo ayikho kwangaphakathi nemandla ezimbiniweyo yeengxaki engabonakaliweyo kwaye engabonakaliweyo. Ngokusho, ngexesha elandelayo,Iinkqubo ezidlulileyo, i-caller ebonakalayo inokukwazi ukuchitha inkqubo epheleleyo kwaye inokukhawuleza ukuchithaUkukhangisa.
Kwakhona aUmzekelo wokuqala, Ndithi malunga njani i-retry storm inesibini ukuthatha iinkonzo epheleleyo ukuba i-guardrails efanelekileyo ayikho. Ngiya, ndiyifunde xa inkonzo kufuneka ukhangele ukusetyenziswa kwe-backpressure kwi-callers yayo, indlela yokusetyenziswa, kwaye i-callers ingasebenza njani ukuxhaswa nayo.
Backpressure
UkucaciswaNjengoko igama lweziphi na ingxaki, i-backpressure yindlela kwiinkqubo ezidlulileyo ezihambelana nokukwazi kwinkqubo ukunciphisa isantya esetyenziswa okanye ekhiqizwa ukuze zikhuthaze i-overloading yayo okanye iingxaki zayo ezantsi. I-system enikezela i-backpressure kwi-caller yayo ayikho ngokuqinisekileyo, njenge- throttling okanye ukunciphisa isantya, kodwa ngexesha elifanelekileyo, njenge-slowing kwinkqubo yayo yayo ngokongeza i-latency kwiingxaki ezisetyenziswa ngaphandle kokufumana ngokufanelekileyo.
Zonke i-backpressure emibi kunye ne-backpressure emibuzo ukunciphisa i-caller, okanye xa i-caller isebenza ngokufanelekileyo okanye inkonzo ngokufanelekileyo kwaye kufuneka ixesha lokufumana.
Need for Backpressure
Nceda ukuthatha umzekelo yokubonisa ukuba isisombululo kufuneka isicelo backpressure. Kule isibonelo, sinikezela inkonzo control plane kunye neengxaki ezintathu eziphambili: i-frontend apho imibuzo yeempumelelo yeempumelelo yabasebenzisi, i-internal queue apho imibuzo yeempumelelo yeempumelelo yabasebenzisi, kunye ne-consumer app enokufunda iingxelo evela kwi-cheue kwaye ibhalwe kwi-database ngenxa yokubambisana.
Producer-Consumer Mismatch
Producer-Consumer MismatchQinisekisa i-scenario apho ama-actors/i-customers zithintela kwi-front end ngexesha elikhulu leyo okanye i-internal queue is full okanye i-worker ebizwa kwi-database is busy, okwenza i-course epheleleyo. Kule mzekelo, iimfuno ayikwazi ukuxhaswa, ngoko kwimeko yokunciphisa iimfuno ze-customer, kunokuba kunokuba kuxhaswe abathengi ngexesha elandelayo. Le ukuxhaswa kunokwenzeka ngenxa yeengxaki ezininzi, njenge-broke ye-inbound traffic okanye ingxaki elincane kwinkqubo apho umthengisi waye yaye ngoku kufuneka isebenze i-backlog ekhulumene kwimeko yayo ixesha elidlulileyo.
Resource Constraints and Cascading Failures
Iingxaki ze-Resource kunye ne-Cascading FailuresUkukhangisa i-scenario apho umnqweno wakho ufikelela i-100% yayo, kodwa ngokuvamile ku-50%. Ukugqithisa lo mveliso kuxhomekeke, ufakele i-app yakho yabasetyhini kunye nokufumana kwi-database ngexesha elikhulu. Nangona kunjalo, i-database ayikwazi ukufumana lo mveliso (isib. ngenxa yeengxaki ze-writes/sec) kwaye isixhomekeke. Le nqakraza iya kuthatha yonke inkqubo kunye ne-mean Time To Recover (Ukucinga). Ukusetyenziswa kwe-backpressure kwiindawo ezifanelekileyo kubonakala kubaluleke kwimeko efanayo.
Missed SLAs
Ukukhangisa SLAsQinisekisa i-scenario apho idatha ebhaliwe kwi-database ibhaliswe ngexesha le-5 imizuzu, kwaye i-application elinye isibuyekeza ukuba ibhalisele. Ngoku, ukuba i-system ayikwazi ukufumana le-SLA ngenxa yeeyiphi na isizathu, njengoko i-90% yokufuneka kunye ne-potential ukuya kwi-10 imizuzu ukutya zonke iingxelo, kunokukhetha iinkqubo ye-backpressure.
Ungayifumana kubathengi ukuba uya kuthatha i-SLA kunye nokufunda ukuba bafumane kwakhona ngexesha elandelayo, okanye usebenzise i-backpressure ngokunciphisa imibuzo eyenziwe ngempumelelo ukusuka kwisithuba ukufumana i-SLA kwiimeko / imibuzo ezininzi.
Backpressure Challenges
Iingxaki ze-backpressureNgokusekelwe kwimibelelwano ezidlulileyo, kubonakala ukuba kufuneka usetyenzise uvavanyo, kwaye akunakwenzeka ukuba akukho umxokozelo malunga nayo. Njengoko kunokwenzeka, i-challenge yokuqala ayikho malungaNgabakufuneka usetyenzise uxinzelelo, kodwa ikakhulu malungaYintoniukucacisa iingxaki ezifanelekileyo yokusetyenziswa kwe-backpressure kunye neemakhemikhali yokusetyenziswa kwe-backpressure ezihambelana nezidingo ezithile ze-service/business.
I-backpressure ivumela ukuxhaswa phakathi kwe-transput kunye ne-stability, efakwe ngakumbi ngenxa ye-challenge ye-load prediction.
Identifying the Backpressure Points
Find Bottlenecks/Weak Links
Thola Bottlenecks / Iingxaki ezincinaneZonke iinkqubo zihlanganisa izibane. Ezinye ziyafumaneka kunye nokhuseleko, kwaye ezinye akayi. Yenza iinkqubo apho i-dataplane ye-flot (izigidi ze-hosts) zihlanganisa kwi-flotop ye-control plane ye-small (ngaphezulu kwe-5 i-hosts) ukuze ufumane i-config ezininzi kwi-database, njengoko kucacisa kwi-diagram phezulu.
Uluhlu elikhulu ingathanda ngempumelelo iiflothi elincinci. Kule mzekelo, ukhuseleko, iiflothi elincinane kufuneka iinkqubo yokusetyenziswa ukutshatyalaliswa kwi-caller. Enye ingxaki elandelayo elandelayo kwi-architecture iinkompo ezihambelana kwiinkqubo epheleleyo, njenge-anti-entropy scanners. Ukuba zikhuba, le nkqubo ayikwazi ukufikelela kwimeko efanelekileyo kwaye inokukwazi ukunciphisa inkonzo epheleleyo.
Use System Dynamics: Monitors/Metrics
Ukusetyenziswa System Dynamics: Monitors / MetricsEnye indlela efanelekileyo yokufumana iiphakamiso ye-backpressure ye-system yakho kuyinto ukuba i-monitors / i-metric efanelekileyo. Qhagamshelana ngokuzenzekelayo nendlela ye-system, kuquka ububanzi be-check, ukusetyenziswa kwe-CPU / i-memory, kunye ne-network throughput. Usebenzisa le data ye-real-time ukucacisa iiphakamiso ezintsha kunye nokuguqula iiphakamiso ze-backpressure ngokufanayo.
Ukwenza ukubonisa oluqhubekayo nge-metric okanye iingcali ezifana ne-performance canaries kwiinkomponents ezahlukahlukeneyo ze-system yindlela enye yokufumana ukuba i-system yakho iye phantsi kwe-stress kwaye kufuneka uqhagamshelane ne-backpressure kwi-users/callers zayo. Ezi i-performance canaries ziya kufumaneka kwiinkalo ezahlukeneyo ze-system ukufumana iindawo ze-shock. Kwakhona, ukuba i-real-time dashboard kwi-usage ye-resource ye-internal yindlela olungileyo yokusebenzisa i-dynamics ye-system ukufumana iindawo zeengcali kwaye ziya kubaluleke kakhulu.
Boundaries: The Principle of Least Astonishment
Izixhobo: I-Principle of Least SurpriseIindawo ezininzi ezibonakalayo kubathengi ziquka iindawo zeenkonzo ezinxulumene. Ezi ziquka i-API ezisetyenziswa kubathengi ukuze bafumene iimfuno zabo. Oku kwakhona indawo apho abathengi ziya kubathandabuzele kakhulu ngexesha le-backpressure, njengoko kubonisa ngokucacileyo ukuba i-system iyathintela. Oku kunokuba yi- throttling okanye ukuchithwa kwe-load.
Umgangatho efanayo ingasetyenziswa kwi-service yenyewe kwi-subcomponents ezahlukeneyo kunye ne-interfaces nge-interaction. Lezi zindawo ziyafumaneka kakhulu ukuchithwa kwe-backpressure. Oku kunceda ukunciphisa i-confusion kunye nokwandisa ukusebenza kwe-system.
How to Apply Backpressure in Distributed Systems
Indlela yokusebenzisa Backpressure kwi-Distributed SystemsKwi-section eyadlulayo, sinxholo malunga neendlela yokufumana iindawo ezifanelekileyo zokufumana i-backpressure. Emva kokufumana iingxaki zayo, apha iindlela ezininzi ekufumana le-backpressure kwimveliso:
Yenza i-Explicit Flow Control
Umzekelo wokwenza ubungakanani ubungakanani ubungakanani kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kubonwa kub
CallRate_new = CallRate_normal * (1 - (Q_currentSize / Q_maxSize))
CallRate_new = CallRate_normal * (1 - (Q_currentSize / Q_maxSize))
Invert Responsibilities
Kwizinye iinkqubo, kunokwenzeka ukuguqulwa umyalelo apho abathengi awubhalisa imibuzo kwi-service kodwa bafumane isicelo se-service ukuba isebenze ngokufanelekileyo xa ifumaneka. Le nkqubo inikeza inkonzo yokufumana ukulawula ngokupheleleyo malunga nexabiso enokwenzeka kwaye inokukwazi ukuguqulwa ngokugqithisileyo ubungakanani isicelo ngokufanelekileyo. Unako usebenzise i-receiving service.Ukucinga bucketisicwangciso apho inkonzo yokufumana ifumana i-token, kwaye oku kuthetha umxokozeli ngexesha kunye nexabiso oluthumela kwi-server. Nazi i-algorithm isampuli esebenzayo:
# Service requests work if it has capacity
if Tokens_available > 0:
Work_request_size = min (Tokens_available, Work_request_size _max) # Request work, up to a maximum limit
send_request_to_caller(Work_request_size) # Caller sends work if it has enough tokens
if Tokens_available >= Work_request_size:
send_work_to_service(Work_request_size)
Tokens_available = Tokens_available – Work_request_size
# Tokens are replenished at a certain rate
Tokens_available = min (Tokens_available + Token_Refresh_Rate, Token_Bucket_size)
Proactive Adjustments
Kwiimeko, uyazi ngexesha elandelayo ukuba i-system yakho uya kufumaneka ngexesha elide, kwaye uthathe iindlela ezininzi zokusebenza, njenge-ukubiza umxokozeli ukunciphisa ububanzi be-call kunye nokwandisa ngokugqithisileyo. Think of a scenario where your downstream was down and rejected all your requests.
Kwixesha elandelayo, uxhumane yonke into kunye nexesha elandelayo ukuba uxhumane.Ukucinga. Xa utshintshe ngokukhawuleza kunokuba ngexesha elidlulileyo, unayo ingozi ukunciphisa iinkonzo ezantsi. Ukusombulula oku, unako ukunciphisa ngokufanelekileyo iingcebiso ze-caller okanye uqhagamshelane ne-caller ukunciphisa ivolumu yayo kunye nokuvula ngokushesha iingcebiso ze-flowgates.
Throttling
Restrict the number of requests a service can serve and discard requests beyond that. Throttling can be applied at the service level or the API level. This throttling is a direct indicator of backpressure for the caller to slow down the call volume. You can take this further and do priority throttling or fairness throttling to ensure that the least impact is seen by the customers.
Load Shedding
Throttling ibonisa ukuba ukunceda imibuzo xa utshintshe ezinye izixazululo zangaphambili. Imibuzo yeenkcukacha kunokufumaneka ukuba inkonzo uxhaswa kunye nolwazi ukunciphisa ngokucacileyo imibuzo ezidlulileyo. Lo mveliso yenzelwe ngokuvamile isixazululo lokugqibela iinkonzo ukuba iinkonzo zihlobene kunye nqakraza umxokozelo.
Conclusion
UkucingaBackpressure is a critical challenge in distributed systems that can significantly impact performance and stability. Understanding the causes and effects of backpressure, along with effective management techniques, is crucial for building robust and high-performance distributed systems. When implemented correctly, backpressure can enhance a system's stability, reliability, and scalability, leading to an improved user experience.
Nangona kunjalo, ukuba isetyenziswe ngokufanelekileyo, kunokukhawuleza ukuphazamiseka kwamakhasimende kwaye kwandisa isisombululo lwekhwalithi. Ukuphendula ngokufanelekileyo i-backpressure nge-system design kunye ne-monitoring iyiphi na isisombululo yokugcina isisombululo lwekhwalithi. Nangona ukuvelisa i-backpressure kunokufumaneka kwi-compromise, njenge-potentially-impacting throughput, izinzuzo kwi-resilience yekhwalithi kunye ne-user satisfaction ziquka kakhulu.