GithubHelp home page GithubHelp logo

seata / fescar-php Goto Github PK

View Code? Open in Web Editor NEW
82.0 8.0 20.0 2.36 MB

Php Implementation For Seata

License: Apache License 2.0

PHP 98.00% ANTLR 2.00%
hyperf php php7 php8 seata transactional transactions seata-php

fescar-php's Introduction

English | 中文

seata Logo

Stable Version Php Version dtm-client License

PHPUnit for Seata-PHP Total Downloads Monthly Downloads

Introduce

Seata is a very mature distributed transaction framework, and is the de facto standard platform for distributed transaction technology in the Java field. Seata-PHP is the implementation version of PHP language in Seata multilingual ecosystem, which realizes the interoperability between Java and PHP, so that PHP developers can also use Seata-PHP to realize distributed transactions.

Before learning about the Seata-PHP, let's first understand what's the Seata

What is Seata?

A distributed transaction solution with high performance and ease of use for microservices architecture.

Distributed Transaction Problem in Microservices

Let's imagine a traditional monolithic application. Its business is built up with 3 modules. They use a single local data source.

Naturally, data consistency will be guaranteed by the local transaction.

Monolithic App

Things have changed in a microservices architecture. The 3 modules mentioned above are designed to be 3 services on top of 3 different data sources (Pattern: Database per service). Data consistency within every single service is naturally guaranteed by the local transaction.

But how about the whole business logic scope?

Microservices Problem

How Seata do?

Seata is just a solution to the problem mentioned above.

Seata solution

Firstly, how to define a Distributed Transaction?

We say, a Distributed Transaction is a Global Transaction which is made up with a batch of Branch Transaction, and normally Branch Transaction is just Local Transaction.

Global & Branch

There are three roles in Seata Framework:

  • Transaction Coordinator(TC): Maintain status of global and branch transactions, drive the global commit or rollback.

  • Transaction Manager(TM): Define the scope of global transaction: begin a global transaction, commit or rollback a global transaction.

  • Resource Manager(RM): Manage resources that branch transactions working on, talk to TC for registering branch transactions and reporting status of branch transactions, and drive the branch transaction commit or rollback.

Model

A typical lifecycle of Seata managed distributed transaction:

  1. TM asks TC to begin a new global transaction. TC generates an XID representing the global transaction.

  2. XID is propagated through microservices' invoke chain.

  3. RM registers local transaction as a branch of the corresponding global transaction of XID to TC.

  4. TM asks TC for committing or rollbacking the corresponding global transaction of XID.

  5. TC drives all branch transactions under the corresponding global transaction of XID to finish branch committing or rollbacking.

Typical Process

For more details about principle and design, please go to Seata wiki page.

Seata-PHP TODO List

  • TCC
  • XA
  • AT
  • SAGA
  • TM
  • RPC communication
  • Transaction anti suspension
  • Null compensation
  • Registration Center
  • Metric monitoring
  • Examples

How to run?

  1. First download seata java and Start the TC service. For the specific process, refer to seata deployment guide Documentation

  2. Run seata-php whith seata-skeleton

How to join us?

Seata-PHP is currently in the construction stage. Welcome colleagues in the industry to join the group and work with us to promote the construction of Seata-PHP! If you want to contribute code to Seata-PHP, you can refer to the code contribution Specification document to understand the specifications of the community, or you can join our community DingTalk group: 44788115 and communicate together!

License

Seata-PHP uses Apache license version 2.0. Please refer to the license file for more information.

fescar-php's People

Contributors

assert6 avatar elrond-g avatar huangzhhui avatar limingxinleo avatar pandaliu-1111 avatar slievrly avatar sy-records avatar vinchangit avatar yunzhiyike avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fescar-php's Issues

seata-php user list

Welcome to use seata-php. To know who is using it, pls append your org info as follow,

Organization:Alibaba (Required)
Location: Hangzhou, Zhejiang, China(Required)
Contact: [[email protected]](mailto:[email protected]) (Optional)
Purpose:used as our fundamental transaction lib (Required)
Registry: zookeeper(Required)
Config: zookeeper(Required)
Version: 1.5.5(Required)
TransactionMode: AT\TCC\SAGA\XA
Com/Org Logo:(Optional)
Thanks again for your participation!

欢迎使用 seata-php,首先感谢你的使用,其次您可以参考下面的样例来提供您的信息以收集使用场景:

* 组织:阿里巴巴(Required)
* 地点:**杭州(Required)
* 联系方式:[email protected](Optional)
* 场景:阿里内部服务化改造(Required)
* 注册中心: zookeeper(Optional)
* 配置中心: zookeeper(Optional)
* 版本: 1.5.5(Optional)
* 事务模式: AT\TCC\SAGA\XA
* 公司图标:(Optional)

再次感谢你的参与!!!

Complete documents.

  • Preface include intro, change log and so on.
  • Agreement document includes code style and develop tools.
  • Develop Guide

Welcome to propose document contents.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.