Global Transaction Layer
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; 如果接口不成功, 则消息为对应状态的错误描述
评论