一年一度的双十一大促帷幕即将拉开,作为国内第三方推送服务的领导者,极光(JIGUANG)会采取哪些措施来应对高并发推送服务?同时,极光基于 ICE 打造高可用云推送平台,其背后有哪些技术细节值得探索?
为此,我们采访了负责极光开发者服务后台推送系统,大规模高并发分布式云计算体系架构总体设计研发的极光首席架构师王丰,他伴随着极光一路成长,见证了极光推送用户数量从0到数十亿的飞跃,经历了极光推送在架构上的重构、由 VM 全面转向容器化、微服务化等过程,在推送上有自己的见解。
王丰
,毕业于北京航空航天大学,毕业后一直从事软件设计开发工作,曾就职于华为负责电信智能网的业务开发,目前担任极光的首席架构师,总体负责后台技术。
软件系统在开发和演进过程中,经常会经历较大规模的重构,极光推送服务经历过三次较大规模的重构:
-
第一次是从300万用户增加到500万用户的时候,原先的 UDP 替换成 TCP,提高消息传输的可靠性,引入 ICE 框架,减轻基础部分研发工作的压力。
-
第二次是用户数量达到6000万左右的时候,各服务模块间利用 MQ 进行解耦,模块的升级,依赖变得简单清晰。
-
第三次是用户数量达到3亿左右的的时候,各服务模块间缓存优化,采用大规模缓存集群CB,大规模 Redis 集群,内存规模 T 级别。另外硬件架构方面也发生了很大变化,采用万兆交换机、万兆网卡、节点满配内存。
未来,极光在技术架构上由 VM 全面转向容器化、微服务化是出于什么考虑?这一步走的算不算晚呢?
对此,王丰回答说,微服务是一种新的服务设计模式,开发、测试、生产三个环境可以统一,给开发工作带来了极大的灵活性。容器封装了所有必须的库,原来的版本依赖问题不存在了,由单纯的开发、运维两阶段合并成开发运维(DevOps),各方面的效率都将得到很大的提升。
极光研发团队很早就关注容器技术了,那时版本还是0.x。没有着急使用容器技术,主要是考虑到初始版本 bug 比较多,社区反馈问题也很多,所以就一直在等待容器技术相对成熟和稳定之后再使用。
推送提供的是电信级的服务,最重要的指标是稳定、及时;极光的集群规模很大,很多模块都是上百个节点,基础模块出问题将是灾难性的。对于新技术,极光以开放的心态接纳吸收,以小心谨慎的方式验证使用。
在实现推送功能的同时,安全性也是要极光重点考虑的因素。为了保证安全性,极光推送服务没有在数据传输过程中采用双层协议方案。王丰说,安全方面,API 全面切换到 HTTPS。用户接入方面,现在已经提供了对称加密版本。如果还有更高的要求,还可以提供 SSL 连接需求。