设为首页 加入收藏

TOP

58同城高性能移动Push推送平台架构演进之路(三)
2017-10-12 18:09:04 】 浏览:8750
Tags:高性能 移动 Push 推送 平台 架构 演进
动Push推送平台来说,追求达到率是我们最核心的指标,没有之一。因此在Android方面,我们融合了多个第三方推送平台,通过机型控制,对不同的机型使用不同通道,进一步提升推送到达率。AndroidProvider层进行消息推送策略的控制,先推送一通道,根据此推送通道ACK情况,是否继续推送其他通道。推送多个Push通道,会出现推送消息重复到达App客户端的情形,此时需要App客户端根据推送消息ID进行去重,收到的重复推送消息忽略处理。

典型性能问题分析解决以及高可用、高性能、高稳定性如何保证

在移动Push推送不断演进的过程中,我们遇到了AndroidProvider并发低的问题,仔细分析,是因为我们采用HTTPS库,由于库中HTTPS的连接实现不是线程安全的,对每个HTTPS的请求都加锁串行化处理,以保证线程的安全性。发现问题后,我们通过在线上增加多进程部署的方式暂时解决,使得我们有足够的时间分析此问题产生的根本原因。经过深入分析,发现原因是我们对HTTPS的库掌握不够,导致加锁粒度过大,通过HTTPS库提供的更小粒度的锁,我们不仅解决了线程不安全的问题,也提升了AndroidProvider的并发度,如图9所示。

图9 HTTPS库细粒度锁实现方式

总之,58同城统一的高性能移动Push推送平台通过无状态化设计和冗余部署等方式确保了推送平台的高可用,通过纯异步、动态多线程的支持提供推送平台的高性能,通过质量保证、多种监控机制(进程监控、语义监控、错误日志监控、数据波动监控等),有问题及时发现处理保证了推送平台的高稳定性。

最后,我要感谢项目组的同学,特别感谢姚劲同学,有了你们持续不断的努力和付出,才有了今天这篇文章;也感谢老婆大人,有你在背后默默的支持,才有了今天这篇文章。


孙玄:58赶集集团系统架构师,技术负责人,技术委员会架构组主任,也是58同城即时通讯、C2C技术负责人,负责58核心系统的架构以及优化工作。分布式系统存储专家,前百度高级工程师,参与社区搜索部多个基础系统的设计与实现。

本文为《程序员》原创文章,未经允许不得转载,订阅2016年《程序员》请点击 http://dingyue.programmer.com.cn

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇(转)如何为你的Viewcontroller瘦身 下一篇【代码笔记】iOS-浮动的云

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目