数据上报服务 Postbe

简介

Postbe 可以保存 Postbe 客户端上送的数据,并提供基于上送数据的查询功能

应用场景

Postbe 数据录入

保存上送的 Postbe 数据。

Postbe 数据查询

基于主键,查询 Postbe 数据。

常见问题

实现方式

整套系统部署在阿里云环境中,数据上送到 API 端后,API 将数据发送到 Kafka 队列缓存, Data 端消费 Kafka 中的数据,保存在 HBase 中。HBase 的 table rowkey 为 buryingId

数据查询

目前数据保存在 Hbase 中,数据查询接口只能支持以 buryingId 查询,未来考虑将数据同步保存在 Elasticsearch 中,支持多种查询条件。另外会开发一些 MAPREDUCE 程序,将数据处理后保存到数据仓库,提供 OLAP 服务。

性能指标

经过压力测试,目前 API 端的 TPS 指标可以稳定在 600,如果经过进一步调优,API 的 TPS 可以达到 700。

接入流程

步骤 1:Jarvis 账号申请

完成 Jarvis BUser 账号申请,获取包括 app_token 和 app_key 等接入凭证。

具体参考“Jarvis账号申请流程

步骤 2:申请配置 Postbe 权限

  1. 填写以下申请表,其中 “应用代号” 为上送数据中对应的 “appName” 字段

应用中文名

应用代号

环境

app_token

app_key

闪电宝

shandianbao

测试

app-*********************66322e

1398*******************e300

速刷

supay

生产

app-*********************66322e

1398*******************e300

  1. 发送邮件给审核人(charles.huang@huifu.com)申请,并抄送复合人(wenhai.wang@huifu.com)与项目经理

  2. 完成审核、复合后,相关内容将自动转发给配置管理员完成配置

API 文档

请求地址

测试地址:( k8s 环境) http://192.168.25.129:10110 ; (docker 环境) http://192.168.16.210:10110,http://192.168.16.211:10110

生产地址(阿里云):https://jua.cloudpnr.com

数据上报

客户端调用该上送接口后,postbe 数据会保存到阿里云 HBase 中

HTTP Request

POST http://192.168.16.210:10110/api/jpostbeApi/userAction/save

请求参数

header

名称

类型

是否必须

限制

Content-Type

String

application/json

body

名称

类型

是否必须

是否参加验签

描述

batchId

String

包ID ,web或h5端数据规则:<8位随机字符串>-web-<时间戳(unix_timestamp,10位)>

deviceId

String

设备号

appName

String

客户端应用名称

appVersion

String

客户端版本号

channel

String

客户端渠道,市场等

model

String

手机设备型号

sysVersion

String

系统版本号

browserVersion

String

浏览器版本号

extensions

String

扩展字段

appToken

String

客户端jarvis申请的token

sign

String

签名

buryingInfo

Array

埋点数据

sign

1.明文拼接规则

method.toUppercase()+String.join(&,key=value), key)

key为“参加验签字段”的名称,value为对应的值,如果值为空,用””代替,key的顺序按字典表升序排列。

例如:POSTappName=test&appToken=app-a8187ae7-5671-4888-4321-2cc8c4d476ba&appVersion=v2.1.0&batchId=中文&browserVersion=&channel=huawei&deviceId=dsegsgesg&extensions=&model=Iphone7&sysVersion=11.0

2.明文加签规则

见章节“API签名

buryingInfo说明

名称

类型

是否必须

限制

描述

buryingId

String

埋点记录id,web/h5端数据规则:<8位随机字符串>-web-<时间戳(unix_timestamp,10位)>

functionId

String

埋点编号

createTime

String

埋点生成时间(13位时间戳)

customs

String

自定义数据(key和value都为字符串)

请求参数示例

{
"batchId":"中文",
"deviceId": "dsegsgesg",
"appName": "test",
"appVersion": "v2.1.0",
"channel": "huawei",
"model": "Iphone7",
"sysVersion": "11.0",
"sign": "9efe8e9b53ac73ecb8f82225debc69d49eba095c31a69ec57778ccaae48b261a",
"appToken":"app-a8187ae7-5671-4888-4321-2cc8c4d476ba",
"buryingInfo": [
    {
        "functionId": "1000",
        "createTime": "201805071029256",
        "buryingId": "2323desd33",
        "customs": "{\"port\": 90,\"kaka\": \"测试2\"}"
     },
    {
        "functionId": "1002",
        "createTime": "201805071029257 ",
        "buryingId": "21324ssd",
        "customs": "{\"age\": 22,\"userId\": \"55555\"}"
    }
    ]
}

返回参数

名称

类型

是否必须

限制

respCode

String

返回码,90000代码成功

respDesc

String

返回码描述

返回参数示例

{
 "respCode": "90000",
 "respDesc": "成功"
 }

数据查询

客户端调用该上送接口后,postbe 数据会保存到阿里云 HBase 中

HTTP Request

POST http://192.168.16.210:10010/api/jpostbeQuery/userAction/query

请求参数

header

名称

类型

是否必须

限制

Content-Type

String

application/x-www-form-urlencoded

body

名称

类型

是否必须

是否参加验签

描述

buryingId

String

埋点id

appToken

String

客户端Jarvis申请的token

sign

String

签名

签名串生成规则同上

返回参数

名称

类型

是否必须

限制

描述

batchId

String

包ID

deviceId

String

设备号

appName

String

客户端应用名称

appVersion

String

客户端版本号

channel

String

客户端渠道,市场等

model

String

手机设备型号

sysVersion

String

系统版本号

browserVersion

String

浏览器版本号

extensions

String

扩展字段

appToken

String

客户端jarvis申请的token

sign

String

签名

buryingInfo

Array

埋点数据

返回参数示例

{
 "respCode": "90000",
 "respDesc": "成功"
 "data": "{"key":"value"}
 }

返回码

respCode

respDesc

90000

成功

90099

系统异常,请稍后重试

90100

请求信息参数JSON格式解析失败

90101

请求信息参数非空字段为空。

90102

请求信息签名验证未通过。

90103

找不对对应的签名密钥。

90104

请求用户信息无效(此错误消息为jman的报错)。

90105

请求信息权限认证未通过(此错误消息为jman的报错)