異步化與緩存兩個技術(shù)都與系統(tǒng)的性能有很大的關(guān)系瑰排,當今分布式應(yīng)用架構(gòu)中弃揽,如果不能很好地掌握這兩項技術(shù),所設(shè)計出的應(yīng)用將很難有優(yōu)質(zhì)的性能表現(xiàn)功偿。
- 業(yè)務(wù)流程異步化
以異步化方式將交易創(chuàng)建過程中筑舅,對于有嚴格先后調(diào)用關(guān)系的服務(wù)保持順序執(zhí)行座慰,對于能夠同步執(zhí)行的所有服務(wù)均采用異步化方式處理。 - 數(shù)據(jù)庫事務(wù)異步化
通俗來說翠拣,就是將大事務(wù)拆分成小事務(wù)版仔,降低數(shù)據(jù)庫的資源被長時間事務(wù)鎖占用而造成的數(shù)據(jù)庫瓶頸,就能大大提升平臺的處理吞吐量和事務(wù)操作的響應(yīng)時間误墓。
一定要考慮到程序異常時對業(yè)務(wù)的回滾或重試機制蛮粮,保障整個還款過程結(jié)果的最終一致。 - 事務(wù)與柔性事務(wù)
1.CAP理論:一個分布式系統(tǒng)最多只能同時滿足一致性(Consistency)谜慌、可用性(Availability)和分區(qū)容錯性(Partition tolerance)這三項中的兩項然想。
- “一致性”指更新操作成功并返回客戶端完成后,所有節(jié)點在同一時間的數(shù)據(jù)完全一致畦娄。在分布式系統(tǒng)中又沾,數(shù)據(jù)通常不會只有一份,那么應(yīng)該對所有數(shù)據(jù)進行相同的操作并且這些操作應(yīng)該是同時成功或者同時失敗的熙卡。
- “可用性”指用戶在訪問數(shù)據(jù)時可以得到及時的響應(yīng)杖刷。但是可用性并不意味著數(shù)據(jù)的一致性,比如讀取到的數(shù)據(jù)是過期數(shù)據(jù)或臟數(shù)據(jù)驳癌,但對于用戶仍有返回數(shù)據(jù)的情況下滑燃,仍然可以被認為是可用的。
- “分區(qū)容錯性”指分布式系統(tǒng)在遇到某節(jié)點或網(wǎng)絡(luò)分區(qū)故障的時候颓鲜,仍然能夠?qū)ν馓峁M足一致性和可用性的服務(wù)表窘。一旦針對同一服務(wù)的存儲系統(tǒng)分布到了多個節(jié)點后典予,整個存儲系統(tǒng)就存在分區(qū)的可能性。
如何解決數(shù)據(jù)一致性的問題乐严?
一個簡易的方案就是建立類似操作系統(tǒng)中鎖的機制瘤袖,要求確保所有數(shù)據(jù)節(jié)點的數(shù)據(jù)均同步之后,才能進行數(shù)據(jù)的訪問操作昂验。
另一個做法就是商品的庫存數(shù)據(jù)只保存一份捂敌,不做復(fù)制,這樣就不會存在數(shù)據(jù)一致性的問題既琴。
2.BASE理論
核心思想是即使無法做到強一致性(Strong Consistency占婉,CAP的一致性就是強一致性),但應(yīng)用可以采用適合的方式達到最終一致性(Eventual Consitency)甫恩。 BASE是指基本可用(Basically Available)逆济、柔性狀態(tài)(Soft State)、最終一致性(EventualConsistency)磺箕。
- “基本可用”是指分布式系統(tǒng)在出現(xiàn)故障的時候奖慌,允許損失部分可用性,即保證核心可用滞磺。
- “柔性狀態(tài)”是指允許系統(tǒng)存在中間狀態(tài)升薯,而該中間狀態(tài)不會影響系統(tǒng)整體可用性。
- “最終一致性”是指系統(tǒng)中的所有數(shù)據(jù)副本經(jīng)過一定時間后击困,最終能夠達到一致的狀態(tài)涎劈。
3.傳統(tǒng)分布式事務(wù)
4.柔性事務(wù)如何解決分布式事務(wù)問題
(1)引入日志和補償機制:通常柔性事務(wù)能通過日志記錄找回事務(wù)的當前執(zhí)行狀態(tài),并根據(jù)狀態(tài)決定是重試異常步驟(正向補償)阅茶,還是回滾前序步驟(反向補償)蛛枚。
(2)可靠消息傳遞:消息至少投遞一次,但可能會投遞多次脸哀。由于消息可能會重復(fù)投遞蹦浦,這就要求消息處理程序必須實現(xiàn)冪等(冪等=同一操作反復(fù)執(zhí)行多次結(jié)果不變)。最簡單的冪等實現(xiàn)方式是根據(jù)業(yè)務(wù)流水號寫日志
(3)實現(xiàn)無鎖:放棄鎖是一個解決問題的思路