GPL
跨平台
Java
软件简介
GTL(Global Transaction Layer)
一、需求目标:
-
提供数据库操作代理
-
提供可共享的持续性的事务操作
-
多数据源支持
-
数据源连接池支持
-
数据库读写分离支持
-
支持异构系统/分布式系统调用
-
长时间未提交事务, 自动超时回滚
-
支持事务嵌套使用
二、协议说明:
交互协议:
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; 如果接口不成功, 则消息为对应状态的错误描述