小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

銀行核心系統(tǒng)之微服務(wù)

 zjshzq 2020-06-02

分布式事務(wù)是這兩年大家討論比較多的話題,其實(shí)淘寶十多年前就開始使用分布式了。當(dāng)時(shí)的淘寶網(wǎng)系統(tǒng)代碼非常臃腫、業(yè)務(wù)解耦性高、開發(fā)效率低、功能上線周期長,業(yè)務(wù)方不滿、開發(fā)人員不夠就繼續(xù)招人,但新來的人看不懂系統(tǒng)原有邏輯,只好摸索著在“合適的地方”加一些“合適的代碼”,看看運(yùn)行起來像那么回事后,就發(fā)布上線。常常是你改了商品相關(guān)的某些代碼,發(fā)現(xiàn)交易出問題了,甚至你改了論壇上的某些代碼,旺旺出問題了。這讓開發(fā)人員苦不堪言,而業(yè)務(wù)方還認(rèn)為開發(fā)人員辦事不力。

并伴隨著淘寶網(wǎng)訪問量逐步上升,新興功能和業(yè)務(wù)數(shù)據(jù)的不斷增加,服務(wù)器的負(fù)載能力慢慢提高,不得不對(duì)系統(tǒng)進(jìn)行肢解和重構(gòu),從而開啟了分布式時(shí)代。將用戶信息、交易、商品、評(píng)價(jià)這些模塊拆分成具有不同業(yè)務(wù)特征的系統(tǒng),從底層開始擴(kuò)容,解決海量商品搜索、下單、支付、系統(tǒng)穩(wěn)定性等問題。有助于每個(gè)系統(tǒng)獨(dú)立部署,業(yè)務(wù)簡單,方便擴(kuò)容;有大量可重用的模塊便于開發(fā)新的業(yè)務(wù);能夠做到專人專事,讓技術(shù)人員更加專注于某一個(gè)領(lǐng)域......這些情況在銀行核心系統(tǒng)中也不例外。

2016年7月15日銀監(jiān)會(huì)在官網(wǎng)發(fā)布的《中國銀行業(yè)信息科技“十三五”發(fā)展規(guī)劃監(jiān)管指導(dǎo)意見》中也提到要“積極開展云計(jì)算架構(gòu)規(guī)劃,制定云計(jì)算標(biāo)準(zhǔn),聯(lián)合建立行業(yè)云平臺(tái),主動(dòng)實(shí)施架構(gòu)轉(zhuǎn)型,穩(wěn)步實(shí)施架構(gòu)遷移,到“十三五”末期,面向互聯(lián)網(wǎng)場景的主要信息系統(tǒng)盡可能遷移至云計(jì)算架構(gòu)平臺(tái)”。加上近年來以阿里為代表的互聯(lián)網(wǎng)企業(yè)提出的“去IOE”,希望打破國外技術(shù)壟斷的局面,以及移動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等新興技術(shù)的迅速大致和廣泛應(yīng)用、業(yè)務(wù)量的迅速提升,當(dāng)前IT技術(shù)架構(gòu)面臨極大壓力和風(fēng)險(xiǎn),在這種背景下,分布式架構(gòu)受到越來越多的關(guān)注,應(yīng)用范圍逐步擴(kuò)大。


1、此文適合人群

銀行從業(yè)人員,IT架構(gòu)師,系統(tǒng)分析師、開發(fā)工程師。

2、此文解決問題

對(duì)新人來說,學(xué)習(xí)完后對(duì)核心系統(tǒng)的分布式微服務(wù)有初步認(rèn)識(shí),對(duì)架構(gòu)體系有新的理解,有助于擴(kuò)展個(gè)人知識(shí)面;對(duì)職場人來說,銀行業(yè)信息系統(tǒng)采用分布式架構(gòu)是大勢所趨,當(dāng)浪潮來臨,是不是只能all in?在第三部分,或許你能看到小編不一樣的看法。

3、此文分為四大部分

一、分布式微服務(wù)概述

(1)微服務(wù)定義

(2)微服務(wù)的主要優(yōu)缺點(diǎn)

(3)微服務(wù)總體架構(gòu)體系

(4)分布式一致性

(5)數(shù)據(jù)一致性級(jí)別

二、分布式事務(wù)常用解決方案

(1)剛性事務(wù)

(2)柔性事務(wù)

三、沒被掀開的面紗(個(gè)人看法)

四、快來評(píng)論區(qū)討論(三個(gè)問題)


1
分布式微服務(wù)概述
(1)微服務(wù)定義

微服務(wù)是一種架構(gòu)風(fēng)格,將單體應(yīng)用劃分為一組小的服務(wù),服務(wù)之間相互協(xié)作,實(shí)現(xiàn)業(yè)務(wù)功能;每個(gè)服務(wù)運(yùn)行在獨(dú)立的進(jìn)程中,服務(wù)間采用輕量級(jí)的通信機(jī)制協(xié)作(RPC);每個(gè)服務(wù)圍繞業(yè)務(wù)能力進(jìn)行構(gòu)建,并且能夠通過自動(dòng)化機(jī)制獨(dú)立地部署(CI/CD);服務(wù)可以使用不同的語言進(jìn)行開發(fā),使用不同的存儲(chǔ)方式。


圖片來源:網(wǎng)絡(luò)

如上圖,我們需要開發(fā)一款簡單的訂單應(yīng)用,我們將產(chǎn)品、訂單、客戶等所有應(yīng)用模塊全部打包在一個(gè)系統(tǒng)中,它提供了應(yīng)用所有功能。盡管是模塊化的架構(gòu),但應(yīng)用程序被作為一個(gè)整體進(jìn)行打包和部署,很可能出現(xiàn)一個(gè)功能故障影響整個(gè)應(yīng)用、應(yīng)用模塊越大則單個(gè)應(yīng)用啟用時(shí)間越長、代碼功能耦合高不易維護(hù)、或代碼資源修改沖突的問題。那么就引入了微服務(wù)....

微服務(wù)是基于業(yè)務(wù)進(jìn)行拆分的,至于拆分多小沒有一個(gè)固定的標(biāo)準(zhǔn),這點(diǎn)也一直是個(gè)爭論的話題。因?yàn)榉?wù)進(jìn)行拆分之后,粒度比較細(xì),那么程序構(gòu)建和部署方面就會(huì)變得簡單。

常見做法是由技術(shù)人員對(duì)應(yīng)用模塊的功能挨個(gè)進(jìn)行拆分,包括交易檢查、功能檢查、邏輯判斷等挨個(gè)列出清單轉(zhuǎn)至業(yè)務(wù)部門,在由業(yè)務(wù)部門拼接進(jìn)行開發(fā)。就像核心系統(tǒng)中的“樂高”積木,借助簡單的頁面/接口,通過選擇預(yù)先設(shè)計(jì)的業(yè)務(wù)元素(如密碼檢查、節(jié)假日檢查、黑名單客戶檢查)并結(jié)合業(yè)務(wù)需求,靈活、直觀、快速的搭配,構(gòu)建創(chuàng)新性的金融服務(wù)。


所以,與其說微服務(wù)是一種系統(tǒng)設(shè)計(jì)思想,不如說是對(duì)原來工程實(shí)踐的一種總結(jié)和組合。

小白科普

RPC(Remote Procedure Call):指遠(yuǎn)程過程調(diào)用,是一種進(jìn)程間通信方式,是一種技術(shù)思想,而不是規(guī)范,它允許程序調(diào)用另一個(gè)地址空間(通常是共享網(wǎng)絡(luò)的另一臺(tái)機(jī)器上)的過程或函數(shù)。對(duì)程序員來說,無論是調(diào)用本地的還是遠(yuǎn)程的函數(shù),本質(zhì)上編寫的調(diào)用代碼基本相同。

本地過程調(diào)用&遠(yuǎn)程過程調(diào)用:本地過程調(diào)用就好比你現(xiàn)在在家里,想要掃地,那你直接打開掃地機(jī)器人開關(guān)就可以了;遠(yuǎn)程過程調(diào)用就好比你現(xiàn)在不在家,家里有客人要來,打個(gè)電話叫家人趕緊打掃下衛(wèi)生。

容器:簡單的說,可以理解為每個(gè)運(yùn)行時(shí)的服務(wù),便于系統(tǒng)對(duì)若干服務(wù)間的管理。

(2)微服務(wù)的主要優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1.解耦了業(yè)務(wù)復(fù)雜度,服務(wù)能夠聚焦一個(gè)指定的業(yè)務(wù)功能或業(yè)務(wù)需求;

2.強(qiáng)模塊化邊界,對(duì)其他服務(wù)依賴性弱;
3.可獨(dú)立部署,獨(dú)立升級(jí),團(tuán)隊(duì)新成員不用很深入別人的代碼也能夠很快投入生產(chǎn);
4.技術(shù)多樣性,能使用不同的語言開發(fā),如Java、Python、PHP、C#等。
缺點(diǎn):

1.分布式系統(tǒng)復(fù)雜性,要考慮網(wǎng)絡(luò)延遲、異步、序列化、負(fù)載等,難以管理;

2.分布式一致性,銀行系統(tǒng)相比互聯(lián)網(wǎng)公司,對(duì)賬戶資金要求更高;

3.運(yùn)維復(fù)雜性,要保證系統(tǒng)成千上萬的服務(wù)有效運(yùn)轉(zhuǎn),成本開銷大;

4.測試復(fù)雜性,測試需要啟動(dòng)和它有關(guān)的所有服務(wù)。

(3)微服務(wù)總體架構(gòu)體系

圖片來源:網(wǎng)絡(luò)

總體架構(gòu)在邏輯上劃分為接入層、網(wǎng)關(guān)層、業(yè)務(wù)服務(wù)層、支撐服務(wù)層、平臺(tái)服務(wù)層和基礎(chǔ)設(shè)施層。

基礎(chǔ)設(shè)施層:是系統(tǒng)運(yùn)行的必要條件,原子交易,經(jīng)過聚合服務(wù)整合后有一整套交易能力。

平臺(tái)服務(wù)層:主要用來保證系統(tǒng)的平穩(wěn)運(yùn)行,根據(jù)實(shí)際業(yè)務(wù)情況合理分配資源及發(fā)布系統(tǒng)。

支撐服務(wù)層:實(shí)根據(jù)業(yè)務(wù)需要給系統(tǒng)提供高質(zhì)量的服務(wù),與開放平臺(tái)的流程管理系統(tǒng)類似。

業(yè)務(wù)服務(wù)層:可以分為聚合服務(wù)和基礎(chǔ)服務(wù)。聚合服務(wù)是不同的基礎(chǔ)服務(wù)聚合在一起,完成復(fù)雜的業(yè)務(wù)處理;基礎(chǔ)服務(wù)是單一的業(yè)務(wù)處理。

網(wǎng)關(guān)層:網(wǎng)關(guān)層是接受外部流量的屏障,用于保證系統(tǒng)的安全和穩(wěn)定,如黑名單過濾、安全認(rèn)證等。

接入層:是通過負(fù)載均衡接入請(qǐng)求到內(nèi)部平臺(tái)。

(4)分布式一致性

數(shù)據(jù)一致性簡單的說,就是對(duì)一個(gè)副本數(shù)據(jù)進(jìn)行更新的時(shí)候,必須確保也能夠更新其他的副本,否則不同副本之間的數(shù)據(jù)將不一致。舉個(gè)例子,比如用戶A向用戶B轉(zhuǎn)100元,那么用戶A的賬戶減100元,用戶B的賬戶就一定要增加100元,金額多了或是少了都不對(duì),就出現(xiàn)了數(shù)據(jù)不一致的情況。

微服務(wù)化之前:業(yè)務(wù)采用本地事務(wù),多個(gè)本地SQL調(diào)用可以用一個(gè)大的事務(wù)塊封裝起來,如果某一個(gè)數(shù)據(jù)庫操作發(fā)生異常,就可以將之前的SQL操作進(jìn)行回滾,只有所有SQL操作全部成功,才最終提交,這就保證了事務(wù)強(qiáng)一致性。

微服務(wù)化之后:多個(gè)數(shù)據(jù)庫操作可能被拆分到多個(gè)獨(dú)立的數(shù)據(jù)庫中,此時(shí)原來的本地SQL調(diào)用演變成了 遠(yuǎn)程服務(wù)調(diào)用,事務(wù)一致性無法得到保證。

(5)數(shù)據(jù)一致性級(jí)別

數(shù)據(jù)一致性級(jí)別一般分為三類,強(qiáng)一致性、弱一致性和最終一致性。

強(qiáng)一致性:也稱為剛性事務(wù),本身就支持ACID,所以不會(huì)存在數(shù)據(jù)不一致的問題。也是最符合用戶直覺的,它要求系統(tǒng)寫入什么,讀出來的也會(huì)是什么,用戶體驗(yàn)好,但實(shí)現(xiàn)起來往往對(duì)系統(tǒng)的性能影響大。比如網(wǎng)銀系統(tǒng)涉及的金融交易,所以交易數(shù)據(jù)都必須符合核心系統(tǒng)的對(duì)賬。

弱一致性:也稱為柔性事務(wù),與強(qiáng)一致性相反,這種一致性級(jí)別約束了系統(tǒng)在寫入成功后,不承諾立即可以讀到寫入的值,也不承諾多久之后數(shù)據(jù)能夠達(dá)到一致,但會(huì)盡可能地保證到某個(gè)時(shí)間級(jí)別(比如秒級(jí)別)后,數(shù)據(jù)能夠達(dá)到一致狀態(tài)。

最終一致性:是弱一致性的一個(gè)特例,系統(tǒng)會(huì)保證在一定時(shí)間內(nèi),能夠達(dá)到一個(gè)數(shù)據(jù)一致性。它是弱一致性中非常推崇的一種一致性模型,也是業(yè)界在大型分布式系統(tǒng)的數(shù)據(jù)一致性上比較推崇的模型。在技術(shù)上實(shí)現(xiàn)難度不高,一般借助異步消息機(jī)制實(shí)現(xiàn),基于網(wǎng)絡(luò)正常且系統(tǒng)交易平穩(wěn)前提下,可以接近同步效果,客戶體驗(yàn)也好。

銀行核心系統(tǒng)與互聯(lián)網(wǎng)有很大不同,以保證事務(wù)一致性為先,而分布式一致性正是微服務(wù)架構(gòu)下一個(gè)比較大的弊端。因?yàn)橹苯由婕暗娇蛻糍~戶金額的變動(dòng),一是客戶不能容忍,二是銀行每秒都有成百上千筆業(yè)務(wù),所以一旦出現(xiàn)數(shù)據(jù)一致性問題,后果不堪設(shè)想。

2
分布式事務(wù)常用解決方案
關(guān)于分布式事務(wù)中的一些基本概念,我們先回顧下。

事務(wù):由一組操作構(gòu)成的可靠、獨(dú)立的工作單元。

事務(wù)的特性ACID

Atomicity(原子性):事務(wù)作為整體來執(zhí)行,要么全部執(zhí)行,要么全部執(zhí)行。

Consistency(一致性):事務(wù)應(yīng)確保數(shù)據(jù)從一個(gè)一致的狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€(gè)一致的狀態(tài)。

Isolation(隔離線):多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),一個(gè)事務(wù)的執(zhí)行不應(yīng)影響其他事務(wù)的執(zhí)行。

Durability(持久性):已提交的事務(wù)修改數(shù)據(jù)會(huì)被持久保存。

本地事務(wù):事務(wù)由資源管理器(如RDMS)本地管理。

優(yōu)點(diǎn):
1.支持ACID屬性;
2.可靠且高效;
3.狀態(tài)可以只在資源管理器中維護(hù);
4.應(yīng)用編程模型簡單。

缺點(diǎn):
1.不具備分布式處理能力;
2.隔離的最小單位由資源管理器決定,如單筆記錄。

全局事務(wù)(DTP模型)-標(biāo)志分布式事務(wù)

大家應(yīng)該都聽過兩階段提交,其實(shí)兩階段提交是X/Open這個(gè)組織發(fā)布的DTP模型來定義的一個(gè)協(xié)議,主要定義規(guī)范和API接口,由廠商進(jìn)行具體的實(shí)現(xiàn)。不過一般很少采用兩階段提交實(shí)現(xiàn)分布式事務(wù)實(shí)現(xiàn)。



兩階段提交(Two Phase Commit)

圖片來源:網(wǎng)絡(luò)
準(zhǔn)備操作與ACID:
A:準(zhǔn)備后,仍可提交與回滾,主要是確認(rèn)能否執(zhí)行提交操作并分配資源、加鎖...
C:準(zhǔn)備時(shí),操作者發(fā)送響應(yīng),一致性檢查必須ok
I:準(zhǔn)備后,事務(wù)結(jié)果仍然只在事務(wù)內(nèi)可見
D:準(zhǔn)備后,事務(wù)結(jié)果已經(jīng)持久,即準(zhǔn)備好提交

缺點(diǎn):

1.協(xié)議成本(長時(shí)間資源占用),比如有多個(gè)資源管理器,必須等到所有資源管理器準(zhǔn)備完成后才統(tǒng)一發(fā)起提交;
2.準(zhǔn)備階段的持久成本
3.全局事務(wù)狀態(tài)的持久成本
4.潛在故障點(diǎn)多帶來的脆弱性
5.準(zhǔn)備后,提交前的故障引發(fā)一些列隔離與恢復(fù)難題

JavaEE平臺(tái)中的分布式事務(wù)實(shí)現(xiàn)


與兩階段提交類似,是針對(duì)上層應(yīng)用實(shí)現(xiàn)分布式事務(wù)的協(xié)議。


標(biāo)準(zhǔn)分布式事務(wù)解決方案的利弊

優(yōu)點(diǎn)是嚴(yán)格的ACID;

缺點(diǎn)是效率非常低(微服務(wù)架構(gòu)下已不太使用)。

(1)剛性事務(wù)

CAP定理

一致性(C)

指數(shù)據(jù)在多個(gè)副本之間是否能夠保持一致的特征。當(dāng)執(zhí)行數(shù)據(jù)更新操作后,仍然可以保證系統(tǒng)數(shù)據(jù)處于一致的狀態(tài)。

可用性(A)

系統(tǒng)提供的服務(wù)必須一直處理可用的狀態(tài)。對(duì)于用戶的每一個(gè)操作請(qǐng)求總是能夠在“有限時(shí)間內(nèi)”返回結(jié)果。這個(gè)有限時(shí)間是系統(tǒng)涉及之初就指定好的系統(tǒng)運(yùn)行指標(biāo)。返回的結(jié)果指的是系統(tǒng)返回用戶的一個(gè)正常相應(yīng)結(jié)果,而不是“out ot memory error”之類的系統(tǒng)錯(cuò)誤信息。

分區(qū)容錯(cuò)性(P)

分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)分區(qū)故障的時(shí)候,仍然需要能夠保證對(duì)外提供滿足一致性和可用性服務(wù),除非是整個(gè)網(wǎng)絡(luò)環(huán)境都發(fā)生了故障。組成分布式系統(tǒng)的每個(gè)節(jié)點(diǎn)的加入與退出都可以看成是一個(gè)特殊的網(wǎng)絡(luò)分區(qū)。簡單的說就是:系統(tǒng)部分節(jié)點(diǎn)出現(xiàn)故障后,連接正常節(jié)點(diǎn)還可以使用系統(tǒng)提供的服務(wù)。

CP:放棄可用性,追求一致性和分區(qū)容錯(cuò)性,基本不會(huì)選擇,網(wǎng)絡(luò)問題會(huì)直接讓整個(gè)系統(tǒng)不可用。

AP:放棄一致性(這里說的一致性是強(qiáng)一致性),追求分區(qū)容錯(cuò)性和可用性,這是很多分布式系統(tǒng)設(shè)計(jì)時(shí)的選擇,例如很多NoSQL系統(tǒng)就是如此。

CA:放棄分區(qū)容錯(cuò)性,加強(qiáng)一致性和可用性,其實(shí)就是傳統(tǒng)單機(jī)數(shù)據(jù)庫的選擇。

結(jié)論:分布式系統(tǒng),最重要的是滿足業(yè)務(wù)需求,而不是追求抽象、決定的系統(tǒng)特性。由于網(wǎng)絡(luò)分區(qū)是分布式應(yīng)用的基本要素,由此開發(fā)者需要在C和A上做出平衡。

BASE理論

BASE是基于CAP定義演化而來,是對(duì)CAP中一致性和可用性權(quán)衡的結(jié)果。

BASE就是為了解決關(guān)系型數(shù)據(jù)庫強(qiáng)一致性引起的問題而引發(fā)的可用性降低,而提出的解決方案。

BA:Basic Availability 基本業(yè)務(wù)可用性(支持分區(qū)失敗)

S:Soft state 柔性狀態(tài)(狀態(tài)允許有短時(shí)間不同步,異步)

E:Eventual consistency 最終一致性(最終數(shù)據(jù)是一致的,但不是實(shí)時(shí)一致)

原子性(A)與持久性(D)必須根本保障

為了可用性、性能的需要,只有降低一致性(C)與隔離性(I)的要求。

(2)柔性事務(wù)

圖片來源:網(wǎng)絡(luò)

柔性事物可以分為四大類,兩階段型、補(bǔ)償性、異步確保型和最大努力通知型。理解這四種類型,有助于在實(shí)際業(yè)務(wù)場景中我們進(jìn)行分析,哪些場景和業(yè)務(wù)更適合用哪種分布式事務(wù)解決方案。業(yè)務(wù)活動(dòng)舉例如下:

圖片來源:網(wǎng)絡(luò)

由上圖我們可以看到,兩階段型是分布式環(huán)境下事務(wù)處理的典型模型,比如處理紅包、更新客戶賬、收費(fèi)處理等;異步確保型主要是異步處理事務(wù),比如核心系統(tǒng)中的熱點(diǎn)賬戶異步記賬、核算分離、虛實(shí)賬戶余額更新等,可以理解為與交易無直接關(guān)系,但必須要做的動(dòng)作;最大努力通知型主要是通知的處理,比如有銀行賬戶動(dòng)賬短信通知、理財(cái)產(chǎn)品提前到期通知、商戶通知、對(duì)賬文件等。

柔性事務(wù)中的服務(wù)模式


TCC操作

TCC是一種業(yè)務(wù)模型,位于業(yè)務(wù)服務(wù)層而非資源層,沒有單獨(dú)的準(zhǔn)備階段,Try操作更靈活且業(yè)務(wù)是可控的,但是開發(fā)成本比較高。TCC操作可以分為3個(gè)部分,如下:


圖片來源:網(wǎng)絡(luò)

1.Try:嘗試執(zhí)行業(yè)務(wù)

完成所有業(yè)務(wù)檢查(一致性)

預(yù)留必須業(yè)務(wù)資源(準(zhǔn)隔離性)

2.Confirm:確認(rèn)執(zhí)行任務(wù)

真正執(zhí)行業(yè)務(wù)

不作任何業(yè)務(wù)檢查

只使用Try階段預(yù)留的業(yè)務(wù)

Confirm操作要滿足冪等性

3.Cancel:取消執(zhí)行業(yè)務(wù)

釋放Try階段預(yù)留的業(yè)務(wù)資源

Cancel操作要滿足冪等性

柔性事務(wù)解決方案:TCC(兩階段型、補(bǔ)償型)

圖片來源:網(wǎng)絡(luò)

實(shí)現(xiàn)

一個(gè)完整的業(yè)務(wù)活動(dòng)由一個(gè)主業(yè)務(wù)服務(wù)與若干從業(yè)務(wù)服務(wù)組成

主業(yè)務(wù)服務(wù)負(fù)責(zé)發(fā)起并完成整個(gè)業(yè)務(wù)活動(dòng)

從業(yè)務(wù)服務(wù)提供TCC型業(yè)務(wù)操作

業(yè)務(wù)活動(dòng)管理器控制業(yè)務(wù)活動(dòng)的一致性,它登記業(yè)務(wù)活動(dòng)中的操作,并在業(yè)務(wù)活動(dòng)提交時(shí)確認(rèn)所有的TCC型操作的confirm操作,在業(yè)務(wù)活動(dòng)取消時(shí)調(diào)用所有TCC型操作的cancel操作

成本

實(shí)現(xiàn)TCC操作的成果

業(yè)務(wù)活動(dòng)結(jié)束時(shí)confirm或cancel操作的執(zhí)行成本

業(yè)務(wù)活動(dòng)日志成本

使用范圍

強(qiáng)隔離性、嚴(yán)格一致性要求的業(yè)務(wù)活動(dòng)

適用于執(zhí)行時(shí)間較短的業(yè)務(wù)(如處理賬戶、收費(fèi)等業(yè)務(wù))

TCC的案例比如銀行轉(zhuǎn)賬會(huì)用到;可靠消息最終一致性(異步確定型),案例可以參考支付寶、eBay;最大努力通知(定期校對(duì)),案例可以銀行通知、商戶通知等,目前也還在學(xué)習(xí)之中,就先說到這里,有機(jī)會(huì)的話在拿案例做演示。

總的來說,分布式事務(wù)常用解決方案分剛性事務(wù)和柔性事務(wù)。剛性事務(wù)一般不適用于微服務(wù)場景的,基于CAP定理和BASE理論衍生出柔性事務(wù),柔性事物又分為TCC(典型場景有轉(zhuǎn)賬)、可靠消息最終一致(可以理解為基于提高性能的前提下,異步處理的交易對(duì)本次交易沒有決定性作用的轉(zhuǎn)異步處理,但必須可靠。案例可以參考支付寶、eBay)、最大努力通知(典型案例有銀行短信通知)。實(shí)際場景方案方面業(yè)余時(shí)間在了解中,有機(jī)會(huì)的話在拿案例做演示,就先說到這里。


3
沒被掀開的面紗(個(gè)人看法)
銀行核心系統(tǒng)分布式微服務(wù)建設(shè)之于大眾,仍然像性之于少年,很多人都在談?wù)?,但大部分不是真的懂。總之,不管是一個(gè)怎樣的浪潮,要all in,還是要先看明白些好。若有不妥之處,還請(qǐng)指正。

對(duì)于傳統(tǒng)小銀行、民營銀行的現(xiàn)狀來說,沒有必要使用分布式微服務(wù)。首先,科技創(chuàng)新是一項(xiàng)巨大的成本投入,對(duì)人力、財(cái)力、機(jī)器采購、運(yùn)維方面要求都高,比如對(duì)核心各應(yīng)用模塊的系統(tǒng)進(jìn)行拆分,可以拆出上千個(gè)交易,雖然交易粒度變小了,但是從交易整體的跨網(wǎng)絡(luò)傳輸上來看,交易效率不一定會(huì)提示。

其次,小行科技部門相對(duì)投入少,話語權(quán)不多,加上核心系統(tǒng)不像互聯(lián)網(wǎng)公司能完全劃分業(yè)務(wù)和技術(shù),反而考慮更多的是業(yè)務(wù)和使用場景以及金融業(yè)務(wù)的游戲規(guī)則,所以采用分布式微服務(wù)風(fēng)險(xiǎn)較大。但如果行里研發(fā)能力強(qiáng),可以根據(jù)實(shí)力情況進(jìn)行微服務(wù)處理,對(duì)非核心系統(tǒng)進(jìn)行一些重構(gòu)和優(yōu)化。

最后,分布式架構(gòu)因?yàn)閼?yīng)該全行系統(tǒng)統(tǒng)一考慮,而不針對(duì)其中一個(gè)系統(tǒng),因?yàn)楹诵呐c外圍系統(tǒng)之間、或是核心系統(tǒng)各個(gè)業(yè)務(wù)間,聯(lián)系都非常緊密。如果核心系統(tǒng)實(shí)現(xiàn)分布式微服務(wù),但外圍系統(tǒng)設(shè)計(jì)還是傳統(tǒng)思路,那么就需要一個(gè)公共平臺(tái)將服務(wù)給串接起來。想到了ESB,但從設(shè)計(jì)維護(hù)角度來看,僅是配置項(xiàng)就會(huì)讓人手忙腳亂,清理各系統(tǒng)之間的調(diào)用關(guān)系更復(fù)雜。

總的來說,個(gè)人覺得銀行核心系統(tǒng)進(jìn)行分布式改造沒有太大必要,當(dāng)數(shù)據(jù)或交易量到達(dá)一定程度才需要考慮系統(tǒng)架構(gòu),量小的話可以增加內(nèi)存、CPU、機(jī)器等方式來解決問題。不過話說回來,金融互聯(lián)網(wǎng)是趨勢,從長遠(yuǎn)的角度來看,傳統(tǒng)銀行的研發(fā)模式一定會(huì)拖后腿,日子會(huì)不太好過,這是危機(jī)也是機(jī)會(huì)。所以,我們主張面對(duì)互聯(lián)網(wǎng)的挑戰(zhàn),找準(zhǔn)新形勢下新一代核心系統(tǒng)架構(gòu)的重點(diǎn),結(jié)合實(shí)際用處進(jìn)行理性的選擇、謹(jǐn)慎地規(guī)劃。

4
快來評(píng)論區(qū)討論(三個(gè)問題)

莎士比亞說過,一千個(gè)讀者,就有一千個(gè)哈姆雷特。不同的人閱讀文章或是對(duì)同一個(gè)問題,往往有著不同的感悟與理解,所以借此機(jī)會(huì)拋出同行的三個(gè)問題,和大家討論一下分布式架構(gòu)、微服務(wù)化。

1)銀行系統(tǒng)的客戶終端實(shí)際上是往操作簡單,服務(wù)全面方向發(fā)展,比如綜合開戶,一鍵提交、生成客戶資料、開銀行賬戶、存錢全一次性完成,而且必須保證事務(wù)一致性,那么系統(tǒng)設(shè)計(jì)如果微服務(wù)化后,銀行整架構(gòu)中由誰負(fù)責(zé)串接是最合適的?

2)分布式事務(wù)是怎么樣保證預(yù)提交后的正式提交一定全部成功?如果預(yù)提交都通過后,正式提交出錯(cuò)了應(yīng)該如何處理?

3)我們都知道銀行系統(tǒng)即使對(duì)單一數(shù)據(jù)庫資源的訪問都很難完全避免死鎖的情況發(fā)生,在分布式事務(wù)的隔離性描述里提到是在預(yù)提交時(shí)加鎖,一直到事務(wù)執(zhí)行結(jié)束才釋放鎖,我覺的在同樣的一個(gè)復(fù)雜業(yè)務(wù),分布式事務(wù)的加鎖時(shí)間一定比單一事務(wù)的加鎖時(shí)間長,發(fā)生鎖等待的概率也更大,在這個(gè)方面分布式架構(gòu)是否有相應(yīng)技術(shù)解決這個(gè)問題?

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多