一)自主研发的push服务的特色及优点:mysql
1) 消息回执确认(ack);linux
2) 有效期推送(设置消息的有效期);redis
3) 精准推送(设置设备组别推送);算法
4) 下发任务分解(拆分任务,多进程);sql
5) 长链接心跳(tcp长链接、有限状态机fsm).mongodb
二)工做调优和改进的有:数据库
1) 调整linux系统参数,erlang虚拟机参数以及TCP协议栈网络参数调整;网络
2) Monitor 主要用做系统状态,进程、堆栈信息、节点状态、gc、链接数等,以及服务的拉起脚本;异步
3) 对收发消息的监控,以及对正在发生的消息可取消发送处理的功能;tcp
4) mongodb的主从切换驱动完善;
5) redis支持双写双读及横向扩展(策略);
6) mnesia数据库的定时任务删除过时数据;
7) 消息心跳包的测试及优化调整心跳包大小;
8) redis链接池驱动修改添加池成员超时时间逻辑;
9) 登陆设备和组里设备取交集;
10) ETS和timer 实现相似redis的ttl过时时间策略;
11) token的登陆,RSA加密算法处理,保证token的合法性;
12) 多进程接收处理不一样queue的mq来源的消息;
13) 添加完善推送渠道——厂商渠道推送(小米、华为、oppo、魅族),提升消息到达率;
14)对redis、mongo、mysql主从节点切换的监控;
15) 日活数(UV)的统计、消息总量的统计、每条消息的统计、当前在线设备数的统计;
16)集群机器的动态添加节点,分发策略根据节点数和发送量,按段发送。(分而治之思想)
17) Android推送,地理库(geoip)的添加处理,获取登陆设备的经纬度和城市地域;
18) Rebar服务构建部署;
19) 华为推送的http_client的修改(hackney升级、hackney换成ibowsers);
20) 华为推送的限流大小调整(每秒1000条);
21) 修复http_client的hackney开源驱动的死等的问题;
22) 接口的发送时间统计;
23) Android推送,横向扩容(添加server节点),分布式消息分发策略;
24) 批量存mongo,异步ets批量存储;
25) 修改批量存mongo和redis的策略;
26) 调整修改获取access_token的方式;
27) 调整修改mongo的connection,根据建立索引的过时时间删除记录;
28)接收华为push的回执消息(cowboy);