<strong id="g4pkx"></strong>
    <font id="g4pkx"><noscript id="g4pkx"></noscript></font>
      <font id="g4pkx"></font>
    1. <font id="g4pkx"></font>
        1. 事務和數據庫有關系嗎?終于有一篇文章把“事務”講清楚了!
          課工場 | 2020-09-22 13:24:12  1066 瀏覽
          不知道你是否遇到這樣的場景,去小賣鋪買東西,付了錢,但店主突然有事情需要去處理,等處理回來之后給到你的貨物與你最開始想要買的不一致,或許多了,或許少了,或許拿錯了,甚至是間歇性失憶忘記你曾經付過錢反而要求你重新付錢了。

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

          QQ截圖20200820141821.png

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



          標簽:
          五月丁香浪潮网