成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深入理解Spring Cloud與微服務(wù)構(gòu)建【一】 - 1.3 微服務(wù)的不足

bawn / 3344人閱讀

摘要:微服務(wù)的復(fù)雜度框架知識(shí)服務(wù)于服務(wù)通信服務(wù)與服務(wù)之間相互依賴。服務(wù)的部署可選用。指服務(wù)的可用性。微服務(wù)系統(tǒng)通常是一個(gè)系統(tǒng),即同時(shí)滿足了可用性和分區(qū)容錯(cuò)。兩階段提交,將事務(wù)分成兩部分能夠大大提高分布式事務(wù)成功的概率。

主要體現(xiàn)在如下方面。

微服務(wù)的復(fù)雜度(框架知識(shí)、服務(wù)于服務(wù)通信、服務(wù)與服務(wù)之間相互依賴)。

分布式事務(wù)(重點(diǎn))。

服務(wù)的劃分(業(yè)務(wù)場(chǎng)景劃分邊界,最好無(wú)耦合,都能多帶帶運(yùn)行和替換)。

服務(wù)的部署(可選用Docker、DevOps)。

多帶帶說(shuō)下分布式事務(wù),其余就不多做解釋

1.3.1 分布式事物

微服務(wù)架構(gòu)所設(shè)計(jì)的系統(tǒng)是分布式系統(tǒng)。分布式系統(tǒng)有一個(gè)著名的 CAP 理論,即同時(shí)滿足“一致性”“可用性”和“分區(qū)容錯(cuò)”是一件不可能的事。

Consistency:指數(shù)據(jù)的強(qiáng)一致性。如果寫入某個(gè)數(shù)據(jù)成功,之后讀取,讀到的都是新寫入的數(shù)據(jù):如果寫入失敗,之后讀取的都不是寫入失敗的數(shù)據(jù)。

Availability:指服務(wù)的可用性。

Partition-tolerance:指分區(qū)容錯(cuò)。

在分布式系統(tǒng)中,P 是基本要求,而單體服務(wù)是 CA 系統(tǒng)。 微服務(wù)系統(tǒng)通常是一個(gè) AP系統(tǒng),即同時(shí)滿足了可用性和分區(qū)容錯(cuò)。這就有了一個(gè)難題:在分布式系統(tǒng)中如何保證數(shù)據(jù)的一致性?這就是大 家經(jīng)常討論的分布式事務(wù)。

在微服務(wù)系統(tǒng)中,每個(gè)服務(wù)都是獨(dú)立的進(jìn)程單元, 每個(gè)服務(wù)都有自己的數(shù)據(jù)庫(kù)。 通常情況下,只有關(guān)系型數(shù)據(jù)庫(kù)在特定的數(shù)據(jù)引擎下才支持事務(wù),而大多數(shù)非關(guān) 系型數(shù)據(jù)庫(kù)是不支持事務(wù)的,例如 MongDB 是不支持事 務(wù)的,而 Redis是支持事務(wù)的。 在微服務(wù)架構(gòu)中,分布 式事務(wù)一直都是一個(gè)難以解決的問(wèn)題,業(yè)界給出的解決 辦法通常是兩階段提交。

網(wǎng)上購(gòu)物在日常生活中是一個(gè)非常普通的場(chǎng)最,假設(shè)我在淘寶上購(gòu)買了一部手機(jī),需要從我的賬戶中扣除 1000 元錢,同時(shí)手機(jī)的庫(kù)存數(shù)量需要減 1。當(dāng)然需要在賣方的賬戶中加 1000 元錢,為了使案例簡(jiǎn)單化,暫時(shí)不用考慮。
如果這是一個(gè)單體應(yīng)用,并且使用支持事務(wù)的 MySQL 數(shù)據(jù)庫(kù) ClnnoDB 數(shù)據(jù)庫(kù)引擎才支 持事務(wù)),我們可能這樣寫代碼:

@Transactional  
public void update () throws RuntimeException( 
    updateAccountTable (); 11更新賬戶表 
    updateGoodsTable (); 11更新商品表 
}

如果是微服務(wù)架構(gòu),賬戶是一個(gè)服務(wù),而商品是一個(gè)服務(wù),這時(shí)不能用數(shù)據(jù)庫(kù)自帶的事務(wù),因?yàn)檫@兩個(gè)數(shù)據(jù)表不在一個(gè)數(shù)據(jù)庫(kù)中。因此常常用到兩階段提交,兩階段提交的過(guò)程

第一階段, service-account 發(fā)起一個(gè)分布式事務(wù),交給事務(wù)協(xié)調(diào)器 TC 處理,事務(wù)協(xié)調(diào)器 TC 向所有參與的事務(wù)的節(jié)點(diǎn)發(fā)送處理事務(wù)操作的準(zhǔn)備操作。 所有的參與節(jié)點(diǎn)執(zhí)行準(zhǔn)備操作, 將 Undo 和 Redo 信息寫進(jìn)日志,并向事務(wù)管理器返回準(zhǔn)備操作是否成功。

第二階段,事務(wù)管理器收集所有節(jié)點(diǎn)的準(zhǔn)備操作是否成功,如果都成功,則通知所有的節(jié) 點(diǎn)執(zhí)行提交操作;如果有一個(gè)失敗,則執(zhí)行回滾操作。

兩階段提交,將事務(wù)分成兩部分能夠大大提高分布式事務(wù)成功的概率。如果在第一階段都 成功了,而執(zhí)行第二階段的某一個(gè)節(jié)點(diǎn)失敗,仍然導(dǎo)致數(shù)據(jù)的不準(zhǔn)確,這時(shí)一般需要人工去處 理,這就是當(dāng)初在第一步記錄日志的原因。另外,如果分布式事務(wù)涉及的節(jié)點(diǎn)很多,某一個(gè)節(jié) 點(diǎn)的網(wǎng)絡(luò)出現(xiàn)異常會(huì)導(dǎo)致整個(gè)事務(wù)處于阻塞狀態(tài),大大降低數(shù)據(jù)庫(kù)的性能。所以一般情況下, 盡量少用分布式事務(wù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69710.html

相關(guān)文章

  • 深入理解Spring Cloud服務(wù)構(gòu)建】 - 1.1體架構(gòu)及其存在不足

    摘要:?jiǎn)误w架構(gòu)簡(jiǎn)介經(jīng)典的層模型,即表示層業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層。口數(shù)據(jù)訪問(wèn)層用于操作數(shù)據(jù)庫(kù),用戶在表示層會(huì)產(chǎn)生大量的數(shù)據(jù),通過(guò)數(shù)據(jù)訪問(wèn)層對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫操作。 1.1.1 單體架構(gòu)簡(jiǎn)介 經(jīng)典的 3 層模型,即表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層。 口 表示層: 用于直接和用戶交互,也稱為交互層,通常是網(wǎng)頁(yè)、 UI 等。 口 業(yè)務(wù)邏輯層:即業(yè)務(wù)邏輯處理層,例如用戶輸入的信息要經(jīng)過(guò)業(yè)務(wù)邏輯層的處理...

    My_Oh_My 評(píng)論0 收藏0
  • 深入理解Spring Cloud服務(wù)構(gòu)建】 - 1.4 服務(wù)設(shè)計(jì)原則與Spring Cl

    摘要:微服務(wù)的設(shè)計(jì)原則軟件設(shè)計(jì)每一個(gè)版本都在變化,所以軟件設(shè)計(jì)應(yīng)該是漸進(jìn)式發(fā)展。在微服務(wù)設(shè)計(jì)時(shí),一定要考慮清楚這三個(gè)難題,從而選擇合適的框架。目前比較流行的微服務(wù)框架有社區(qū)的公司的等。微服務(wù)應(yīng)該具備的功能。 微服務(wù)的設(shè)計(jì)原則 軟件設(shè)計(jì)每一個(gè)版本都在變化,所以軟件設(shè)計(jì)應(yīng)該是漸進(jìn)式發(fā)展。 軟件從一開(kāi)始就不應(yīng)該被設(shè)計(jì)成微服務(wù)架構(gòu),微服務(wù)架構(gòu)固然有優(yōu)勢(shì),但是它需要更多的資源,包括服務(wù)器資源、技術(shù)人員...

    ningwang 評(píng)論0 收藏0
  • 深入理解Spring Cloud服務(wù)構(gòu)建【二】 - 2.2 Spring Cloud

    摘要:負(fù)載均衡組件是一個(gè)負(fù)載均衡組件,它通常和配合使用。和配合,很容易做到負(fù)載均衡,將請(qǐng)求根據(jù)負(fù)載均衡策略分配到不同的服務(wù)實(shí)例中。和配合,在消費(fèi)服務(wù)時(shí)能夠做到負(fù)載均衡。在默認(rèn)的情況下,和相結(jié)合,能夠做到負(fù)載均衡智能路由。 2.2.1 簡(jiǎn)介 Spring Cloud 是基于 Spring Boot 的。 Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新 Web 框架, 它主要的特點(diǎn)...

    Rocko 評(píng)論0 收藏0
  • 深入理解Spring Cloud服務(wù)構(gòu)建【二】 - 2.1 服務(wù)應(yīng)該具備功能

    摘要:口服務(wù)的負(fù)載均衡。服務(wù)的注冊(cè)與發(fā)現(xiàn)接口管理服務(wù)注冊(cè)是指向服務(wù)注冊(cè)中心注冊(cè)一個(gè)服務(wù)實(shí)例,服務(wù)提供者將自己的服務(wù)信息如服務(wù)名地址等告知服務(wù)注冊(cè)中心。服務(wù)注冊(cè)中心會(huì)提供服務(wù)的健康檢查方案,檢查被注冊(cè)的服務(wù)是否可用。服務(wù)降級(jí)的功能。 微服務(wù)具有以下的特點(diǎn)。 口 按照業(yè)務(wù)來(lái)劃分服務(wù),單個(gè)服務(wù)代碼量小,業(yè)務(wù)單一,易于維護(hù)。 口 每個(gè)微服務(wù)都有自己獨(dú)立的基礎(chǔ)組件,例如數(shù)據(jù)庫(kù)、 緩存等,且運(yùn)行在獨(dú)立...

    starsfun 評(píng)論0 收藏0
  • 深入理解Spring Cloud服務(wù)構(gòu)建】 - 1.2服務(wù)

    摘要:熔斷機(jī)制為了防止雪崩效應(yīng)事件的發(fā)生,分布式系統(tǒng)采用了熔斷機(jī)制。為了解決這一難題,微服務(wù)架構(gòu)引入了熔斷機(jī)制。由于微服務(wù)系統(tǒng)是分布式系統(tǒng),服務(wù)與服務(wù)之間沒(méi)有任何的禍合。 1.2.1 什么是微服務(wù) 按業(yè)務(wù)劃分為一個(gè)獨(dú)立運(yùn)行的程序,即服務(wù)單元。 服務(wù)之間通過(guò) HTTP 協(xié)議相互通信。 自動(dòng)化部署。 可以用不同的編程語(yǔ)言。 可以用不同的存儲(chǔ)技術(shù)。 服務(wù)集中化管理。 微服務(wù)是一個(gè)分布式系統(tǒng)。 ...

    AlexTuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

bawn

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<