请求头大小由服务端web server配置文件决定, 默认16k 请求头信息 { "vresion":"1", “system_config_version”:”1”, // 系统配置项版本 “user_config_version”:”1”, // 用户配置项版本 “user_config_data”:”{}”, // 用户配置项数据 “system_config_data”:”{}”, // 系统配置想数据 “report_count”:100, // 上报数据条数,可用来观察客户端HBT数据产生是否异常 “queue_count”:24, // 客户端队列中数据的条数,可用来观察客户端HBT数据产生是否异常 “device_info”:”{}”, // 用户环 境信息 “spare”:” string” // 保留字段 } 2.1 服务端根据HBT请求头中的用户配置项版本号判断是否需要更新用户配置项 2.2 每一次的HBT,同步更新用户环境信息和最后登录时间. 2.3通过HBT上报的report_count和queue_count判断客户端请求池的大小是否异常(超过90%), 如果有异常则记录一条log到表中 2.4客户端上报数据 { "data":[ { “type”:”error_info”, "data":[ { "type":"breakdown", "info":"...", "uid":123123123, "nickname":"张三", "mobile":13838384438 "device_type":"iOS", "device_model":"iPhone 6", "device_version":"9.3.2", "network":"wifi", “timestamp”:13244444444 } ] } ] } 2.5 客户端上报给服务端的数据直接存储到HBT表,根据HBTEntry的type由指定的守护进程去处理.(每次处理都以文件的形式记录下处理的最后一个id, 并更新该条数据的处理状态和处理时间) 2.6 HBT数据表基本结构 字段名 类型 说明 id int 自增列 type varchar HBTEntry数据类型 data text HBTEntry数据 status tinyint 数据处理状态, 0:待处理, 1: 处理成功, 2: 处理失败 add_time int 数据写入时间 process_time int 数据处理花费时间 update_time int 数据最后处理完成时间 create_time int 客户端HBTEntry对象生成时间 // HBT数据表按照月份分片: hbt201609 3 服务端下发数据 3.1 获取用户配置项和系统配置项, 并构建到返回头信息中 头信息 { "vresion":"1", “system_config_version”:”1”, “user_config_version”:”1”, “user_config_data”:”{}”, “system_config_data”:”{}”, “spare”:”string” } 3.2 数据下发相关逻辑: 客户端根据 type调用相关程序处理对应的data数据, 实现伪推送. 每次收到HBT时到redis中查找是否有需要下发的数据, 如果有就下发到客户端, 下发完成后删除redis中已下发的数据. 如果查询出的数据超过100条, 在系统log表中存储一条异常记录 3.3 服务端下发数据结构 { "data":[ { “type”:”” “data”:{} } ], “errorcode”:0, "timestamp":1231231231 }