easycar is a distributed transaction framework implemented in go that supports a two-phase commit protocol. Its full name is (easy commit and rollback).
For more information about easycar see this post easycar.
Architecture
Supports both protocol and transaction mode mixing
In a set of distributed transactions, each RM can use a different transport protocol (HTTP/gRPC) and transaction mode ( TCC/Sage...), so it allows a mix of RM protocols and transaction modes.
Support for concurrent execution of transactions
Supports concurrent execution in layers. The participating RMs are layered by the set weights, and RMs in the same layer can be invoked concurrently, and the next layer is processed after one layer is finished.
Service Registration and Discovery
Currently supports etcd and consul.
Client-side load balancing
Support:
- IPHash
- ConsistentHash
- P2C
- Random
- R2
- LeastLoad
- Bounded
cp conf.example.yml conf.ymal
Modify configuration
## conf
automaticExecution2: true #when the first stage of execution ends, it will commit automatically or rollback if it is true
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: mongodb
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
run
go run cmd/main.go
docker-compose
docker-compose up -d easycar
more examples to:examples
- 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