分布式事務
cap定理-Availability
CAP定理-Partition tolerance
BASE理論
BASE理論是對CAP的一種解決思路,包含三個思想:
BasicallyAvailable(基本可用):分布式系統在出現故障時,允許損失部分可用性,即保證核心可用。
SoftState(軟狀態):在一定時間內,允許出現中間狀態,比如臨時的不一致狀態。
EventuallyConsistent(最終一致性):雖然無法保證強一致性,但是在軟狀態結束后,最終達到數據一致。
而分布式事務最大的問題是各個子事務的一致性問題,因此可以借鑒CAP定理和BASE理論:
·CP模式:各個子事務執行后互相等待,同時提交,同時回滾,達成強一致。但事務等待過程中,處于弱可用狀態。
·AP模式:各子事務分別執行和提交,允許出現結果不一致,然后采用彌補措施恢復數據即可,實現最終一致。
AT模式的臟寫問題
AT模式原理
AT模式的寫隔離
TCC模式
TCC模式與AT模式非常相似,每階段都是獨立事務,不同的是TCC通過人工編碼來實現數據恢復。需要實現三個方法:
·Ty:資源的檢測和預留;
·Confirm:完成資源操作業務;要求Ty成功Confirm一定要能成功。
·Cancel:預留資源釋放,可以理解為try的反向操作。
TCC模式的每個階段是做什么的?
·Ty:資源檢查和預留
·Confirm:業務執行和提交
Cancel:預留資源的釋放
TCC的優點是什么?
一階段完成直接提交事務,釋放數據庫資源,性能好
,相比AT模型,無需生成快照,無需使用全局鎖,性能最強
不依賴數據庫事務,而是依賴補償操作,可以用于非事務型數據庫
TCC的缺點是什么?
有代碼侵入,需要人為編寫try、Confirm和Cance接口,太麻煩
軟狀態,事務是最終一致
需要考慮Confirm和Cancel的失敗情況,做好冪等處理
最大努力通知
注冊中心
環境隔離

分級模型
Eureka與Nacos
遠程調用
負載均衡原理
切換負載均衡算法
服務保護
Sentinel的線程隔離與Hystix的線程隔離有什么差別?
問題說明:考察對線程隔離方案的掌握情況
難易程度:一般
參考話術:
答:線程隔離可以采用線程池隔離或者信號量隔離。
HySx默認是基于線程池實現的線程隔離,每一個被隔離的業務都要創建一個獨立的線程池,線程過多會帶來額外的
CPU開銷,性能一般,但是隔離性更強。
Sentinell則是基于信號量隔離的原理,這種方式不用創建線程池,性能較好,但是隔離性一般。
滑動窗口計數器算法
固定窗口計數器算法
當在第4到第5秒的時候來了3個請求,在第5到第6秒的時候來了3個請求,都可以被放行,
但是有一種情況是這樣子的,4-5的這3個請求發生在4500毫秒到5000毫秒之間,5000-6000毫秒的這3個請求發生在5000-5500毫秒之間,相當于1秒鐘來了6個請求,超出了閾值!!!
相當于早上吃3個包子,中午吃3個包子,晚上吃3個包子,變成了一下吃9個,吃不下…
滑動窗口計數器算法
漏桶算法
令牌通算法
Sentinel的限流與Gateway的限流有什么差別?
問題說明:考察對限流算法的掌握情況
難易程度:難
參考話術:
限流算法常見的有三種實現:滑動時間窗口、令牌桶算法、漏桶算法。Gateway!則采用了基于Redis3實現的令牌桶算法
而Sentinel內部卻比較復雜
默認限流模式是基于滑動時間窗口算法,另外Sentinel中斷路器的計數也是基于滑動時間窗口算法
限流后可以快速失敗和排隊等待,其中排隊等待基于漏桶算法
而熱點參數限流則是基于令牌桶算法