我也來聊聊分布式和微服務(wù)架構(gòu)

目前的項目使用前后端完全分離模式,前端 Vue 后端 Java-Dubbo-ZooKeeper,中間層 Node-Moleculer。閑暇之余也來整理一下分布式系統(tǒng)和微服務(wù)架構(gòu)中的一些知識點。

當(dāng)下主流微服務(wù)架構(gòu)分類

  1. 高性能 RPC 技術(shù)和服務(wù)治理類,這個領(lǐng)域最強為 ZeroC IceGrid ,公司目前的 Dubbo 也屬于這個分類,在這個分類中屬于性能一般的 RPC 框架。

  2. HTTP REST 為通訊機制的通用性微服務(wù)架構(gòu),比如 Spring Cloud。

  3. 基于容器技術(shù)的微服務(wù)架構(gòu)平臺,并不提供特定的 RPC 通訊機制,比如 GoogleKubernetes,這是一個微服務(wù)架構(gòu)平臺,理論上是讓任何分布式應(yīng)用都可以在平臺上運行的。

說一些個人看法

  1. 分布式,微服務(wù),集群和云計算這些高大上的名詞幾乎都有很密切的聯(lián)系,工作接觸了之后發(fā)現(xiàn),這東西確實能在未來十多年內(nèi)繼續(xù)綻放光彩。從二十年前更傳統(tǒng)的 IPC發(fā)展到十來年前的 RPC 誕生,同時 SOAP-XML 大放光彩后又在兩三年前年前 RPC 變種 REST-JSON 替代,到今天還有人和我爭執(zhí) REST 弊大于利,還有人和我大談 SOAP 的優(yōu)勢。而如今2018年 Spring Cloud 開始興起,作為 JAVA 程序員的你,還在觀望什么呢?

  2. 關(guān)于分布式系統(tǒng)中事務(wù)一致性的相關(guān)問題,這里我說說一些原理。事務(wù)最早是在銀行業(yè)數(shù)據(jù)庫中引入的,數(shù)據(jù)庫事務(wù)要滿足四個要求:Atomic,Consistent,IsolationDuration,其中原子性用于事務(wù)回滾,隔離性使用數(shù)據(jù)庫互斥鎖,加上持久性三者組成了數(shù)據(jù)庫相關(guān)的大量I/O操作,及其耗費資源。

  3. 如果一個事務(wù)要操作幾個數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù),這種事務(wù)就叫分布式事務(wù),分布式系統(tǒng)編程難度很大,于是有人研究了一套分布式事務(wù)標(biāo)準(zhǔn)規(guī)范: X/Open DTP。這個規(guī)范模仿TCP三次握手提出了二階段提交模型 2PC,這東西應(yīng)該算這個行業(yè)內(nèi)唯一全球工委的分布式事務(wù)規(guī)范了。上面提到的三種微服務(wù)架構(gòu)也只是在各自領(lǐng)域被開發(fā)者們奉若神明,并沒有采納到國際開發(fā)標(biāo)準(zhǔn)中。

  4. 微服務(wù)架構(gòu)的三種體系:Monolith Architecture, Microservices ArchitectureMix Architecture。巨石模式下請求通過 API Gateway網(wǎng)關(guān)服務(wù) 后就能看到一堆 Services,微服務(wù)模式下所有服務(wù)都通過 Transporter 進(jìn)行通訊,這也就是消息中間件?;旌夏J较戮褪菍⒃S多服務(wù)進(jìn)行的分類部署。

  5. 關(guān)于微服務(wù)架構(gòu)中各服務(wù)之間的通訊問題。我們引入的 Transporter 實際上就是一個中轉(zhuǎn)站,以前有人使用文件系統(tǒng),也有人使用內(nèi)存映射,都是為了處理分布式事務(wù)一致性而采取的措施。目前比較成熟的方案是使用消息中間件,可以是TCP,Redis,RabbitMQ,NATSKafka等等。

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容