學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

事務和數據庫有關系嗎?終于有一篇文章把“事務”講清楚了!

來源:北大青鳥總部 2020年09月22日 13:22

摘要: 事務和數據庫有關系嗎?終于有一篇文章把“事務”講清楚了!
不知道你是否遇到這樣的場景,去小賣鋪買東西,付了錢,但店主突然有事情需要去處理,等處理回來之后給到你的貨物與你最開始想要買的不一致,或許多了,或許少了,或許拿錯了,甚至是間歇性失憶忘記你曾經付過錢反而要求你重新付錢了。

又或是在線購物時,付款成功后可以增加積分,但是個人積分卻沒有任何變動,或者是明明成功付款了,過一會兒店小二聯(lián)系你說沒有庫存了希望你能申請下退款。這所有的事情總結起來就是某個操作的期望與實際不一致,而這背后的原因就是沒有事務

QQ截圖20200820141821.png

那么事務是什么呢?事務是一種工作機制,它把一個活動所涉及的其他所有操作都放入一個不可分割的執(zhí)行單元,只有所有的操作都執(zhí)行成功,事務才算完成,否則整個事務就不成功,回到原始狀態(tài)。
有了事務,你去小賣鋪買東西的時候,你付錢、店主給你對應的貨品、店主減掉庫存這三個操作都完成后,整個買東西的操作才算完成,如果你沒有付錢或者店主沒有給到你對應的貨品,那么這個事務就算是執(zhí)行失敗,就會回到最初的狀態(tài),錢還是你的錢,貨還是商家的貨,不增不減。
事務主要使用在數據庫場合,有本地事務、分布式事務兩種業(yè)態(tài)。
對于數據庫本地事務來說,這個很好理解,因為涉及數據的內容都會存在數據庫里,而數據改動中最重要的就是對金錢財產有改動的內容,需要通過事務去保障,不然你付了錢,卻不給你發(fā)貨,你是不是要去找賣家申訴,而平臺老出問題,賣家是不是要去找平臺申訴,環(huán)環(huán)相扣,最終會影響一大波人,因此事務是非常重要的。
對于分布式事務,這個主要是由于分布式架構、微服務的出現產生的,分布式事務的一致性也同等重要。
數庫事務最重要的特點就是ACID,即原子性Atomicity、一致性Consistency、隔離性Isolation、持久性Durability。所謂原子性就是事務中所涉及的所有操作,是一個最小的不可分割的,要么全部完成,要么全部不完成,如果事務在執(zhí)行過程中發(fā)生錯誤,則回滾到事務開始前的狀態(tài),就像你買東西一樣,要么交錢收貨一起完成,否則就不給錢或不發(fā)貨。
所謂一致性就是事務在執(zhí)行前后數據庫內容要一致,就像你買東西一樣,買之前商家的售貨額與商品庫存分別是100、1000,在你買之前,所有的人來買東西時商家的售貨額和庫存均是100、1000,你花了50塊錢成功買了100件物品,那么商家的售貨額與庫存變?yōu)?50、900,所有的人來買東西時商家的售貨額和庫存均是150、900,商家的個人數據庫始終一致。
所謂隔離性就是在并發(fā)環(huán)境中,不同的食物操作相同的數據時,每個事務獨立執(zhí)行,互不影響,就像你去小賣鋪買東西,并不影響其它人也來小賣鋪買東西,但是你買貨結賬時的售貨額和庫存一定是個確定值,不會看到中間態(tài)。所謂持久性是指只要事務成功結束,那么數據庫會更新記錄,即使發(fā)生系統(tǒng)崩潰、重啟數據庫系統(tǒng)后,數據庫也還能恢復到事務成功結束時的狀態(tài),就像你去小賣鋪買東西,所有的交易記錄老板都記錄在賬本上,即使老板忘記了也還可以查帳本。
隨著互聯(lián)網用戶和流量的劇增,業(yè)務架構模式開始拆分成微服務、業(yè)務部署模式變?yōu)榉植际健?/span>
所謂微服務架構就是把原來一體化的應用拆分成能獨立完成功能的原子化模塊,比如電商系統(tǒng)服務可拆分成用戶管理微服務、商品管理微服務、訂單管理微服務、庫存管理微服務、交易管理微服務等模塊,原先在一套系統(tǒng)內可以完成的付款、減庫存、加訂單的事務操作現在要分散在交易管理、訂單管理、庫存管理三個子模塊完成,本地事務變成分布式事務。所謂分布式部署則是為了容災與高可用,將重要的、最常用的服務多個節(jié)點部署,保障無論何時服務都能正常響應,比如將電商系統(tǒng)服務中的商品管理在北京、上海、杭州、深圳都部署一套,訂單管理、庫存管理、交易管理等部署杭州,當用戶在北京發(fā)生一筆交易時,需要杭州的服務與北京的服務通信,共同完成任務,從而本地事務變成分布式事務。
分布式事務的產生是必然,那么又如何保障分布式事務的一致性呢?業(yè)內的解法有CAP理論、BASE理論,CAP理論即一致性Consistency、可用性Availability、分區(qū)容錯性Partitiontolerance三者不能共存,要么保障系統(tǒng)的可用性AP、要么保障系統(tǒng)的一致性CP。
這是因為CAP是在分布式部署、微服務架構的情況下提出來的,所以分區(qū)一定存在,如果為了保障數據的一致性,那么當用戶在北京服務節(jié)點發(fā)生交易時,杭州的服務節(jié)點就不能使用,得等到整個交易完成了才能進行,這時候就出現了可用性缺失,如果為了保障系統(tǒng)的可用性,用戶在北京服務節(jié)點的交易和杭州服務節(jié)點的數據因為存在數據傳輸延遲,數據必然會不一致,所以一致性和可用性只能二選一。
對于電商平臺來說,因為覆蓋的用戶廣,無論如何都要保障業(yè)務隨時可用,對于數據的準確性可以接受一定的錯誤,而對于交易系統(tǒng)來說,涉及到用戶財產,那是一分一毫都不能少,所以數據的一致性非常重要。
BASE理論即基本可用BasicallyAvailable、軟狀態(tài)SoftState、最終一致性EventuallyConsistent,是對于CAP定論中的AP的擴展。所謂基本可用是指分布式系統(tǒng)在出現故障時,允許部分非核心業(yè)務功能不可用,保障核心功能可用。所謂軟狀態(tài)是指分布式系統(tǒng)中允許存在中間狀態(tài),允許部分出錯。所謂最終一致是指經過一段時間后,所有分布式節(jié)點數據達到一致。
分布式事務是在互聯(lián)網的飛速發(fā)展下應運而生。在我們的業(yè)務系統(tǒng)中究竟采取本地事務還是分布式事務應當視具體情況而定,不能為了分布式而分布式。如果真的必須分布式,那么需要結合自己的業(yè)務類型選擇合適的模式,可用性、強一致性、最終一致性都是可行解。


熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數據分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接