銀行系統(tǒng)中的消息分發(fā)利器Kafka(一)

在我們?yōu)殂y行設計金融系統(tǒng)的時候,消息分發(fā)利器是個非常關鍵的環(huán)節(jié)。
消息分發(fā)處理主要做什么?

銀行金融系統(tǒng)每天有大量的交易發(fā)生,這些交易很多需要進行實時的檢查與處理,比如一筆交易發(fā)生,這筆交易是否是欺詐交易,這筆交易是否已經(jīng)達到限額了,相關用戶是否在黑名單中,交易結果聯(lián)動短信、Email等渠道通知用戶……等等,也許一筆簡單的交易,就要與反欺詐系統(tǒng)、黑名單系統(tǒng)、限額或授信管控系統(tǒng)、短信郵件系統(tǒng)進行通訊。
這還不是全部,銀行金融系統(tǒng)在進行運行時,如果出現(xiàn)了問題,需要日志及時定位問題;為了及時發(fā)現(xiàn)問題,要將處理結果實施發(fā)送監(jiān)控平臺;為了預防突發(fā)事件發(fā)生,還需要備份系統(tǒng)做高可用處理。這就仍然需要與日志系統(tǒng)、監(jiān)控系統(tǒng)、備份系統(tǒng)進行通訊。
最重要的是,上面這些處理必須在極短時間內完成,否則用戶就會感到有卡頓,影響體驗。
怎么解決這些問題呢?將交易處理相關的系統(tǒng)全部直連起來,似乎是個辦法:


屏幕快照 2019-01-05 上午9.54.46.png

但明顯不是一個好辦法,你將面臨極高的后續(xù)維護成本:


![屏幕快照 2019-01-05 上午10.02.12.png](https://upload-images.jianshu.io/upload_images/4696469-d326aa5668fa1caa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

于是,消息分發(fā)處理的概念出現(xiàn)了,我們在各個系統(tǒng)之間搭建一個消息分發(fā)的總控系統(tǒng),連接這個總控系統(tǒng)的主要有兩方:
1、消息供應方(Producer):他們會產(chǎn)生消息,并將消息送給消息分發(fā)系統(tǒng)。
2、消息消費方(Comsumer):他們需要最新的消息以進行自身功能的處理,他們會從消息分發(fā)系統(tǒng)拿消息。
而消息分發(fā)系統(tǒng)就在中間,起到消息中介(Message Broker)的作用。

kafka系統(tǒng)就是一個消息中介,從kafka的官網(wǎng)可以找到kafka的官方介紹:


![屏幕快照 2019-01-06 上午10.26.38.png](https://upload-images.jianshu.io/upload_images/4696469-65989bd523baa510.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

可以看出,介紹中也提到kafka很像是一個消息隊列或者企業(yè)級消息分發(fā)系統(tǒng)。當然它不同于一般的消息隊列系統(tǒng),它的并發(fā)處理能力很強大,同時,通過分布式架構可以很靈活的增加處理能力。


屏幕快照 2019-01-06 上午10.26.38.png

上圖展示了一個最簡單的kafka分布式架構的情況,通過分布式架構,kafka集群可以橫向擴容很多的broker,以增加自己的并發(fā)處理能力。集群通過Zookeeper或其它技術進行分布式調度(Zookeeper簡單說就是分布式系統(tǒng)的一個指揮,它會對哪個broker做什么做好指揮,確保所有的broker可以協(xié)同工作。以后有機會單獨寫文章講解)。

我們可以更加細致的看一下kafka的架構:

上方的Producers會產(chǎn)生很多的消息和信息送給kafka。

kafka會把這些消息存儲下來。

下方的Consumers會從kafka獲取它所需要的數(shù)據(jù),然后自行處理,比如Consumers可能會降消息存儲到hadoop、cassandra、Base。

右側是流處理App。首先“流”是什么?“流”簡單來說,就是不間斷的一系列變化的數(shù)據(jù)或者消息。kafka可以很好的支持流處理(支持很多“流API”),一些流處理框架下的App可以接入kafka,并且可以實時的獲取變化的數(shù)據(jù)和消息,對消息進行處理后可以立刻存回kafka,等待其它Consumers調用。

最后是左側的connectors,通過它,你可以將kafka與不同的數(shù)據(jù)庫或App聯(lián)通,實現(xiàn)海量數(shù)據(jù)導入kafka或者從kafka導出。

總結一下,簡單說,kafka是一個企業(yè)級的消息分發(fā)處理系統(tǒng),可以幫助企業(yè)很好的進行多個系統(tǒng)間的消息處理事務,同時支持實時的流處理。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容