Browse Source

Merge branch 'main' into alpha

topic
yedf2 5 years ago
parent
commit
222d069f3f
  1. 46
      .github/workflows/release.yml
  2. 4
      README-cn.md
  3. 8
      README.md
  4. 3
      app/main.go
  5. 2
      bench/http.go
  6. 39
      bench/main.go
  7. 2
      common/db.go
  8. 2
      dtmcli/dtmimp/utils.go
  9. 9
      helper/Dockerfile-release
  10. 8
      helper/build-repo.sh

46
.github/workflows/release.yml

@ -2,7 +2,7 @@ name: Release
on:
create:
tags:
- v*
- 'v*.*.*'
jobs:
release:
@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v1
uses: actions/checkout@v2
- name: Validates GO releaser config
uses: docker://goreleaser/goreleaser:latest
@ -24,14 +24,36 @@ jobs:
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Get the tag name
run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: |
yedf/dtm
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Publish docker
env:
host: 'ubuntu@en.dtm.pub'
dest: '/home/ubuntu'
run: |
echo "${{secrets.DEPLOY_KEY}}" > deploy_key
chmod 600 ./deploy_key
ssh -i deploy_key -o StrictHostKeyChecking=no ${{env.host}} 'cd ${{env.dest}}/dtm && git pull && sudo sh helper/build-repo.sh ${{env.TAG}}'
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./helper/Dockerfile-release
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

4
README-cn.md

@ -119,12 +119,14 @@ DTM是一款golang开发的分布式事务管理器,解决了跨数据库、
### 完整示例
参考[examples/quick_start.go](./examples/quick_start.go)
## 公众号
您可以关注公众号:分布式事务,及时跟踪dtm的最新内容
## 交流群
请加 yedf2008 好友或者扫码加好友,验证回复 dtm 按照指引进群
![yedf2008](http://service.ivydad.com/cover/dubbingb6b5e2c0-2d2a-cd59-f7c5-c6b90aceb6f1.jpeg)
如果您觉得[dtm](https://github.com/yedf/dtm)不错,或者对您有帮助,请赏颗星吧!
欢迎使用[dtm](https://github.com/yedf/dtm),或者通过dtm学习实践分布式事务相关知识,欢迎star支持我们
## 谁在使用
<div style='vertical-align: middle'>

8
README.md

@ -40,9 +40,9 @@ DTM是一款golang开发的分布式事务管理器,解决了跨数据库、
## 与其他框架对比
目前开源的分布式事务框架,暂未看到非Java语言有成熟的框架。而Java语言的较多,有阿里的SEATA、华为的ServiceComb-Pack,京东的shardingsphere,以及himly,tcc-transaction,ByteTCC等等,其中以seata应用最为广泛。
目前开源的分布式事务框架,Java的框架较多,有大厂开源的SEATA、ServiceComb-Pack,shardingsphere,以及个人开源的himly,tcc-transaction,ByteTCC等等,其中以Seata的应用最为广泛。
下面是dtm和seata的主要特性对比:
非Java语言类的,暂未看到除dtm之外的成熟框架,因此这里仅将DTM和Java中最成熟的Seata对比:
| 特性| DTM | SEATA |备注|
|:-----:|:----:|:----:|:----:|
@ -119,12 +119,14 @@ DTM是一款golang开发的分布式事务管理器,解决了跨数据库、
### 完整示例
参考[examples/quick_start.go](./examples/quick_start.go)
## 公众号
您可以关注公众号:分布式事务,及时跟踪dtm的最新内容
## 交流群
请加 yedf2008 好友或者扫码加好友,验证回复 dtm 按照指引进群
![yedf2008](http://service.ivydad.com/cover/dubbingb6b5e2c0-2d2a-cd59-f7c5-c6b90aceb6f1.jpeg)
如果您觉得[dtm](https://github.com/yedf/dtm)不错,或者对您有帮助,请赏颗星吧!
欢迎使用[dtm](https://github.com/yedf/dtm),或者通过dtm学习实践分布式事务相关知识,欢迎star支持我们
## 谁在使用
<div style='vertical-align: middle'>

3
app/main.go

@ -11,7 +11,6 @@ import (
"os"
"strings"
"github.com/yedf/dtm/bench"
"github.com/yedf/dtm/common"
"github.com/yedf/dtm/dtmcli"
"github.com/yedf/dtm/dtmcli/dtmimp"
@ -66,8 +65,6 @@ func main() {
// quick_start 比较独立,单独作为一个例子运行,方便新人上手
examples.QsStartSvr()
examples.QsFireRequest()
case "bench":
bench.StartSvr()
case "dev", "dtmsvr":
default:
// 下面是各类的例子

2
bench/http.go

@ -4,7 +4,7 @@
* license that can be found in the LICENSE file.
*/
package bench
package main
import (
"database/sql"

39
bench/main.go

@ -0,0 +1,39 @@
package main
import (
"fmt"
"github.com/yedf/dtm/common"
"github.com/yedf/dtm/dtmcli"
"github.com/yedf/dtm/dtmcli/dtmimp"
"github.com/yedf/dtm/dtmsvr"
"github.com/yedf/dtm/examples"
"os"
)
var hint = `To start the bench server, you need to specify the parameters:
Available commands:
http start bench server
`
func main() {
if len(os.Args) <= 1 {
fmt.Printf(hint)
return
}
dtmimp.Logf("starting dtm....")
if os.Args[1] == "http" {
fmt.Println("start bench server")
common.MustLoadConfig()
dtmcli.SetCurrentDBType(common.DtmConfig.DB["driver"])
common.WaitDBUp()
dtmsvr.PopulateDB(true)
examples.PopulateDB(true)
dtmsvr.StartSvr() // 启动dtmsvr的api服务
go dtmsvr.CronExpiredTrans(-1) // 启动dtmsvr的定时过期查询
StartSvr()
select {}
} else {
fmt.Printf(hint)
}
}

2
common/db.go

@ -144,7 +144,7 @@ func WaitDBUp() {
defer func() {
sdb.Close()
}()
for _, err := dtmimp.DBExec(sdb, "select 1"); err != nil; { // wait for mysql to start
for _, err = dtmimp.DBExec(sdb, "select 1"); err != nil; { // wait for mysql to start
time.Sleep(3 * time.Second)
_, err = dtmimp.DBExec(sdb, "select 1")
}

2
dtmcli/dtmimp/utils.go

@ -147,7 +147,7 @@ func Logf(fmt string, args ...interface{}) {
// LogRedf 采用红色打印错误类信息
func LogRedf(fmt string, args ...interface{}) {
logger.Errorf(fmt, args)
logger.Errorf(fmt, args...)
}
// FatalExitFunc Fatal退出函数,测试时被替换

9
helper/Dockerfile-release

@ -1,11 +1,14 @@
FROM golang:1.16.6-alpine3.14 as builder
# syntax=docker/dockerfile:1
FROM --platform=$TARGETPLATFORM golang:1.16.6-alpine3.14 as builder
ARG TARGETARCH
ARG TARGETOS
WORKDIR /app/dtm
# RUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
EXPOSE 8080
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" app/main.go && apk add upx && upx main
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags="-s -w" app/main.go
FROM alpine:3.14 as runner
FROM --platform=$TARGETPLATFORM alpine:3.14
COPY --from=builder /app/dtm/main /app/dtm/
ENV IS_DOCKER=1
WORKDIR /app/dtm

8
helper/build-repo.sh

@ -1,8 +0,0 @@
set -x
if [ x$1 == x ]; then
echo please specify version
exit 1
fi
docker build -f helper/Dockerfile-release -t yedf/dtm:latest . && docker push yedf/dtm:latest
docker tag yedf/dtm:latest yedf/dtm:$1 && docker push yedf/dtm:$1
Loading…
Cancel
Save