加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com.cn/)- 云通信、区块链、物联平台、操作系统、高性能计算!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP协程客户端v0.1 beta版本发布啦!

发布时间:2022-08-10 12:05:29 所属栏目:PHP教程 来源:互联网
导读:介绍 dtm/dtm-client 是分布式事务管理器 DTM 的 PHP 客户端,已支持 TCC模式、Saga、二阶段消息模式的分布式事务模式,并分别实现了与 DTM Server 以 HTTP 协议或 gRPC 协议通讯,该客户端可安全运行于 PHP-FPM 和 Swoole 协程环境中,更是对 Hyperf 做了更
  介绍
  dtm/dtm-client 是分布式事务管理器 DTM 的 PHP 客户端,已支持 TCC模式、Saga、二阶段消息模式的分布式事务模式,并分别实现了与 DTM Server 以 HTTP 协议或 gRPC 协议通讯,该客户端可安全运行于 PHP-FPM 和 Swoole 协程环境中,更是对 Hyperf 做了更加易用的功能支持。【推荐:PHP视频教程】
 
  关于 DTM
  DTM 是一款基于 Go 语言实现的开源分布式事务管理器,提供跨语言,跨存储引擎组合事务的强大功能。DTM 优雅的解决了幂等、空补偿、悬挂等分布式事务难题,也提供了简单易用、高性能、易水平扩展的分布式事务解决方案。
 
  亮点
  极易上手
  零配置启动服务,提供非常简单的 HTTP 接口,极大降低上手分布式事务的难度
  跨语言
  可适合多语言栈的公司使用。方便 Go、Python、PHP、NodeJs、Ruby、C# 等各类语言使用。
  使用简单
  开发者不再担心悬挂、空补偿、幂等各类问题,首创子事务屏障技术代为处理
  易部署、易扩展
  仅依赖 MySQL/Redis,部署简单,易集群化,易水平扩展
  多种分布式事务协议支持
  TCC、SAGA、XA、二阶段消息,一站式解决多种分布式事务问题
  对比
  在非 Java 语言下,暂未看到除 DTM 之外的成熟的分布式事务管理器,因此这里将 DTM 和 Java 中最成熟的开源项目 Seata 做对比:
 
  特性 DTM SEATA 备注
  支持语言 Go、C#、Java、Python、PHP… Java DTM 可轻松接入一门新语言
  存储引擎 支持数据库、Redis、Mongo等 数据库
  异常处理 子事务屏障自动处理 手动处理 DTM 解决了幂等、悬挂、空补偿
  SAGA事务 极简易用 复杂状态机
  二阶段消息 ✓ ✗ 最简消息最终一致性架构
  TCC事务 ✓ ✓
  XA事务 ✓ ✓
  AT事务 建议使用XA ✓ AT 与 XA类似,但有脏回滚
  单服务多数据源 ✓ ✗
  通信协议 HTTP、gRPC Dubbo等协议 DTM对云原生更加友好
  star数量 github stars github stars DTM 从 2021-06-04 发布 0.1版本,发展飞快
  从上面对比的特性来看,DTM 在许多方面都具备很大的优势。如果考虑多语言支持、多存储引擎支持,那么 DTM 毫无疑问是您的首选.
 
  安装
  通过 Composer 可以非常方便的安装 dtm-client
 
 
  composer require dtm/dtm-client
 
  使用时别忘了启动 DTM Server 哦
  配置
  配置文件
  如果您是在 Hyperf 框架中使用,在安装组件后,可通过下面的 vendor:publish 命令一件发布配置文件于 ./config/autoload/dtm.php
 
 
  php bin/hyperf.php vendor:publish dtm/dtm-client
 
  如果您是在非 Hyperf 框架中使用,可复制 ./vendor/dtm/dtm-client/publish/dtm.php 文件到对应的配置目录中。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  use DtmClientConstantsProtocol;
 
  use DtmClientConstantsDbType;
 
   
 
  return [
 
      // 客户端与 DTM Server 通讯的协议,支持 Protocol::HTTP 和 Protocol::GRPC 两种
 
      'protocol' => Protocol::HTTP,
 
      // DTM Server 的地址
 
      'server' => '127.0.0.1',
 
      // DTM Server 的端口
 
      'port' => [
 
          'http' => 36789,
 
          'grpc' => 36790,
 
      ],
 
      // 子事务屏障配置
 
      'barrier' => [
 
          // DB 模式下的子事务屏障配置
 
          'db' => [
 
              'type' => DbType::MySQL
 
          ],
 
          // Redis 模式下的子事务屏障配置
 
          'redis' => [
 
              // 子事务屏障记录的超时时间
 
              'expire_seconds' => 7 * 86400,
 
          ],
 
          // 非 Hyperf 框架下应用子事务屏障的类
 
          'apply' => [],
 
      ],
 
      // HTTP 协议下 Guzzle 客户端的通用配置
 
      'guzzle' => [
 
          'options' => [],
 
      ],
 
  ];
 
  配置中间件
  在使用之前,需要配置 DtmClientMiddlewareDtmMiddleware 中间件作为 Server 的全局中间件,该中间件支持 PSR-15 规范,可适用于各个支持该规范的的框架。
  在 Hyperf 中的中间件配置可参考 Hyperf文档 - 中间件 一章。
 
  使用
  dtm-client 的使用非常简单,我们提供了一个示例项目 dtm-php/dtm-sample 来帮助大家更好的理解和调试。
  在使用该组件之前,也强烈建议您先阅读 DTM 官方文档,以做更详细的了解。
 
  TCC 模式
  TCC 模式是一种非常流行的柔性事务解决方案,由 Try-Confirm-Cancel 三个单词的首字母缩写分别组成 TCC 的概念,最早是由 Pat Helland 于 2007 年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文中提出。
 
  TCC 的 3 个阶段
  Try 阶段:尝试执行,完成所有业务检查(一致性), 预留必须业务资源(准隔离性)
  Confirm 阶段:如果所有分支的 Try 都成功了,则走到 Confirm 阶段。Confirm 真正执行业务,不作任何业务检查,只使用 Try 阶段预留的业务资源
  Cancel 阶段:如果所有分支的 Try 有一个失败了,则走到 Cancel 阶段。Cancel 释放 Try 阶段预留的业务资源。

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读