1. 程式人生 > >分散式事務解決方案框架(LCN)

分散式事務解決方案框架(LCN)

事物概念

事物特性(ACID)

原子性(A)

所謂的原子性就是說,在整個事務中的所有操作,要麼全部完成,要麼全部不做,沒有中間狀態。對於事務在執行中發生錯誤,所有的操作都會被回滾,整個事務就像從沒被執行過一樣。

一致性(C)

事務的執行必須保證系統的一致性,就拿轉賬為例,A有500元,B有300元,如果在一個事務裡A成功轉給B50元,那麼不管併發多少,不管發生什麼,只要事務執行成功了,那麼最後A賬戶一定是450元,B賬戶一定是350元。

隔離性(I)

所謂的隔離性就是說,事務與事務之間不會互相影響,一個事務的中間狀態不會被其他事務感知。

永續性(D)

所謂的永續性,就是說一單事務完成了,那麼事務對資料所做的變更就完全儲存在了資料庫中,即使發生停電,系統宕機也是如此。

這種特性 簡稱 剛性事物

分散式事物

分散式事物產生原因

分散式事物產生的原因

分散式事務產生的場景

在分散式系統,都會垂直拆分資料庫,分為支付資料庫、訂單資料庫、積分資料庫、優惠全資料庫等,業務組成,分為多個數據源,會產生分散式事物問題。

spring事務和分散式事務的區別是什麼?
spring事務,本地事務
分散式事務是跨服務間的通訊(不同的資料庫連線)

分散式理論知識

CPA理論

CAP由Eric Brewer在2000年PODC會議上提出[1][2],是Eric Brewer在Inktomi[3]期間研發搜尋引擎、分散式web快取時得出的關於資料一致性(consistency)、服務可用性(availability)、分割槽容錯性(partition-tolerance)的猜想:

• 資料一致性(consistency):如果系統對一個寫操作返回成功,那麼之後的讀請求都必須讀到這個新資料;如果返回失敗,那麼所有讀操作都不能讀到這個資料,對呼叫者而言資料具有強一致性(strong consistency) (又叫原子性 atomic、線性一致性 linearizable consistency)[5]

• 服務可用性(availability):所有讀寫請求在一定時間內得到響應,可終止、不會一直等待

• 分割槽容錯性(partition-tolerance):在網路分割槽的情況下,被分隔的節點仍能正常對外服務

Base理論

BASE理論是指,Basically Available(基本可用)、Soft-state( 軟狀態/柔性事務)、Eventual Consistency(最終一致性)。是基於CAP定理演化而來,是對CAP中一致性和可用性權衡的結果。核心思想:即使無法做到強一致性,但每個業務根據自身的特點,採用適當的方式來使系統達到最終一致性。

1、基本可用:指分散式系統在出現故障的時候,允許損失部分可用性,保證核心可用。但不等價於不可用。比如:搜尋引擎0.5秒返回查詢結果,但由於故障,2秒響應查詢結果;網頁訪問過大時,部分使用者提供降級服務,等。

2、軟狀態:軟狀態是指允許系統存在中間狀態,並且該中間狀態不會影響系統整體可用性。即允許系統在不同節點間副本同步的時候存在延時。

3、最終一致性:

系統中的所有資料副本經過一定時間後,最終能夠達到一致的狀態,不需要實時保證系統資料的強一致性。最終一致性是弱一致性的一種特殊情況。BASE理論面向的是大型高可用可擴充套件的分散式系統,通過犧牲強一致性來獲得可用性。ACID是傳統資料庫常用的概念設計,追求強一致性模型。

ACID,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、永續性(Durability)。

柔性事務和剛性事務

柔性事務滿足BASE理論(基本可用,最終一致)

剛性事務滿足ACID理論

本文主要圍繞分散式事務當中的柔性事務的處理方式進行討論。

柔性事務分為

  1. 兩階段型

  2. 補償型

  3. 非同步確保型

  4. 最大努力通知型幾種。 由於支付寶整個架構是SOA架構,因此傳統單機環境下資料庫的ACID事務滿足了分散式環境下的業務需要,以上幾種事務類似就是針對分散式環境下業務需要設定的。

什麼是XA介面

XA是一個分散式事務協議,由Tuxedo提出。XA中大致分為兩部分:事務管理器和本地資源管理器。其中本地資源管理器往往由資料庫實現,比如Oracle、DB2這些商業資料庫都實現了XA介面,而事務管理器作為全域性的排程者,負責各個本地資源的提交和回滾。XA實現分散式事務的原理如下:

什麼是Jta

作為java平臺上事務規範JTA(Java Transaction API)也定義了對XA事務的支援,實際上,JTA是基於XA架構上建模的,在JTA 中,事務管理器抽象為javax.transaction.TransactionManager介面,並通過底層事務服務(即JTS)實現。像很多其他的java規範一樣,JTA僅僅定義了介面,具體的實現則是由供應商(如J2EE廠商)負責提供,目前JTA的實現主要由以下幾種:

1.J2EE容器所提供的JTA實現(JBoss)
2.獨立的JTA實現:如JOTM,Atomikos.這些實現可以應用在那些不使用J2EE應用伺服器的環境裡用以提供分佈事事務保證。如Tomcat,Jetty以及普通的java應用。

基於XA協議的兩階段(2PC)提交

所謂的兩個階段是指:第一階段:準備階段(投票階段)和第二階段:提交階段(執行階段)。

XA一般由兩階段完成,稱為two-phase commit(2PC)。

階段一為準備階段,即所有的參與者準備執行事務並鎖住需要的資源。參與者ready時,向transaction manager彙報自己已經準備好。

階段二為提交階段。當transaction manager確認所有參與者都ready後,向所有參與者傳送commit命令。

如下圖所示:

XA的效能問題

XA的效能很低。一個數據庫的事務和多個數據庫間的XA事務效能對比可發現,效能差10倍左右。因此要儘量避免XA事務,例如可以將資料寫入本地,用高效能的訊息系統分發資料。或使用資料庫複製等技術。

只有在這些都無法實現,且效能不是瓶頸時才應該使用XA。

分散式事物解決方案

分散式事物問題,在網際網路公司比較常見,例如“”分散式事物解決方案 可以使用全域性事物2pc(兩段提交協議)、3pc(三段提交協議),訊息中介軟體、tcc、gts、提供回滾介面、分散式資料庫

使用LCN框架解決分散式事務

什麼是LCN框架

LCN分散式事務框架v4.0 https://www.txlcn.org
"LCN並不生產事務,LCN只是本地事務的搬運工"

框架特點

相容SpringCloud、Dubbo

使用簡單,低依賴,程式碼完全開源

基於切面的強一致性事務框架

高可用,模組可以依賴Dubbo或SpringCloud的叢集方式做叢集化,TxManager也可以做叢集化

支援本地事務和分散式事務共存

事務補償機制,服務故障或掛機再啟動時可恢復事務

LCN框架原理

lcn框架原理

核心步驟

建立事務組 是指在事務發起方開始執行業務程式碼之前先呼叫TxManager建立事務組物件,然後拿到事務標示GroupId的過程。

新增事務組 新增事務組是指參與方在執行完業務方法以後,將該模組的事務資訊新增通知給TxManager的操作。

關閉事務組 是指在發起方執行完業務程式碼以後,將發起方執行結果狀態通知給TxManager的動作。當執行完關閉事務組的方法以後,TxManager將根據事務組資訊來通知相應的參與模組提交或回滾事務。

相關推薦

分散式事務解決方案框架LCN

事物概念 事物特性(ACID) 原子性(A) 所謂的原子性就是說,在整個事務中的所有操作,要麼全部完成,要麼全部不做,沒有中間狀態。對於事務在執行中發生錯誤,所有的操作都會被回滾,整個事務就像從沒被執行過一樣。 一致性(C) 事務的執行必須保證系統的一致性,就拿轉賬

分布式事務解決方案框架LCN

city type 中間件 part 參與者 acid 啟動 msu cat 事物概念事物特性(ACID)原子性(A)所謂的原子性就是說,在整個事務中的所有操作,要麽全部完成,要麽全部不做,沒有中間狀態。對於事務在執行中發生錯誤,所有的操作都會被回滾,整個事務就像從沒被執行

分散式事務 解決資料一致性事務原則與實現:事務、sql事務

事務: 定義:       是以一種可靠、一致的方式,訪問和操作資料庫中資料的程式單元。 原則:      *a、 原子性   * b、一致性  * c、隔離性 &nbs

分散式事務解決方案之訊息最終一致性可靠訊息服務下篇

背景:1.支付成功 通知訂單完成2.訂單完成,通知會計記賬上游訂單服務,必須開放可查詢訂單狀態介面,判斷訊息是否可以傳送下游會計消費成功後,必須回撥訊息服務,ACK操作(約束:冪等性。 例如:訊息id等)流程:訂單服務: 預儲存訊息 -> 訂單完成 ->

使用訊息佇列實現分散式事務-公認較為理想的分散式事務解決方案

  Begin transaction update A set amount=amount-10000 where userId=1; update B set amount=amount+10000 where userId=1; End t

微服務架構的分散式事務解決方案Dubbo分散式事務處理視訊非加密

本人在網上找了好多資料,很多分享的網盤資源中視屏有些加密了無法觀看,經過努力終於找到了一個可以觀看的全部教程。 網盤中包含所有視屏講解,有需要的朋友可儲存在自己網盤,視屏無密碼可線上觀看。 分散式事務是一個繞不過去的挑戰!微服務架構本質上就是分散式服務化架構,微服務架

分散式事務解決方案---------LCN

1.過多的原理我就不一一介紹了,我就用一個例項來展示LCN分散式事務解決方案的應用。 tx-lcn https://gitee.com/wangliang1991/tx-lcn springcloud-demo版本的demo https://github.com/codingapi/

ASP.NET Zero--解決方案結構

ges 檢測 lan auto git png 其他 nan repos 解決方案結構(層) 創建和下載項目後,您將具有如下所示的解決方案結構: 解決方案有8個項目: Core項目包含域層類(如 實體 和 域服務)。 Application項目包含應用

[轉載]使用訊息佇列實現分散式事務-公認較為理想的分散式事務解決方案

前陣子從支付寶轉賬1萬塊錢到餘額寶,這是日常生活的一件普通小事,但作為網際網路研發人員的職業病,我就思考支付寶扣除1萬之後,如果系統掛掉怎麼辦,這時餘額寶賬戶並沒有增加1萬,資料就會出現不一致狀況了。 上述場景在各個型別的系統中都能找到相似影子,比如在電商系統中,當有使用者下單後,除了在訂單表插

聊聊微服務架構及分散式事務解決方案

分散式事務場景如何設計系統架構及解決資料一致性問題,個人理解最終方案把握以下原則就可以了,那就是:大事務=小事務(原子事務)+非同步(訊息通知),解決分散式事務的最好辦法其實就是不考慮分散式事務,將一個大的業務進行拆分,整個大的業務流程,轉化成若干個小的業務流程,然後通過設計補償流程從而考慮最終一致性。什麼是

Spring Cloud分散式事務解決方案

開源專案 我們利用訊息佇列實現了分散式事務的最終一致性解決方案,請大家圍觀。可以參考Github CoolMQ原始碼,專案支援網站: http://rabbitmq.org.cn,最新文章或實現會更新在上面 二 前言 阿里2017雲棲大會《破解世界性技術難題!GTS

更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼第31: 2017年7月最新微服務架構的分散式事務解決方案價值1399

更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼第31: 2017年7月最新微服務架構的分散式事務解決方案價值1399java視訊教程01 課程介紹.wmvjava視訊教程02 解決方案的效果演示(結合支付系統真實應用場景).mp4java

分散式事務解決方案

背景 本地事務 一個單體應用中事務由一個數據庫管理,並且限制在單個程序中的事務. 不涉及多個數據來源. 優點:支援嚴格的ACID,可靠,高效,簡單. 不足:沒有分散式處理能力 隔離的最小單位有資源管理器(資料庫)決定,如果資料庫

2019最新微服務架構的分散式事務解決方案課程 共31課

教程內容:微服務倡導將複雜的單體應用拆分為若干個功能簡單、鬆耦合的服務,這樣可以降低開發難度、增強擴充套件性、便於敏捷開發。當前被越來越多的開發者推崇,很多網際網路行業巨頭、開源社群等都開始了微服務的討論和實踐。Hailo有160個不同服務構成,NetFlix有大約600個服務。國內方面,阿里巴巴、

分散式事務解決方案(二)【基於可靠訊息的最終一致性】

2. 最終一致性(基於可靠訊息) 2.1 訊息傳送的一致性 指產生訊息的業務動作與訊息傳送的一致。(也就是說,如果業務操作成功,那麼由這個業務操作所產生的訊息一定要成功投遞出去,否則就丟訊息) 2.1.1 如何保障訊息傳送一致性 處理方式1

XSS攻擊解決方案之一過濾器

一、XssFilter.java package com.stylefeng.roses.core.xss; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import jav

java微服務架構的分散式事務解決方案

分散式系統架構中,分散式事務問題是一個繞不過去的挑戰。而微服務架構的流行,讓分散式事問題日益突出! 下面我們以電商購物支付流程中,在各大參與者系統中可能會遇到分散式事務問題的場景進行詳細的分析!   如上圖所示,假設三大參與平臺(電商平臺、支付平臺、銀行)的系統都

阿里微服務架構下分散式事務解決方案-GTS

雖然微服務現在如火如荼,但對其實踐其實仍處於初級階段。即使網際網路巨頭的實踐也大多是試驗層面,鮮有核心業務系統微服務化的案例。GTS是目前業界第一款,也是唯一的一款通用的解決微服務分散式事務問題的中介軟體,而且可以保證資料的強一致性。本文將對GTS做出深入解讀。 微服務倡導將複雜的單體應用拆分為若干個功能簡

微服務架構的分散式事務解決方案

分散式系統架構中,分散式事務問題是一個繞不過去的挑戰。而微服務架構的流行,讓分散式事問題日益突出! 下面我們以電商購物支付流程中,在各大參與者系統中可能會遇到分散式事務問題的場景進行詳細的分析! 如上圖所示,假設三大參與平臺(電商平臺、支付平臺、銀行)的系統都做了

阿里巴巴開源分散式事務解決方案 Fescar

Fescar 是 阿里巴巴 開源的 分散式事務中介軟體,以 高效 並且對業務 0 侵入 的方式,解決 微服務 場景下面臨的分散式事務問題。 1. 什麼是微服務化帶來的分散式事務問題? 首先,設想一個傳統