4

DTM发布1.8.4 支持零配置启动,brew一键安装

 2 years ago
source link: https://segmentfault.com/a/1190000041226053
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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支持我们。

关注【分布式事务】公众号,获取更多分布式事务相关知识,同时可以加入我们的社群


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK