哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

一、關于業(yè)務補償機制

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

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

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

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

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

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

回滾(事務補償) ,逆向操作,回滾業(yè)務流程,意味著放棄,當前操作必然會失?。?/p>

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

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

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

二、關于回滾

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

1、顯示回滾

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

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

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

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

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

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

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

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

高可用的架構中一般不會要求強一致性,只要達到最終的一致性就可以了。可以考慮:事務表、消息隊列、補償機制、TCC 模式(占位 / 確認或取消)、Sagas模式(拆分事務 + 補償機制)來實現(xiàn)最終的一致性。

三、關于重試

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

1、重試的使用場景

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

2、重試策略

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

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

策略 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 - 全抖動: 在遞增的基礎上,增加隨機性(可以把其中的指數(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、重試時的注意事項

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

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

給每個請求定義一個唯一標識。

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

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

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

1、ACID 還是 BASE

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

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

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

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

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

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

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

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

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






審核編輯:劉清

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

    關注

    9

    文章

    2227

    瀏覽量

    67732
  • 交換機
    +關注

    關注

    23

    文章

    2930

    瀏覽量

    104867
  • 路由器
    +關注

    關注

    22

    文章

    3934

    瀏覽量

    120160
  • DNS
    DNS
    +關注

    關注

    0

    文章

    230

    瀏覽量

    21232

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    電流探頭的校準、補償與長期維護策略

    電流探頭需定期校準與維護,確保精度,校準周期根據(jù)使用頻率和環(huán)境調(diào)整,溫度補償與直流補償是關鍵保障措施。
    的頭像 發(fā)表于 04-21 17:23 ?402次閱讀

    OCAD應用:雙組聯(lián)動補償式連續(xù)變焦系統(tǒng)

    設計雙組聯(lián)動型連續(xù)變焦系統(tǒng)時只要在如圖3-146的界面上選擇“雙組聯(lián)動型變焦”即可。選擇后的界面如圖1所示。參數(shù)填寫方式也與前類似。其中“d2最小間隔”是指個變焦組和補償組之間間隔,“d3最小間隔”是指
    發(fā)表于 04-14 08:33

    PicoScope示波器探頭補償操作指南

    探頭,這些探頭都經(jīng)過挑選,專門與該型號配合使用。為了獲得最佳性能,建議使用所提供的探頭。 盡管示波器探頭在出廠時已完成高頻補償,無需額外調(diào)整,但為規(guī)避探頭移位、通道切換等因素導致的測量偏差,在
    發(fā)表于 03-31 12:04

    有諧波的無功補償:為何容易投切震蕩?

    在工業(yè)生產(chǎn)和電力系統(tǒng)運行中,“無功補償”是提升電能質(zhì)量、降低能耗的關鍵手段,其核心目標是通過投入電容等無功補償元件,抵消電網(wǎng)中的無功功率,提高功率因數(shù)。但很多人可能忽略一個關鍵前提:當電網(wǎng)中存在諧波
    的頭像 發(fā)表于 02-03 13:06 ?2000次閱讀
    有諧波的無功<b class='flag-5'>補償</b>:為何容易投切震蕩?

    溫度補償芯片衰減器P*V系列:助力高頻放大器溫度漂移補償

    溫度補償芯片衰減器P*V系列:助力高頻放大器溫度漂移補償 在電子設備的設計與開發(fā)中,高頻放大器的性能優(yōu)化一直是工程師們關注的重點,而溫度漂移補償則是其中一項關鍵挑戰(zhàn)。今天要給大家介紹的溫度補償
    的頭像 發(fā)表于 02-02 17:00 ?644次閱讀

    P*V系列溫度補償芯片衰減器:為高頻放大器精準補償助力

    P*V系列溫度補償芯片衰減器:為高頻放大器精準補償助力 在電子工程領域,高頻放大器的溫度漂移補償一直是一個關鍵問題。今天,我們就來詳細了解一款能夠簡化這一問題的產(chǎn)品——P*V系列溫度補償
    的頭像 發(fā)表于 01-22 11:35 ?360次閱讀

    溫度補償芯片衰減器 P*V 系列:簡化高頻放大器溫度漂移補償的利器

    溫度補償芯片衰減器 P*V 系列:簡化高頻放大器溫度漂移補償的利器 在電子工程師的高頻電路設計中,溫度漂移是個令人頭疼的問題。今天就給大家介紹一款能有效解決溫度漂移補償難題的產(chǎn)品——溫度補償
    的頭像 發(fā)表于 01-20 16:20 ?217次閱讀

    光伏電站無功補償方案選型指南:電容補償與SVG的深度解析

    切來實現(xiàn)無功調(diào)節(jié)。補償量一般為固定容值,當控制器檢測到系統(tǒng)需要補償無功時投入電容器組,過補時則切除已投入部分。此方案具有成本較低、維護簡便、技術門檻不高以及自身功耗較小等優(yōu)點;但需對電容器組進行不等容配置以提升
    的頭像 發(fā)表于 01-12 13:48 ?648次閱讀

    錨索測力計是如何實現(xiàn)溫度自動補償

    工程師關心的技術問題。下面就給大家進行詳細的解答:溫度補償的技術原理VWA型錨索測力計的溫度自動補償通過兩種機制實現(xiàn):首先是內(nèi)部振弦的特殊材質(zhì)選擇,其溫度系數(shù)經(jīng)過精密匹配,能夠自發(fā)抵消
    的頭像 發(fā)表于 01-08 15:20 ?290次閱讀
    錨索測力計是如何<b class='flag-5'>實現(xiàn)</b>溫度自動<b class='flag-5'>補償</b>

    無功補償電容的排序會影響功率因數(shù)考核?

    電容組優(yōu)化需避免連續(xù)排列,提升控制器判斷精度,實現(xiàn)高效無功補償。
    的頭像 發(fā)表于 12-13 14:01 ?394次閱讀
    無功<b class='flag-5'>補償</b>電容的排序會影響功率因數(shù)考核?

    晶振溫度系數(shù)補償技術的三種主要方式

    石英晶振決定著設備的節(jié)奏與精準度,但溫度變化會讓晶振的頻率悄悄偏移,從而影響通信、定位和時鐘同步的穩(wěn)定性。晶振溫度補償可通過補償溫度帶來的頻率漂移,讓系統(tǒng)在各種環(huán)境下都保持高精度運行。
    的頭像 發(fā)表于 11-17 11:08 ?1012次閱讀
    晶振溫度系數(shù)<b class='flag-5'>補償</b>技術的三種主要<b class='flag-5'>方式</b>

    程序線性補償和傳感器本身硬件補償有什么區(qū)別?

    程序線性補償和傳感器硬件補償,涉及到傳感器信號處理的兩種核心思路。我們來詳細拆解一下它們的區(qū)別。簡單來說:傳感器本身硬件補償:是在物理層面,通過額外的硬件元件或?qū)S眯酒?,直接在傳感器?nèi)部或電路板上
    的頭像 發(fā)表于 10-29 12:02 ?600次閱讀
    程序線性<b class='flag-5'>補償</b>和傳感器本身硬件<b class='flag-5'>補償</b>有什么區(qū)別?

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

    摘 要:電機低速運行時,死區(qū)效應可能導致電流波形畸變嚴重,使電機轉(zhuǎn)矩發(fā)生脈動。本文提出一種新型PWM控制死區(qū)補償方法,該控制算法通過坐標變換、定標的方式將合成電流空間矢量與定子旋轉(zhuǎn)磁場同步,根據(jù)電流
    發(fā)表于 07-29 16:21
    恩施市| 梓潼县| 友谊县| 宁陵县| 浙江省| 保定市| 姚安县| 高州市| 绥滨县| 西乌| 麻阳| 益阳市| 武平县| 嘉义县| 浦北县| 新巴尔虎左旗| 马山县| 鸡东县| 太白县| 淮滨县| 汤原县| 乐至县| 溧水县| 吴旗县| 凤阳县| 嵩明县| 南汇区| 琼结县| 阜城县| 衡南县| 吴堡县| 徐汇区| 新宁县| 高台县| 建平县| 灵宝市| 锦屏县| 温泉县| 平定县| 抚松县| 六安市|