<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          銀行IT系統(tǒng)必經(jīng)的松耦合,看完就懂了 | IDCF

          共 6321字,需瀏覽 13分鐘

           ·

          2020-08-25 16:12


          內(nèi)容來源:小代嘚吧嘚

          作者:代堂鳴

          其實說起“松耦合”,想必絕大多數(shù) IT 從業(yè)者都對這個詞耳熟能詳,甚至都會覺得完全不用再對它進行任何闡述。但不得不說,在銀行IT系統(tǒng)建設(shè)過程中,不同干系人對“松耦合”具有不同的看法和認識。

          從設(shè)計的角度看,如果系統(tǒng)內(nèi)一個模塊設(shè)計的變動不會引起另一個模塊變動,模塊間能夠靈活組合,那么我們會說他設(shè)計的模塊是松耦合的;從開發(fā)的角度看,如果修改一個組件的時候不影響其他組件,不會導(dǎo)致一連串的程序需要修改,那么我們就說他的代碼是松耦合的;從測試的角度看,符合松耦合的程序會更易于對局部進行黑盒測試。

          所以針對項目中的不同角色,多維度梳理銀行IT系統(tǒng)中松耦合的內(nèi)容,并進行深入探討很有必要。在寫作的過程中,參考了很多資料并結(jié)合自己的理解,做了一些梳理和重新表達。歸納的也并不完善,歡迎大家補充。


          一、銀行IT系統(tǒng)耦合的概念



          1.1 耦合的定義
          “耦合”一詞被廣泛運用在通信、軟件、機械等許多領(lǐng)域。其實就是用以描述偶數(shù)以上多體系的相互作用/彼此影響/互相聯(lián)合的現(xiàn)象。
          在軟件工程中,耦合指模塊之間相互依賴對方的一個度量。模塊間聯(lián)系越緊密,其耦合性就越強,模塊的獨立性則越差,維護成本也就越高,為了便于維護,自然是希望耦合越低越好。
          從事務(wù)間的關(guān)系上來看,可以分為組織耦合、運行耦合(流程耦合與數(shù)據(jù)耦合)、空間(地域)耦合、時間耦合;從耦合的機制上來看,還可以分為內(nèi)容耦合、公共耦合、外部耦合、控制耦合、印記耦合、數(shù)據(jù)耦合和非直接耦合。
          例如,控制耦合指的是如果一個模塊通過傳送開關(guān)、標志等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。?
          總之,只要事物之間相互影響、相互作用,都可以理解為是一種耦合。
          1.2 相關(guān)的名稱
          (1)耦合方
          耦合方是指耦合在一起的各方。
          在系統(tǒng)運行中,基于某業(yè)務(wù)場景的兩個耦合方,有一方會向另一方發(fā)起一個運行耦合的要求,而另一方會進行相應(yīng)的響應(yīng)。我們把運行耦合的發(fā)起方稱之為:請求方;把響應(yīng)方稱之為:服務(wù)方。
          比如銀行核心系統(tǒng)外調(diào)密管平臺,用于MAC生成、MAC地址驗證、驗密、設(shè)密等操作。那么,我們將銀行核心系統(tǒng)稱為請求方;把密管平臺稱為服務(wù)方。
          又如,手機銀行調(diào)核心系統(tǒng)查詢賬戶信息,那核心系統(tǒng)就是服務(wù)方。
          (2)耦合點
          耦合點是指請求方與服務(wù)方之間的連接點,還可以細分為單點接入和多點接入。
          例如,支付系統(tǒng)大/小額直聯(lián)接口系統(tǒng)支持總行單點接入模式,即所有分行的交易通過總行一個單點接入人行支付系統(tǒng)。
          還支持總分行多點接入方案,即系統(tǒng)能夠支持總分行以不同的 MBFE 接入支付系統(tǒng)或同一城市多家分行接入支付系統(tǒng)的模式。
          (3)松耦合
          拿傳統(tǒng)胖核心來說,隨著銀行業(yè)務(wù)的高速發(fā)展,核心系統(tǒng)所承載的交易范圍越來越多,包含了業(yè)務(wù)模塊和管理功能,如信貸管理、風險管理、財務(wù)管理等業(yè)務(wù)中部分流程管理的功能。
          這些原因?qū)е铝讼到y(tǒng)升級困難,牽一發(fā)而動全身,改造風險較大,難以快速響應(yīng)業(yè)務(wù)發(fā)展和創(chuàng)新。所以,現(xiàn)在建設(shè)系統(tǒng)都講究松耦合。
          在《銀行信息系統(tǒng)架構(gòu)》一書中,關(guān)于松耦合是這么說的:“松耦合原則是指要建立松耦合的體系架構(gòu),減少某一些系統(tǒng)的變動和故障對全局的影響,提高架構(gòu)的靈活性和擴展性,實現(xiàn)與敏捷業(yè)務(wù)相適應(yīng)的IT架構(gòu)。”
          以臺式機為例,它由顯示器、主機箱、鍵盤鼠標等硬件組成,各部分都是松耦合的。如果某一部分壞了,可以很容易就拆下來換新的或者維修,即松耦合的可維護性;如果要換音響,買個新的連接上就好了,即松耦合的可擴展性。


          二、銀行IT系統(tǒng)耦合度怎么衡量



          對于緊耦合的系統(tǒng),其主要缺點在于程序代碼間關(guān)聯(lián)度過高,不利于模塊化處理,出現(xiàn)更新一個模塊的結(jié)果,引發(fā)其它模塊的結(jié)果也發(fā)生變化的窘境。
          那耦合度該怎么衡量呢?可以通過耦合點&耦合方的多少、大小等方面來思考。
          2.1 耦合點越少越好
          耦合點越少越好,主要是為了避免一個類承擔的職責過多,即單一原則。如果一個類有多于一個的動機被改變,那么這個類就具有多于一個的職責,則一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。
          這種耦合會導(dǎo)致脆弱的設(shè)計,當發(fā)生變化時,設(shè)計會遭受到意想不到的破壞。所以,對于一個類應(yīng)該盡量只專注于做一件事,而且引起它改變的因素只應(yīng)該有一個。
          因此,耦合點越少越好,不僅僅是降低耦合,而且它也使得代碼變得整潔明了、便于維護、降低管理成本。當然在取舍實現(xiàn)的時候,更多的是靠經(jīng)驗和對業(yè)務(wù)邏輯的理解。
          2.2 耦合點越小越好
          耦合點越小越好,主要是為了避免“胖”接口出現(xiàn),即接口隔離原則,指盡量細化接口,使用多個小而專的接口,而不要使用一個大的總接口。
          因為胖接口不僅僅是設(shè)計上的一種“浪費”,而且在實施上會帶來潛在的問題,所以對其進行修改將導(dǎo)致一連串的程序需要修改,有時候這是一種災(zāi)難。
          例如,貸款程序要調(diào)用活期動賬程序,那么貸款程序會通過通信區(qū)將接口信息傳遞給活期動賬程序,由于活期動賬程序包含了入賬和扣賬的處理,所以通信區(qū)包含的耦合內(nèi)容較多。
          應(yīng)該將活期動賬程序分為入賬和扣賬兩個接口,每個接口只提供跟這個接口最直接的服務(wù),將與之無關(guān)的全部隔離出去。
          不難看出,對接口進行細化可以提高程序設(shè)計靈活性是不爭的事實,但一定要適度,如果過小,則會造成接口數(shù)量過多,使設(shè)計復(fù)雜化。
          總之,要能減弱接口間的耦合性,那么維護相對較多的接口也比維護一個龐大臃腫的接口要強。
          2.3 耦合方要求越低越好
          耦合方要求越低越好,主要是不希望類之間建立直接的聯(lián)系,即迪米特法則,又叫最少知識原則。
          因為每個對象盡量減少對其他對象的了解,所以很容易使得系統(tǒng)的功能模塊功能獨立,相互之間不存在(或很少有)依賴關(guān)系,更有利于復(fù)用,一個處在弱耦合的類被修改,不會對有關(guān)系的類造成波及。
          就好比請求方無需關(guān)心服務(wù)方的具體實現(xiàn)操作,當需要更換操作時,修改配置文件,使得程序穩(wěn)定,實現(xiàn)了請求方與服務(wù)方的松耦合。
          這就像現(xiàn)實中的插座一樣,可以隨時更替,隨時插拔。
          關(guān)于衡量耦合度的思路,就列舉到這里??偟膩碚f,耦合的強弱取決于模塊間接口的復(fù)雜性、調(diào)用模塊的方式以及通過界面?zhèn)魉蛿?shù)據(jù)的多少。


          三、銀行IT系統(tǒng)松耦合的基本內(nèi)容



          我們經(jīng)常在分析系統(tǒng)耦合度的過程中不知道該怎么去梳理,或者當我們接觸到系統(tǒng)的時候,不知道該從哪些角度去分析系統(tǒng)的松耦合情況。
          對于這問題我們需要對系統(tǒng)進行全方面的分析,那就來一起聊聊,對銀行IT系統(tǒng)進行分析時能夠了解到的內(nèi)容。
          3.1 編碼是一種藝術(shù)
          (1)組件松耦合
          生活中的很多物品都是由若干個零件組成,有手機、電腦等等。以面包機為例,在我們印象中是這樣的:
          但面包機經(jīng)過拆解之后,大概有400多種零件,每個零件都是單獨存在的,而且是看得見摸得著。如果某個零件壞了,我們只要替換下來換一個好的再安裝就可以了。
          不難發(fā)現(xiàn),這些零件與我們軟件工程中的組件有共通之處,比如可被組裝、有重復(fù)的部分等等。
          那回到主題,實現(xiàn)組件松耦合,該具有什么樣的特性呢?我認為有以下幾點:
          • 職責清晰、功能獨立
          • 可復(fù)用、可更換、可組合
          • 與外界的接口是標準的接口
          • 運行的硬、軟件無強依賴關(guān)系
          (2)接口松耦合
          接口的定義在系統(tǒng)設(shè)計過程中發(fā)揮著重要的作用,不管是在日常練習還是工作中,我們每個人都少不了要定義各種接口(interface),有系統(tǒng)集成、有前后臺調(diào)用。
          接口的定義能在一定程度上反應(yīng)程序員的編程功底或業(yè)務(wù)能力,可以看出有的人著重實現(xiàn)細節(jié),有的更注重整體性......
          這都體現(xiàn)了背后所隱含的設(shè)計思想和設(shè)計理念的差異,定義的好,能規(guī)避掉很多無用的返工修改和可能出現(xiàn)的問題。
          俗話說無規(guī)矩不成方圓,下面列幾點:
          • 允許跨平臺或不同的對象間輕松交互
          • 采用統(tǒng)一的接口規(guī)則,如“ISO8583”
          • 統(tǒng)一接口命名法,如"駝峰命名法"
          • 避免出現(xiàn)無關(guān)或復(fù)雜的輸入?yún)?shù)
          (3)應(yīng)用與數(shù)據(jù)松耦合
          在計算機發(fā)展的初期,程序員們使用機器語言來進行編程運算,可以理解為只有計算機能夠識別的一套0,1編碼。
          后來為了便于閱讀,出現(xiàn)的匯編語言代替了機器語言的二進制碼。當計算機語言發(fā)展到第三代時,就進入了“面向人類”的高級語言。
          隨著軟件開發(fā)規(guī)模愈來愈大,早期應(yīng)用與數(shù)據(jù)之間多對多做法的弊端逐漸凸顯,導(dǎo)致軟件難以維護,比如修復(fù)一個Bug而引發(fā)更多Bug,以及軟件開發(fā)人員之間的信息交流不準確等,因此容易產(chǎn)生疏漏和錯誤。
          那就需要一整套方法來規(guī)范這些人和事,所以引入了工程學的概念,即軟件工程。
          也就是現(xiàn)在的核心系統(tǒng)都已能做到應(yīng)用與數(shù)據(jù)松耦合的原因了,比如將數(shù)據(jù)庫的增刪改查封裝到類中、早期報表與應(yīng)用程序和數(shù)據(jù)的解耦等。
          以數(shù)據(jù)庫的封裝來說,好處在于將變化隔離,便于使用、提高了重用性和安全性。規(guī)則如下:
          • 各應(yīng)用的數(shù)據(jù)分別封裝在相應(yīng)的應(yīng)用模塊中
          • 不可跨應(yīng)用訪問表,必須由應(yīng)用本身去操作
          • 要訪問其他應(yīng)用數(shù)據(jù),由其他應(yīng)用提供服務(wù)
          3.2 優(yōu)雅的系統(tǒng)設(shè)計
          (1)流程松耦合
          流程松耦合的前提是能準確對交易干系人的行為進行分析,這就需要我們了解清楚干系人在交易中的需求或是服務(wù)。
          如果對行為分析的不到位,一定會對業(yè)務(wù)流程分析產(chǎn)生一定的影響,甚至是庫表結(jié)構(gòu)等數(shù)據(jù)層面的松耦合。因此設(shè)計一套簡潔,耦合度低的流程是非常重要的。
          比如,銀行柜員為公司客戶提供金融服務(wù),這就進入了公司業(yè)務(wù)條線,其中會包含存款、貸款、貿(mào)易融資、供應(yīng)鏈、現(xiàn)金管理等具體業(yè)務(wù)。但這個粒度太粗,可以按不同的角色在對業(yè)務(wù)中承擔的職責進行逐步拆解。
          再如,銀行柜員在為客戶辦理金融交易時,無需關(guān)心會計信息,對核心這種交易系統(tǒng)而言也一樣,所以可以對前端業(yè)務(wù)的辦理與后臺的賬務(wù)處理進行解耦,就是我們常提到的交易與核算分離,也可以按上述方法進行分析。
          又如,采用異步的方式連接本系統(tǒng)與第三方系統(tǒng),這也算是一種解耦;再如,采用ESB服務(wù)總線的方式設(shè)置系統(tǒng)內(nèi)部和系統(tǒng)間的服務(wù)調(diào)用,減少系統(tǒng)間的耦合性,便于系統(tǒng)的功能擴展等等。
          雖然這個抽絲剝繭過程主要依賴于設(shè)計者的經(jīng)驗,而且需要不斷摸索、總結(jié)和反復(fù)驗證。但只有這樣,才能打通業(yè)務(wù)和技術(shù),落實對流程IT組件的生產(chǎn)和組裝,以及對業(yè)務(wù)按場景、事件等維度的流程配置和動態(tài)調(diào)整,實現(xiàn)流程松耦合。
          (2)數(shù)據(jù)松耦合
          數(shù)據(jù)耦合在百度百科中是這么說的,指的是兩個模塊之間有調(diào)用關(guān)系,傳遞的是簡單的數(shù)據(jù)值,相當于高級語言的值傳遞。例子如下:
          確實是這樣的,再換個角度,說數(shù)據(jù)拆分。數(shù)據(jù)拆分可以與流程分解同步進行,有利于明確數(shù)據(jù)邊界,實現(xiàn)數(shù)據(jù)層面的解耦。
          如果我們不懂業(yè)務(wù),就聽不懂別人的問題,就提不出好的建議,就無法更好的拆分數(shù)據(jù),也就很難達到預(yù)期。
          所以,數(shù)據(jù)拆分是基于對業(yè)務(wù)&技術(shù)知識和實踐方面,有深入了解的前提條件下進行的。以編碼生成的規(guī)則為例,有日志號、錯誤碼、客戶號、賬號、子序號、凍結(jié)編號等等。
          這些都屬于數(shù)據(jù)松耦合的范疇內(nèi)。那良好的編碼該具備怎樣的規(guī)范呢?
          • 編碼能直接區(qū)分編碼類型
          • 編碼的序號是順序生成的
          • 編碼中不要包含以后會變的信息
          • 編碼能體現(xiàn)少量信息,如客戶類型
          • 關(guān)注編碼與屬性松耦合、系統(tǒng)開銷
          當然,各類數(shù)據(jù)的規(guī)范遠遠不止這些,比如客戶合并、機構(gòu)撤并等場景。因此,除了要對現(xiàn)有數(shù)據(jù)進行拆分,還要對比各種種解決方案,以及可能存在數(shù)據(jù)冗余的問題等,都會影響到后續(xù)的接口設(shè)計。
          所以多維度的梳理,能向?qū)崿F(xiàn)數(shù)據(jù)松耦合更進一步。
          3.3 其他方面的松耦合
          除了以上介紹的兩種關(guān)鍵維度外,還有很多其他方面的松耦合影響著銀行IT系統(tǒng)。比如IT架構(gòu)管控方面,有項目審查、方案確認、對硬件的依賴程度、代碼版本控制、系統(tǒng)上線步驟的要求等全生命周期的管理。咱就來簡單嘮嘮。
          銀行IT系統(tǒng)建設(shè)是一個自頂向下逐步細化的過程,對于整個信息系統(tǒng)來說也一樣,當然這也是很多業(yè)界大師都給出過的論證。
          因為在系統(tǒng)開發(fā)的過程中,經(jīng)常會出現(xiàn)信息不一致,而這種現(xiàn)象的存在對系統(tǒng)往往是致命的。因此,自頂向下是從整體架構(gòu)的角度思考,以便達到信息的一致性。
          銀行核心系統(tǒng)投產(chǎn)就是一個典型的例子,相信經(jīng)歷過這激動人心的時刻,都會深有感觸。在短時間、資源緊張的情況下,面對磕磕碰碰,在日夜不懈奮斗之后,將多個項目組成一個個投產(chǎn)版本,其復(fù)雜性與工程量可謂不易。
          當資源封板后,仍有很多因素需要考慮。
          比如對上線時間的考量、是否按子系統(tǒng)分步投產(chǎn)、是否某地域先投產(chǎn)、如何將風險降到最近,怎么做到客戶無感知等等,這些都是對系統(tǒng)穩(wěn)定的考驗。以分步投產(chǎn)為例:
          • 準備:客戶信息補錄、數(shù)據(jù)清理、系統(tǒng)培訓、數(shù)據(jù)遷移、停售部分產(chǎn)品、網(wǎng)絡(luò)改造、細化規(guī)章制度、機構(gòu)柜員信息采集、切換演練、并行演練、投產(chǎn)預(yù)演、災(zāi)備演練等
          • 預(yù)備:如版本沖突問題,一般投產(chǎn)后幾天,出現(xiàn)的問題會相對較多,因此要考慮新版本上線的影響、與其他組件的兼容情況、與功能間的松耦合
          • 其他:如按子系統(tǒng)分布投產(chǎn),要考慮系統(tǒng)間的依賴情況,能否做到松耦合,以及對外報批報備及宣傳解釋、系統(tǒng)切換及檔案保管等
          這例子只是一部分,還有很多有意思的設(shè)計關(guān)鍵點就不過多敘述了。當然,除了編碼的藝術(shù)、優(yōu)雅的設(shè)計,合適的性能也是非常重要的。俗話說:“沒有對比就看不出差距”。
          下圖對比了緊耦合與松耦合的性能特點:


          四、松耦合的代價



          文章讀到這里,相信大家緊耦合與松耦合有了一定的了解,那到底是用緊耦合好還是松耦合好?
          之前也有過一些交流,其實這是一個比較難回答的問題,沒有不顧場景和資源下絕對的好與壞,也不是一定要追求松耦合,關(guān)鍵要權(quán)衡利弊。
          • 首先,松耦合意味著更多的代碼開發(fā)和維護工作量,那么系統(tǒng)會付出更加復(fù)雜的代價;
          • 其次,不同公司、部門或團隊也有不同的進度安排、利益和預(yù)算,是需要集中力量一起協(xié)作完成的;
          • 最后是松耦合的架構(gòu)增加了系統(tǒng)開銷,從而降低了系統(tǒng)處理效率。
          例如,異步處理的方式比同步處理的方式復(fù)雜;再如,組件服務(wù)化不徹底導(dǎo)致不清、服務(wù)間關(guān)系復(fù)雜;又如,由于調(diào)用鏈太長,且故障存在擴散現(xiàn)象,快速定位問題問題。


          五、結(jié)束語



          基于各家行的信息系統(tǒng)情況與數(shù)據(jù)量,緊耦合與松耦合的相對優(yōu)勢是存在的,或者說,各有優(yōu)勢,看銀行根據(jù)自身情況取舍價值判斷。但當信息系統(tǒng)或數(shù)據(jù)量發(fā)展到一定階段,松耦合是必經(jīng)之路。無論是以前的SOA還是現(xiàn)在的微服務(wù),主要都是為了化繁為簡。
          所以在系統(tǒng)設(shè)計時需要把松耦合的環(huán)節(jié)通盤考慮清楚并平衡多方因素,當然還有技術(shù)架構(gòu)、部署架構(gòu)等場景。
          每個環(huán)節(jié)都按照既定的目標去執(zhí)行,形成統(tǒng)一的語言,才能最終實現(xiàn)真正意義上的松耦合,使系統(tǒng)架構(gòu)隨著系統(tǒng)的發(fā)展而進行適應(yīng)性的優(yōu)化,始終保持適度的耦合度,起到落實IT和業(yè)務(wù)戰(zhàn)略目標。
          至此,松耦合的內(nèi)容就到這里。如果能為你帶來些許幫助,那是一件非常欣慰的事情。感謝網(wǎng)絡(luò)上編寫了松耦合相關(guān)文章的作者。限于個人整體認知,有些方面只是概要講述,并未詳細展開。歡迎分享你的觀點,我們一起探討。?
          參考文獻:
          • 梁禮方.《松耦合》,2013年
          • 程杰.《大話設(shè)計模式》,2007年
          • 劉光瑞.《松耦合系統(tǒng)架構(gòu)淺析》,2018年
          • 網(wǎng)絡(luò).《松耦合和緊耦合的架構(gòu)設(shè)計及性能對比》
          八月伊始,乘風破浪。IDCF【冬哥有話說】8月特別邀請到四位美女,帶來四個主題分享,分別從組織建設(shè)、績效考核、品牌營銷,以及技術(shù)卓越等不同角度,圍繞“數(shù)字化”展開,這也體現(xiàn)了IDCF一直秉承的理念“培養(yǎng)端到端的人才”,我們希望可以通過本系列的分享,給你不同的視角去看待一個企業(yè),從單純的技術(shù)視角跳出來,去盡可能的看到一個更加完整的全貌。
          本周四晚8點,易保網(wǎng)絡(luò)配置管理資深架構(gòu)陳茜分享《研發(fā)跨6國7城8/9朵云-多云、異地開發(fā)協(xié)同的挑戰(zhàn)之下的生存之道》,識別下圖二維碼,回復(fù)“乘風破浪”即可獲取直播地址。


          瀏覽 105
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美一级片网站 | 久久午夜无码鲁丝片午夜情品 | 日本黄免费 | 亚洲淫秽视频大全 | 久操影视 |