Global Transaction Layer -


GPL
跨平台
Java

软件简介

GTL(Global Transaction Layer)

一、需求目标:

  1. 提供数据库操作代理

  2. 提供可共享的持续性的事务操作

  3. 多数据源支持

  4. 数据源连接池支持

  5. 数据库读写分离支持

  6. 支持异构系统/分布式系统调用

  7. 长时间未提交事务, 自动超时回滚

  8. 支持事务嵌套使用

二、协议说明:

交互协议:

HTTP(s)    备注: 后期将支持Socket协议

数据交换格式:

JSON     二期使用MsgPack后以二进制流传输

请求协议:

HOST: http(s)://gtl.example.com METHOD: POST Entry: /api 请求参数: call={#接口名称, 如:
beginTransaction} args={#接口参数集合, 要求必须为JSON. 如: {dsId: ‘peizi’}}
ua={#请求方UA,用来识别用户身份. 如: ios_client_ua} sign={#请求签名数据,签名规则见[签名生成算法].}

请求示例

http(s)://gtl.example.com/api?call=beginTransaction&args={dsId: 'peizi'}&ua=ios_client_ua&sign=asdflsadjflkjsafdljlaskjfdl

签名生成算法

const API_UA = "ios_client_ua";const API_SECKEY = API_UA."分配给子系统的签名密钥".API_UA;
$sign = md5( API_SECKEY . call . API_SECKEY . args . API_SECKEY );

响应标准: data 接口返回数据. 默认为 null. 根据业务不同可以为数组 或 其他任意对象 status 接口执行状态; 默认为1: 成功;
失败则为负值; message 接口返回的消息, 默认为: success; 如果接口不成功, 则消息为对应状态的错误描述