Seata-Go-Server is a highly available server-side component of a distributed transaction solution compatible with Seata (after version 0.5), developed using Golang, by InfiniVision contributed to the Seata open source community.
- High availability, fault-tolerance
- Linear scalability
- Strong consistent metadata storage
The transaction coordinator process, each process contains multiple
A stateless node that provides the correct route to the outside and sends the request to the corresponding
Fragment Leader node.
Elasticell is a distributed Key Value store with strong consistency and reliability to store the metadata.
The performance of Taas is directly proportional to the number of machines. To support this feature, the minimum unit for processing global transactions in Taas is a
Fragment, which sets the number of concurrent global active transactions supported by each
Fragment at startup. Taas samples each
Fragment periodically according to a configurable interval, and Taas will generate a new
Fragment to handle more concurrency as soon as existing system exceeds the saturation ratio, which is also configurable.
Fragment has multiple replication sets and a single Leader, the requests are processed by the Leader. When the Leader fails, the system will generate a new Leader to process the requests. During the election of the new Leader, the
Fragment does not provide services externally---the usual interval is a few seconds.
Taas itself does not store any metadata of transaction, actually they are stored withinElasticell. Elasticell is a distributed KV storage engine compatible with
Redis protocol, it adopts
Raft mechanism to guarantee the strong consistency.
As the system runs, there will be many
Fragments and their copies in the system, which will result in uneven distribution of
Fragment on each machine, especially when the old machine goes offline or the new machine goes online. When Taas starts, it will select 3 nodes as the scheduler, which is responsible for scheduling these
Fragments to ensure that the number of
Fragments and the number of Leaders on each machine are approximately equal. The scheduler will also maintain the number of replications of each
Fragment at the specified amount.
git clone https://github.com/seata/taas.git docker-compose up -d
Seata Service Address
The service listens by default on port 8091, modifying the server address experience corresponding to Seata.
Visit WEB UI
History & Credit
Seata-Go-Server is contributed to the Seata open source community by [InfiniVision] (./proposed-contrib.md#InfiniVision). Prior to Seata's open source, InfiniVision was implementing a distributed transaction solution TaaS (Transaction as a Service). After Seata became open source, InfiniVision modified TaaS to be compatible with Seata and donated it to the Seata open source community.