DTM釋出1.8.4 支援零配置啟動,brew一鍵安裝

葉東富發表於2022-01-05

DTM釋出了最新版本1.8.4,主要更新如下:

  1. 零配置啟動,對新人上手更加友好,不依賴docker、不依賴資料庫,零依賴,零配置直接啟動
  2. 支援homebrew一鍵安裝
  3. 支援自定義子事務請求header
  4. 支援HTTP/gRPC攔截器
  5. 支援自定義服務端和SDK中使用的資料庫表名

零配置啟動

最新版本1.8.4,可以在這個頁面下載相應平臺(支援linux,Mac,windows)的安裝包

https://github.com/dtm-labs/dtm/releases/tag/v1.8.4

解壓後直接執行即可啟動。預設情況下,dtm使用內嵌的boltdb儲存引擎(etcd也使用該儲存引擎),他會在當前目錄下建立dtm.bolt檔案,該檔案儲存了全域性事務進度。

新方式下,使用者不再需要docker、不需要事先安裝資料庫,大大降低新人的上手難度,能夠快速開啟分散式事務體驗之旅。

boltdb儲存引擎下,清理過期資料功能,由社群的楊松林,https://github.com/lsytj0413 貢獻,特別感謝

homebrew 一鍵安裝

為了最大程度的方便開發人員使用dtm,我們還將dtm釋出到了homebrew,您如果在mac上工作,只需要如下一行簡單命令,即可安裝dtm

brew install dtm

這會安裝兩個命令:dtm dtm-qs,通過如下命令執行dtm伺服器:

dtm

然後執行下面命令,即可發起一個最簡單的分散式事務示例,裡面是模擬的是一個跨行轉賬分散式事務例子

dtm-qs

可以從dtm-qs的日誌中看到TransOut,TransIn的日誌,表明這個事務已成功完成

支援自定義子事務請求header

通過設定全域性事務物件中的BranchHeaders,可以讓dtm伺服器將這些header傳遞給每個子事務,該特性可以解決子事務API需要許可權驗證的問題,使用示例如下:

    gidYes := dtmimp.GetFuncName()
    sagaYes := dtmcli.NewSaga(dtmutil.DefaultHttpServer, gidYes)
    sagaYes.BranchHeaders = map[string]string{
        "test_header": "test",
    }
    sagaYes.WaitResult = true
    sagaYes.Add(busi.Busi+"/TransOutHeaderYes", "", nil)
    err := sagaYes.Submit()

在dtm-labs/dtm-examples下,還有更多的例子,包括HTTP和gRPC協議的例子

支援HTTP/gRPC攔截器

dtm的SDK新增了HTTP/gRPC攔截器的支援,如果你需要對相關請求深入的定製,可以通過以下三個攔截器介面,進行定製

func OnBeforeRequest(middleware func(c *resty.Client, r *resty.Request) error)

func OnAfterResponse(middleware func(c *resty.Client, resp *resty.Response) error)

func AddUnaryInterceptor(interceptor grpc.UnaryClientInterceptor)

支援自定義服務端和SDK中使用的資料庫表名

SDK中新增如下函式,允許自定義子事務屏障的表名:

SetBarrierTableName

伺服器端支援自定義全域性事務表和分支事務操作表的表名,配置名稱為:

Store.TransGlobalTable
Store.TransBranchOpTable

專案地址

關於分散式事務更多的理論知識與實踐,可以訪問以下專案和公眾號:

https://github.com/dtm-labs/dtm ,歡迎訪問,並star支援我們。

關注【分散式事務】公眾號,獲取更多分散式事務相關知識,同時可以加入我們的社群

相關文章