chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是業(yè)務(wù)補償?業(yè)務(wù)補償設(shè)計的實現(xiàn)方式

jf_ro2CN3Fa ? 來源:栗箏i ? 2023-04-10 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們知道,應(yīng)用系統(tǒng)在分布式的情況下,在通信時會有著一個顯著的問題,即一個業(yè)務(wù)流程往往需要組合一組服務(wù),且單單一次通信可能會經(jīng)過 DNS 服務(wù),網(wǎng)卡、交換機、路由器、負(fù)載均衡等設(shè)備,而這些服務(wù)于設(shè)備都不一定是一直穩(wěn)定的,在數(shù)據(jù)傳輸?shù)恼麄€過程中,只要任意一個環(huán)節(jié)出錯,都會導(dǎo)致問題的產(chǎn)生。

這樣的事情在微服務(wù)下就更為明顯了,因為業(yè)務(wù)需要在一致性上的保證。也就是說,如果一個步驟失敗了,要么不斷重試保證所有的步驟都成功,要么回滾到以前的服務(wù)調(diào)用。

因此我們可以對業(yè)務(wù)補償?shù)倪^程進行一個定義,即當(dāng)某個操作發(fā)生了異常時,如何通過內(nèi)部機制將這個異常產(chǎn)生的「不一致」?fàn)顟B(tài)消除掉。

一、關(guān)于業(yè)務(wù)補償機制

1、什么是業(yè)務(wù)補償

我們知道,應(yīng)用系統(tǒng)在分布式的情況下,在通信時會有著一個顯著的問題,即一個業(yè)務(wù)流程往往需要組合一組服務(wù),且單單一次通信可能會經(jīng)過 DNS 服務(wù),網(wǎng)卡、交換機、路由器、負(fù)載均衡等設(shè)備,而這些服務(wù)于設(shè)備都不一定是一直穩(wěn)定的,在數(shù)據(jù)傳輸?shù)恼麄€過程中,只要任意一個環(huán)節(jié)出錯,都會導(dǎo)致問題的產(chǎn)生。

這樣的事情在微服務(wù)下就更為明顯了,因為業(yè)務(wù)需要在一致性上的保證。也就是說,如果一個步驟失敗了,要么不斷重試保證所有的步驟都成功,要么回滾到以前的服務(wù)調(diào)用。

因此我們可以對業(yè)務(wù)補償?shù)倪^程進行一個定義,即當(dāng)某個操作發(fā)生了異常時,如何通過內(nèi)部機制將這個異常產(chǎn)生的「不一致」?fàn)顟B(tài)消除掉。

2、業(yè)務(wù)補償設(shè)計的實現(xiàn)方式

業(yè)務(wù)補償設(shè)計的實現(xiàn)方式主要可分為兩種:

回滾(事務(wù)補償) ,逆向操作,回滾業(yè)務(wù)流程,意味著放棄,當(dāng)前操作必然會失敗;

重試 ,正向操作,努力地把一個業(yè)務(wù)流程執(zhí)行完成,代表著還有成功的機會。

一般來說,業(yè)務(wù)的事務(wù)補償都是需要一個工作流引擎的。這個工作流引擎把各式各樣的服務(wù)給串聯(lián)在一起,并在工作流上做相應(yīng)的業(yè)務(wù)補償,整個過程設(shè)計成為最終一致性的。

Ps:因為「補償」已經(jīng)是一個額外流程了,既然能夠走這個額外流程,說明時效性并不是第一考慮的因素。所以做補償?shù)暮诵囊c是:寧可慢,不可錯。

二、關(guān)于回滾

“回滾” 是指當(dāng)程序或數(shù)據(jù)出錯時,將程序或數(shù)據(jù)恢復(fù)到最近的一個正確版本的行為。在分布式業(yè)務(wù)補償設(shè)計到的回滾則是通過事務(wù)補償?shù)姆绞?,回到服?wù)調(diào)用以前的狀態(tài)。

1、顯示回滾

回滾一般可分為 2 種模式:

顯式回滾 ;調(diào)用逆向接口,進行上一次操作的反操作,或者取消上一次還沒有完成的操作(須鎖定資源);

隱式回滾 :隱式回滾意味著這個回滾動作你不需要進行額外處理,往往是由下游提供了失敗處理機制的。

最常見的就是「顯式回滾」。這個方案無非就是做 2 個事情:

首先要確定失敗的步驟和狀態(tài),從而確定需要回滾的范圍。一個業(yè)務(wù)的流程,往往在設(shè)計之初就制定好了,所以確定回滾的范圍比較容易。但這里唯一需要注意的一點就是:如果在一個業(yè)務(wù)處理中涉及到的服務(wù)并不是都提供了「回滾接口」,那么在編排服務(wù)時應(yīng)該把提供「回滾接口」的服務(wù)放在前面,這樣當(dāng)后面的工作服務(wù)錯誤時還有機會「回滾」。

其次要能提供「回滾」操作使用到的業(yè)務(wù)數(shù)據(jù)。「回滾」時提供的數(shù)據(jù)越多,越有益于程序的健壯性。因為程序可以在收到「回滾」操作的時候可以做業(yè)務(wù)的檢查,比如檢查賬戶是否相等,金額是否一致等等。

2、回滾的實現(xiàn)方式

對于跨庫的事務(wù),比較常見的解決方案有:兩階段提交、三階段提交(ACID)但是這 2 種方式,在高可用的架構(gòu)中一般都不可取,因為跨庫鎖表會消耗很大的性能。

高可用的架構(gòu)中一般不會要求強一致性,只要達(dá)到最終的一致性就可以了??梢钥紤]:事務(wù)表、消息隊列、補償機制、TCC 模式(占位 / 確認(rèn)或取消)、Sagas模式(拆分事務(wù) + 補償機制)來實現(xiàn)最終的一致性。

三、關(guān)于重試

“重試” 的語義是我們認(rèn)為這個故障是暫時的,而不是永久的,所以,我們會去重試。這個操作最大的好處就是不需要提供額外的逆向接口。這對于代碼的維護和長期開發(fā)的成本有優(yōu)勢,而且業(yè)務(wù)是變化的。逆向接口也需要變化。所以更多時候可以考慮重試。

1、重試的使用場景

相較于回滾,重試使用的場景要少一些:下游系統(tǒng)返回請求超時,被限流中等臨時狀態(tài)的時候,我們就可以考慮重試了。而如果是返回余額不足,無權(quán)限的明確業(yè)務(wù)錯誤,就不需要重試。一些中間件或者 RPC 框架,返回 503,404 這種沒有預(yù)期恢復(fù)時間的錯誤,也不需要重試了。

2、重試策略

重試的時間和重試的次數(shù)。這種在不同的情況下要有不同的考量,主流的重試策略主要是以下幾種:

策略 1 - 立即重試 :有時候故障是暫時性的,可能因為網(wǎng)絡(luò)數(shù)據(jù)包沖突或者硬件組件高峰流量等事件造成的,在這種情況下,適合立即重試的操作。不過立即重試的操作不應(yīng)該超過一次,如果立即重試失敗,應(yīng)該改用其他策略;

策略 2 - 固定間隔 :這個很好理解,比如每隔 5 分鐘重試一次。PS:策略 1 和策略 2 多用于前端系統(tǒng)的交互操作中;

策略 3 - 增量間隔 :每一次的重試間隔時間增量遞增。比如,第一次 0 秒、第二次 5 秒、第三次 10 秒這樣,使得失敗次數(shù)越多的重試請求優(yōu)先級排到越后面,給新進入的重試請求讓路;

return(retryCount-1)*incrementInterval;

策略 4 - 指數(shù)間隔: 每一次的重試間隔呈指數(shù)級增加。和增量間隔一樣,都是想讓失敗次數(shù)越多的重試請求優(yōu)先級排到越后面,只不過這個方案的增長幅度更大一些;

return2^retryCount;

策略 5 - 全抖動: 在遞增的基礎(chǔ)上,增加隨機性(可以把其中的指數(shù)增長部分替換成增量增長。)適用于將某一時刻集中產(chǎn)生的大量重試請求進行壓力分散的場景;

returnrandom(0,2^retryCount);

策略 6 - 等抖動: 在「指數(shù)間隔」和「全抖動」之間尋求一個中庸的方案,降低隨機性的作用。適用場景和「全抖動」一樣。

intbaseNum=2^retryCount;
returnbaseNum+random(0,baseNum);

策略 - 3、4、5、6 的表現(xiàn)情況大致是這樣(x軸為重試次數(shù)):

882edae4-d6c8-11ed-bfe3-dac502259ad0.png

3、重試時的注意事項

首先對于需要重試的接口,是需要做成冪等性的,即不能因為服務(wù)的多次調(diào)用而導(dǎo)致業(yè)務(wù)數(shù)據(jù)的累計增加或減少。

滿足「冪等性」其實就是需要想辦法識別重復(fù)的請求,并且將其過濾掉。思路就是:

給每個請求定義一個唯一標(biāo)識。

在進行「重試」的時候判斷這個請求是否已經(jīng)被執(zhí)行或者正在被執(zhí)行,如果是則拋棄該請求。

Ps:此外重試特別適合在高負(fù)載情況下被降級,當(dāng)然也應(yīng)當(dāng)受到限流和熔斷機制的影響。當(dāng)重試的“矛”與限流和熔斷的“盾”搭配使用,效果才是最好。

四、業(yè)務(wù)補償機制的注意事項

1、ACID 還是 BASE

ACID 和 BASE 是分布式系統(tǒng)中兩種不同級別的一致性理論,在分布式系統(tǒng)中,ACID有更強的一致性,但可伸縮性非常差,僅在必要時使用;BASE的一致性較弱,但有很好的可伸縮性,還可以異步批量處理;大多數(shù)分布式事務(wù)適合 BASE。

而在重試或回滾的場景下,我們一般不會要求強一致性,只要保證最終一致性就可以了!

2、業(yè)務(wù)補償設(shè)計的注意事項

業(yè)務(wù)補償設(shè)計的注意事項:

因為要把一個業(yè)務(wù)流程執(zhí)行完成,需要這個流程中所涉及的服務(wù)方支持冪等性。并且在上游有重試機制;

我們需要小心維護和監(jiān)控整個過程的狀態(tài),所以,千萬不要把這些狀態(tài)放到不同的組件中,最好是一個業(yè)務(wù)流程的控制方來做這個事,也就是一個工作流引擎。所以,這個工作流引擎是需要高可用和穩(wěn)定的;

補償?shù)臉I(yè)務(wù)邏輯和流程不一定非得是嚴(yán)格反向操作。有時候可以并行,有時候,可能會更簡單??傊?,設(shè)計業(yè)務(wù)正向流程的時候,也需要設(shè)計業(yè)務(wù)的反向補償流程;

我們要清楚地知道,業(yè)務(wù)補償?shù)臉I(yè)務(wù)邏輯是強業(yè)務(wù)相關(guān)的,很難做成通用的;

下層的業(yè)務(wù)方最好提供短期的資源預(yù)留機制。就像電商中的把貨品的庫存預(yù)先占住等待用戶在 15 分鐘內(nèi)支付。如果沒有收到用戶的支付,則釋放庫存。然后回滾到之前的下單操作,等待用戶重新下單。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    2051

    瀏覽量

    66898
  • 交換機
    +關(guān)注

    關(guān)注

    23

    文章

    2843

    瀏覽量

    103306
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3868

    瀏覽量

    118362
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    227

    瀏覽量

    20879

原文標(biāo)題:淺談分布式系統(tǒng)中的補償機制設(shè)計問題

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于死區(qū)補償的電機低速運行穩(wěn)定性研究

    摘 要:電機低速運行時,死區(qū)效應(yīng)可能導(dǎo)致電流波形畸變嚴(yán)重,使電機轉(zhuǎn)矩發(fā)生脈動。本文提出一種新型PWM控制死區(qū)補償方法,該控制算法通過坐標(biāo)變換、定標(biāo)的方式將合成電流空間矢量與定子旋轉(zhuǎn)磁場同步,根據(jù)電流
    發(fā)表于 07-29 16:21

    請問運放電路有哪些補償方法以及如何補償

    曲線和相位特性曲線盡可能的實現(xiàn)單位頻率增益和單位相位增益的補償; 除此之外還有什么超前補償和滯后補償,這又是根據(jù)什么劃分的,能否舉出一個實例電路簡述超前
    發(fā)表于 03-24 06:20

    OptiSystem-系統(tǒng)角度下分析色散補償方案

    色散補償在2.5和10 Gbps比特率下的系統(tǒng)性能。眼圖所示為-12和10 dBm信號功率。 利用DCM實現(xiàn)色散補償 我們現(xiàn)在將展示補償色散量如何影響系統(tǒng)性能。我們將使用一個理想的色散
    發(fā)表于 03-20 18:20

    補償導(dǎo)線可以當(dāng)電線用嗎,補償導(dǎo)線有哪幾種類型

    在電子與電氣工程領(lǐng)域,導(dǎo)線作為電能與信息傳輸?shù)幕A(chǔ)元件,其種類繁多,各具特色。補償導(dǎo)線與常規(guī)電線便是其中兩類,它們在功能、設(shè)計與應(yīng)用上存在顯著差異。本文將深入探討補償導(dǎo)線與常規(guī)電線的區(qū)別、補償導(dǎo)線的類型及其獨特應(yīng)用,為技術(shù)人員提
    的頭像 發(fā)表于 01-30 15:51 ?2529次閱讀

    補償導(dǎo)線的作用是什么?使用時注意哪些事項?

    在溫度測量與控制領(lǐng)域,補償導(dǎo)線作為一種關(guān)鍵的傳輸媒介,扮演著至關(guān)重要的角色。它不僅能夠有效延長熱電偶的冷端,還能補償因環(huán)境溫度變化而引起的測溫誤差,確保溫度測量的準(zhǔn)確性和穩(wěn)定性。本文將深入探討補償導(dǎo)線的作用、使用時的注意事項及其
    的頭像 發(fā)表于 01-30 15:49 ?3031次閱讀

    光伏電站中無功補償和SVG有什么聯(lián)系

    ? 無功補償的主要作用就是提高功率因數(shù),以減少設(shè)備容量和功率損耗,穩(wěn)定電壓和提高供電質(zhì)量。? ?無功補償裝置的類型光伏電站運維? ? 無功補償裝置有很多種類型,比如并聯(lián)電容器、同步調(diào)相機,還有我們
    的頭像 發(fā)表于 01-23 14:09 ?1407次閱讀
    光伏電站中無功<b class='flag-5'>補償</b>和SVG有什么聯(lián)系

    飽和蒸汽流量計測量時補償方式的選擇

    在飽和蒸汽流量測量中,補償方式的選擇是確保測量準(zhǔn)確性的關(guān)鍵。由于飽和蒸汽的密度與溫度或壓力之間存在固定的對應(yīng)關(guān)系,因此可以通過溫度補償或壓力補償來修正測量結(jié)果。對于飽和蒸汽來說,可以只
    的頭像 發(fā)表于 12-29 09:38 ?660次閱讀

    NTC熱敏電阻的溫度補償功能

    Coefficient)是一種具有負(fù)溫度系數(shù)的熱敏電阻器,其電阻值隨著溫度的升高而降低,反之則升高。這種特性使得NTC熱敏電阻在溫度測量和控制領(lǐng)域具有廣泛的應(yīng)用。 二、溫度補償的定義與需求 溫度補償是指通過某種方式調(diào)整電路或系
    的頭像 發(fā)表于 11-26 17:42 ?3585次閱讀

    了解無功補償的概念

    關(guān)注“acrelzx”微信號,了解更多產(chǎn)品資訊,可咨詢相關(guān)案例 (具體咨詢安科瑞187021張欣11310) 無功補償,是一種在電力供電系統(tǒng)中起提高電網(wǎng)的功率因數(shù)的作用,降低供電變壓器及輸送線
    的頭像 發(fā)表于 11-15 09:08 ?971次閱讀
    了解無功<b class='flag-5'>補償</b>的概念

    無功功率補償器顯示欠電流的原因

    無功功率補償器(如靜態(tài)無功補償裝置,SVC或無功補償電容器等)出現(xiàn)“欠電流”提示,通常表示該設(shè)備的輸出電流不足,未能滿足所需的無功功率補償要求。其可能的原因如下:1、負(fù)載變化或降低負(fù)載
    的頭像 發(fā)表于 11-06 15:58 ?3415次閱讀
    無功功率<b class='flag-5'>補償</b>器顯示欠電流的原因

    功率因數(shù)補償后數(shù)值沒變

    很多行業(yè)在實際用電過程中,往往會采用功率因數(shù)補償措施,以期提升電能的使用效率和降低電費。然而,部分用戶在進行了功率因數(shù)補償后,發(fā)現(xiàn)實際的功率因數(shù)數(shù)值并沒有明顯的變化,甚至表現(xiàn)出無變化的狀態(tài)。這是
    的頭像 發(fā)表于 11-04 14:23 ?943次閱讀
    功率因數(shù)<b class='flag-5'>補償</b>后數(shù)值沒變

    低壓電容補償超限擊穿的原因

    在電場作用下絕緣物內(nèi)部產(chǎn)生破壞性的放電,絕緣電阻下降,電流增大,并產(chǎn)生破壞和穿孔的現(xiàn)象 低壓電容補償設(shè)備在低壓配電系統(tǒng)中作為無功功率補償裝置的主要電器件而得到廣泛應(yīng)用,但由于補償設(shè)備長期處于運載狀態(tài)
    的頭像 發(fā)表于 10-30 14:15 ?903次閱讀
    低壓電容<b class='flag-5'>補償</b>超限擊穿的原因

    電力系統(tǒng)諧波處理與濾波補償的區(qū)別

    在電力系統(tǒng)中,諧波處理和濾波補償是兩個相關(guān)但有不同目的和實現(xiàn)方法的概念。以下是它們的區(qū)別:一、諧波處理1、目的: 主要用于減少或消除電力系統(tǒng)中的諧波干擾。諧波是由非線性負(fù)載(如變頻器、整流器、電弧爐
    的頭像 發(fā)表于 10-23 15:04 ?1837次閱讀
    電力系統(tǒng)諧波處理與濾波<b class='flag-5'>補償</b>的區(qū)別

    低壓交流系統(tǒng)無功補償通常采用哪種補償裝置

    在低壓交流系統(tǒng)中,無功補償的主要目標(biāo)是提高功率因數(shù),減少無功功率對系統(tǒng)的影響。常見的無功補償裝置包括以下幾種:1、并聯(lián)電容器組最常見的補償裝置 ,通過并聯(lián)電容器來補償無功功率,改善功率
    的頭像 發(fā)表于 10-23 15:04 ?1670次閱讀
    低壓交流系統(tǒng)無功<b class='flag-5'>補償</b>通常采用哪種<b class='flag-5'>補償</b>裝置

    低壓集中補償為啥不裝在低壓母線側(cè)上

    在低壓配電系統(tǒng)中,有時 低壓集中無功補償設(shè)備 并不是直接安裝在 低壓母線側(cè) ,主要出于以下技術(shù)和經(jīng)濟因素的考慮: 1、避免補償容量浪費和補償不精準(zhǔn) 集中補償 設(shè)備直接安裝在低壓母線側(cè)時
    的頭像 發(fā)表于 10-21 14:19 ?1804次閱讀
    低壓集中<b class='flag-5'>補償</b>為啥不裝在低壓母線側(cè)上