Skip to content

Latest commit

 

History

History
138 lines (102 loc) · 2.67 KB

README_CN.md

File metadata and controls

138 lines (102 loc) · 2.67 KB

easycar

easycar 是什么?

easycar 是一个用go实现的支持两阶段提交协议的分布式事务框架。它的全称是(easy commit and rollback).

更多关于easycar看这篇文章:easycar

架构图

easycar

Features

同时支持协议和事务模式混用

在一组分布式事务中,每个RM可以使用不同的传输协议(HTTP/gRPC),也可以使用不同的事务模式(TCC/Sage...),因此允许RM协议和事务模式的混合使用。

支持并发执行事务

支持分层并发执行每个RM。 对参与的RM设置分层,同一层的RM可以并发调用,一层处理完毕再接下一层。

服务注册和发现

暂时支持etcd和consul。

负责均衡

提供:

  • IPHash
  • ConsistentHash
  • P2C
  • Random
  • R2
  • LeastLoad
  • Bounded

成功的例子

success

失败的例子

failed

状态

global

运行

cp conf.example.yml conf.ymal

docker-compose

docker-compose up -d easycar

修改 conf.yml 文件

## conf
#httpListen: 127.0.0.1:8085
automaticExecution2: false  # 如果是true,easycar 会自动根据第一阶段结果,执行第二阶段commit或者rollback
timeout: 7 #unit of second
server:
  grpc:
    listenOn: 127.0.0.1:8088
    keyFile:   #server key
    certFile:  #server cert
    gateway:
      isOpen: true
      certFile:  #client cert
      serverName:
  http:
    listenOn: 127.0.0.1:8085

db: # easycar server db
  driver: mysql
  mysql:
    dbURL: easycar:easycar@tcp(127.0.0.1:3306)/easycar?charset=utf8&parseTime=True&loc=Local
    maxLifetime: 7200
    maxIdleConns: 10
    maxOpenConns: 20
  mongodb:
    url: mongodb://127.0.0.1:27017/easycar
    minPool: 10
    maxPool: 20

registry: #//配置了注册中心,那么服务启动的时候把服务注册到注册中心
  etcd:
    user: ""
    pass: ""
    hosts:
      - 127.0.0.1:2379
  ## add more

tracing:
  jaegerUrl: http://localhost:14268/api/traces

cron:
  maxTimes: 2   #max retry times when rm is not available
  timeInterval: 1 #unit is minute. it means that the next retry is 1m later, not in strict mode    

执行

go run cmd/main.go

examples

更多例子:examples

todo list

  • Saga
  • TCC
  • XA
  • client
    • client-go
    • client-rust
    • client-php
    • client-python
    • client-java
  • retry
  • registry and discovery
    • etcd
    • consul
  • balancer
  • notify
  • tracing
  • tool
  • more store