记录下push推送优化改进点
一)自主研发的push服务的特点及优势:
1) 消息回执确认(ack);
2) 有效期推送(设置消息的有效期);
3) 精准推送(设置设备组别推送);
4) 下发任务分解(拆分任务,多进程);
5) 长连接心跳(tcp长连接、有限状态机fsm).
二)工作调优和改进的有:
1) 调整linux系统参数,erlang虚拟机参数以及TCP协议栈网络参数调整;
2) Monitor 主要用作系统状态,进程、堆栈信息、节点状态、gc、连接数等,以及服务的拉起脚本;
3) 对收发消息的监控,以及对正在发生的消息可取消发送处理的功能;
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);
记录下push推送优化改进点的更多相关文章
- Android push推送消息到达成功率优化
Android push推送消息到达成功率优化 问题:server向client发送消息.未考虑client是否在线,这种消息到达率是非常低的. 第一次优化:使用server离线缓存数据,推断假设cl ...
- 58同城高性能移动Push推送平台架构演进之路
本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...
- 转: 58同城高性能移动Push推送平台架构演进之路
转: http://geek.csdn.net/news/detail/58738 文/孙玄 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需 ...
- iOS8自定义推送显示按钮及推送优化
http://www.jianshu.com/p/803bfaae989e iOS8自定义推送显示按钮及推送优化 字数1435 阅读473 评论0 喜欢2 导语 在iOS8中,推送消息不再只是简单地点 ...
- iPhone的Push(推送通知)功能原理浅析
第一部分:Push原理(以下绝大多数内容参考自.图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhon ...
- 移动端Push推送
移动端Push推送 移动端开发逃不掉要做推送,这里给出服务端一种省时省力的解决方案. iOS:PushSharp.Apple.苹果有自己的推送服务,我们按照规则推送数据就好.这里我选取PushShar ...
- 浅谈push推送的一点感受
在手机已成为生活必不可分的一部分,push服务伴随而来.ios的apns,android随着谷歌退出中国市场,各家在android的推送不断展开.有厂商的推送,如小米.华为.魅族.oppo等,还有中间 ...
- push推送服务设计
PUSH系统架构设计简述 一.网络传输协议的选择 PUSH系统协议选取: UDP协议实时性更好,但是如何处理安全可靠的传输并且处理不同客户端之间的消息交互是个难题,实现起来过于复杂,那就非TCP协议莫 ...
- 为什么PUSH推送要经常背锅?
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 自从做了推送以后,每隔一段时间就发现有各大的公司 ...
随机推荐
- javascript设计模式 第一章 灵活的javascript
javascript 设计模式 第1章 灵活的语言--JavaScript 初级程序员接到一个验证表单功能的任务,需要验证用户名.邮箱.密码等 ** 此文章内容大部分来自 <javascript ...
- OpenCV 64位时 应用程序无法正常启动0x000007b 问题解决
这问题根本不是DirectX问题,不知道网上怎么这么这样的回复.而且也不亲自验证一下.下面将自己花很多时间才解决的方式整理一下. 因为一般情况下你配置的OpenCV加入系统环境变量的都是X86下的bi ...
- linux过滤ip地址
一.系统版本 [root@zabbix-server tmp]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 二.用awk ...
- 开发板tftp:timeout问题
想要从PC上面tftp文件的时候遇到了tftp:timeout的问题: >: tftp -gr gprsapp 192.168.1.38tftp: timeout 检查了网络,可以ping的通P ...
- Idea 代码编辑错误不飘红提示
Power Save Mode 勾选去掉即可
- maven命令解释
打包:mvn package编译:mvn compile编译测试程序:mvn test-compile清空:mvn clean运行测试:mvn test生成站点目录: mvn site生成站点目录并发 ...
- iOS适配整理
iOS12适配问题 1.StatusBar内部结构改变 现象:crash crash log: -[_UIStatusBarIdentifier isEqualToString:]: unrecogn ...
- webpack的配置文件entry与output
在webpack.config.js中entry是唯一入口文件 entry也可以是一个数组 如果是一个数组,会将数组里面的文件一起打包到bundle.js entry也可以是一个对象. 如果outpu ...
- 火车票抢票API 根据乘客的车次与座席要求快速订票出票
火车票抢票API 根据乘客的车次与座席要求快速订票出票:https://www.juhe.cn/docs/api/id/257 1.站站查询 接口地址:http://v.juhe.cn/grabTic ...
- Activity具体解释(生命周期、启动方式、状态保存,全然退出等)
一.什么是Activity? 简单的说:Activity就是布满整个窗体或者悬浮于其它窗体上的交互界面. 在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的A ...