java属于什么行业,吐血整理
微服務(wù)的發(fā)展
微服務(wù)倡導(dǎo)將復(fù)雜的單體應(yīng)用拆分為若干個(gè)功能簡(jiǎn)單、松耦合的服務(wù),這樣可以降低開發(fā)難度、增強(qiáng)擴(kuò)展性、便于敏捷開發(fā)。當(dāng)前被越來越多的開發(fā)者推崇,很多互聯(lián)網(wǎng)行業(yè)巨頭、開源社區(qū)等都開始了微服務(wù)的討論和實(shí)踐。
微服務(wù)落地存在的問題
雖然微服務(wù)現(xiàn)在如火如荼,但對(duì)其實(shí)踐其實(shí)仍處于探索階段。很多中小型互聯(lián)網(wǎng)公司,鑒于經(jīng)驗(yàn)、技術(shù)實(shí)力等問題,微服務(wù)落地比較困難。
如著名架構(gòu)師Chris Richardson所言,目前存在的主要困難有如下幾方面:
- 單體應(yīng)用拆分為分布式系統(tǒng)后,進(jìn)程間的通訊機(jī)制和故障處理措施變的更加復(fù)雜。
- 系統(tǒng)微服務(wù)化后,一個(gè)看似簡(jiǎn)單的功能,內(nèi)部可能需要調(diào)用多個(gè)服務(wù)并操作多個(gè)數(shù)據(jù)庫(kù)實(shí)現(xiàn),服務(wù)調(diào)用的分布式事務(wù)問題變的非常突出。
- 微服務(wù)數(shù)量眾多,其測(cè)試、部署、監(jiān)控等都變的更加困難。
隨著RPC框架的成熟,第一個(gè)問題已經(jīng)逐漸得到解決。例如springcloud可以非常好的支持restful調(diào)用,dubbo可以支持多種通訊協(xié)議。關(guān)注公眾號(hào)碼猿技術(shù)專欄獲取更多面試資源。
對(duì)于第三個(gè)問題,隨著docker、devops技術(shù)的發(fā)展以及各公有云paas平臺(tái)自動(dòng)化運(yùn)維工具的推出,微服務(wù)的測(cè)試、部署與運(yùn)維會(huì)變得越來越容易。
而對(duì)于第二個(gè)問題,現(xiàn)在還沒有通用方案很好的解決微服務(wù)產(chǎn)生的事務(wù)問題。分布式事務(wù)已經(jīng)成為微服務(wù)落地最大的阻礙,也是最具挑戰(zhàn)性的一個(gè)技術(shù)難題。
ACID
- 原子性(Atomicity):?一個(gè)事務(wù)的所有系列操作步驟被看成是一個(gè)動(dòng)作,所有的步驟要么全部完成要么一個(gè)也不會(huì)完成,如果事務(wù)過程中任何一點(diǎn)失敗,將要被改變的數(shù)據(jù)庫(kù)記錄就不會(huì)被真正被改變。
- 一致性(Consistency):?數(shù)據(jù)庫(kù)的約束 級(jí)聯(lián)和觸發(fā)機(jī)制Trigger都必須滿足事務(wù)的一致性。也就是說,通過各種途徑包括外鍵約束等任何寫入數(shù)據(jù)庫(kù)的數(shù)據(jù)都是有效的,不能發(fā)生表與表之間存在外鍵約束,但是有數(shù)據(jù)卻違背這種約束性。所有改變數(shù)據(jù)庫(kù)數(shù)據(jù)的動(dòng)作事務(wù)必須完成,沒有事務(wù)會(huì)創(chuàng)建一個(gè)無效數(shù)據(jù)狀態(tài),這是不同于CAP理論的一致性"consistency".
- 隔離性(Isolation):?主要用于實(shí)現(xiàn)并發(fā)控制, 隔離能夠確保并發(fā)執(zhí)行的事務(wù)能夠順序一個(gè)接一個(gè)執(zhí)行,通過隔離,一個(gè)未完成事務(wù)不會(huì)影響另外一個(gè)未完成事務(wù)。
- 持久性(Durability):?一旦一個(gè)事務(wù)被提交,它應(yīng)該持久保存,不會(huì)因?yàn)楹推渌僮鳑_突而取消這個(gè)事務(wù)。很多人認(rèn)為這意味著事務(wù)是持久在磁盤上,但是規(guī)范沒有特別定義這點(diǎn)。
一致性理論
分布式事務(wù)的目的是保障分庫(kù)數(shù)據(jù)一致性,而跨庫(kù)事務(wù)會(huì)遇到各種不可控制的問題,如個(gè)別節(jié)點(diǎn)永久性宕機(jī),像單機(jī)事務(wù)一樣的 ACID 是無法奢望的。
另外,業(yè)界著名的 CAP 理論也告訴我們,對(duì)分布式系統(tǒng),需要將數(shù)據(jù)一致性和系統(tǒng)可用性、分區(qū)容忍性放在天平上一起考慮。
兩階段提交協(xié)議(簡(jiǎn)稱2PC)是實(shí)現(xiàn)分布式事務(wù)較為經(jīng)典的方案,但 2PC 的可擴(kuò)展性很差,在分布式架構(gòu)下應(yīng)用代價(jià)較大,eBay 架構(gòu)師 Dan Pritchett 提出了 BASE 理論,用于解決大規(guī)模分布式系統(tǒng)下的數(shù)據(jù)一致性問題。關(guān)注公眾號(hào)碼猿技術(shù)專欄獲取更多面試資源。
BASE 理論告訴我們:可以通過放棄系統(tǒng)在每個(gè)時(shí)刻的強(qiáng)一致性來?yè)Q取系統(tǒng)的可擴(kuò)展性。
CAP 理論
在分布式系統(tǒng)中,一致性(Consistency)、可用性(Availability)和分區(qū)容忍性(Partition Tolerance)3 個(gè)要素最多只能同時(shí)滿足兩個(gè),不可兼得。其中,分區(qū)容忍性又是不可或缺的。
- 一致性:分布式環(huán)境下,多個(gè)節(jié)點(diǎn)的數(shù)據(jù)是否強(qiáng)一致。
- 可用性:分布式服務(wù)能一直保證可用狀態(tài)。當(dāng)用戶發(fā)出一個(gè)請(qǐng)求后,服務(wù)能在有限時(shí)間內(nèi)返回結(jié)果。
- 分區(qū)容忍性:特指對(duì)網(wǎng)絡(luò)分區(qū)的容忍性。
舉例:Cassandra、Dynamo 等,默認(rèn)優(yōu)先選擇 AP,弱化 C;HBase、MongoDB 等,默認(rèn)優(yōu)先選擇 CP,弱化 A。
BASE 理論
核心思想:
- 基本可用(?Basically?Available):指分布式系統(tǒng)在出現(xiàn)故障時(shí),允許損失部分的可用性來保證核心可用;
- 軟狀態(tài)(?Soft state):指允許分布式系統(tǒng)存在中間狀態(tài),該中間狀態(tài)不會(huì)影響到系統(tǒng)的整體可用性;
- 最終一致性(?Eventual consistency):指分布式系統(tǒng)中的所有副本數(shù)據(jù)經(jīng)過一定時(shí)間后,最終能夠達(dá)到一致的狀態(tài);
- 原子性(A)與持久性(D)必須根本保障;
- 為了可用性、性能與降級(jí)服務(wù)的需要,只有降低一致性( C ) 與 隔離性( I ) 的要求;
- 酸堿平衡(ACID-BASE Balance);
BASE 是對(duì) CAP 中 AP 的一個(gè)擴(kuò)展
一致性模型
數(shù)據(jù)的一致性模型可以分成以下三類:
- 強(qiáng)一致性:數(shù)據(jù)更新成功后,任意時(shí)刻所有副本中的數(shù)據(jù)都是一致的,一般采用同步的方式實(shí)現(xiàn)。
- 弱一致性:數(shù)據(jù)更新成功后,系統(tǒng)不承諾立即可以讀到最新寫入的值,也不承諾具體多久之后可以讀到。
- 最終一致性:弱一致性的一種形式,數(shù)據(jù)更新成功后,系統(tǒng)不承諾立即可以返回最新寫入的值,但是保證最終會(huì)返回上一次更新操作的值。
分布式系統(tǒng)數(shù)據(jù)的強(qiáng)一致性、弱一致性和最終一致性可以通過 Quorum NRW 算法分析。
本地事務(wù)
- 在單個(gè)數(shù)據(jù)庫(kù)的本地并且限制在單個(gè)進(jìn)程內(nèi)的事務(wù)
- 本地事務(wù)不涉及多個(gè)數(shù)據(jù)來源
分布式事務(wù)典型方案
- 兩階段提交(2PC, Two Phase Commit)方案;
- 本地消息表 (eBay 事件隊(duì)列方案);
- TCC 補(bǔ)償模式;
分類:
- 兩階段型
- 補(bǔ)償型
- 異步確保型
- 最大努力通知型
服務(wù)模式:
- 可查詢操作
- 冪等操作
- TCC操作
- 可補(bǔ)償操作
線程、數(shù)據(jù)庫(kù)、算法、JVM、分布式、微服務(wù)、框架、Spring相關(guān)知識(shí)
一線互聯(lián)網(wǎng)P7面試集錦+各種大廠面試集錦
資料領(lǐng)取方式:戳這里
學(xué)習(xí)筆記以及面試真題解析
mg-ogOPi3yV-1624514804777)]
資料領(lǐng)取方式:戳這里
學(xué)習(xí)筆記以及面試真題解析
總結(jié)
以上是生活随笔為你收集整理的java属于什么行业,吐血整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java小项目实例,成功入职阿里
- 下一篇: 英雄联盟劫和未来守护者怎么样?排位哪个好