分散式事務有自己的架構語言嗎?TLA +簡介
TLA +是一種正式的規範語言。它是設計系統和演算法的工具,然後以程式設計方式驗證這些系統沒有嚴重錯誤。它是相當於藍圖的軟體。通常用於設計分散式事務系統,亞馬遜等公司普遍使用該語言規範設計他們的分散式事務中介軟體基礎設施。是分散式架構設計語言。
我為什麼要用它?
這是一個簡單的TLA +規範,代表人們交易獨特的專案。你能找到這個bug嗎?
People == {"alice", "bob"} Items == {"ore", "sheep", "brick"} (* --algorithm trade variable owner_of \in [Items -> People] process giveitem \in 1..3 \* up to three possible trades made variables item \in Items, owner = owner_of[item], to \in People, origin_of_trade \in People begin Give: if origin_of_trade = owner then owner_of[item] := to; end if; end process; end algorithm; *) |
這是一個交易案例,為了防止金融詐騙,我們應該檢查Item條目的所有者是否是交易者?但是如果我們執行模型檢查器,我們發現這段程式碼不能完成我們的目標:Alice可以與自己進行專案交易,並且在該過程完成執行之前,通過並行交易,將相同專案交給Bob。然後第一筆交易結算完成,Alice收回專案。我們的演算法在競爭條件下失敗,我們通過TLA+知道了這一點,因為TLA +探索了每個可能的狀態和時間線。
有幾種不同的方法來解決這個問題。但我們的解決方案是否適用於兩個以上的人?在TLA +中,檢查就如同People == {"alice", "bob", "eve"}一樣簡單;如果我們可以一次交易多個專案,它會起作用嗎?variable items \in SUBSET Items;如果有多隻綿羊,礦石和磚塊怎麼辦?amount_owned = [People \X Items -> 0..5;。如果三個人與其他每個玩家交易1個礦石和1個羊,而Eve和Alice交易 0磚那會怎麼樣?如果它處於可能的狀態空間,TLA +將檢查它。
難以使用嗎?
形式方法因其難以達到關鍵系統的價值而聞名。這意味著所有指南都是在讀者正在研究關鍵系統的情況下編寫的,他們必須在內部和外部瞭解TLA +以確保他們的系統不會意外殺死人。
如果對你來說一個危險的錯誤是“有人死了”,那麼是的,形式方法很難。如果一個危險的錯誤是“沒有人死,但我們的客戶真的很生氣,我們不得不花兩週的時間追蹤並修復錯誤”,那麼你需要的小部分TLA +實際上很容易學習。只需找到一個適合初學者的指南,你就可以了。
哪裡是初學者友好指南?
你好!本指南以簡單實用的方式介紹了TLA +的基礎知識。如果您想從頭開始,您可以瞭解我們將在此處介紹的內容。
相關文章
- TXC分散式事務簡介分散式
- 架構設計 | 分散式事務①概念簡介和基礎理論架構分散式
- springcloud微服務分散式雲架構簡介SpringGCCloud微服務分散式架構
- Spring Cloud微服務分散式雲架構簡介SpringCloud微服務分散式架構
- 微服務架構 | 11. 分散式事務微服務架構分散式
- lms框架分散式事務使用簡介框架分散式
- 分散式事務(七)之Seata簡介分散式
- springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- 微服務架構分散式事務管理問題微服務架構分散式
- DTM:Golang中微服務架構的分散式事務框架Golang微服務架構分散式框架
- (一)springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- 微服務架構及分散式事務解決方案微服務架構分散式
- 分散式事務介紹分散式
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- Spring Cloud微服務分散式雲架構-整合專案簡介SpringCloud微服務分散式架構
- Spring Cloud微服務分散式雲架構—整合專案簡介SpringCloud微服務分散式架構
- Spring Cloud微服務分散式雲架構 - 整合專案簡介SpringCloud微服務分散式架構
- (十六)spring cloud微服務分散式雲架構-整合專案簡介SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構-Spring Cloud簡介SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- 分散式事務(一)—分散式事務的概念分散式
- 微服務架構下分散式事務解決方案-hoop(一)微服務架構分散式OOP
- 微服務架構中的分散式事務全面詳解 -DZone微服務微服務架構分散式
- 常用的分散式事務解決方案介紹有多少種?分散式
- 架構師必備的那些分散式事務解決方案!!架構分散式
- KAFKA介紹(分散式架構)Kafka分散式架構
- 微服務架構簡介微服務架構
- (三)springcloud微服務分散式雲架構-SpringCloud整合專案簡介SpringGCCloud微服務分散式架構
- 億級流量架構之分散式事務思路及方法架構分散式
- 微服務架構 | 11.1 整合 Seata AT 模式實現分散式事務微服務架構模式分散式
- Swift 程式語言首席架構師 Chris Lattner 簡介Swift架構
- 搭建JEESZ分散式架構--訊息中介軟體簡介分散式架構
- (一)springmvc+mybatis+dubbo+zookeeper分散式架構 整合 - 平臺導語簡介SpringMVCMyBatis分散式架構
- spring cloud微服務分散式雲架構 - Spring Cloud整合專案簡介SpringCloud微服務分散式架構
- seata分散式事務AT模式介紹(二)分散式模式
- 微服務架構模式簡介微服務架構模式
- 沒有完美的分散式架構分散式架構