BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

新形势下的推送系统架构升级

| 作者 薛梁 关注 1 他的粉丝 发布于 2016年11月9日. 估计阅读时间: 7 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

一年一度的双十一大促帷幕即将拉开,作为国内第三方推送服务的领导者,极光(JIGUANG)会采取哪些措施来应对高并发推送服务?同时,极光基于 ICE 打造高可用云推送平台,其背后有哪些技术细节值得探索?

为此,我们采访了负责极光开发者服务后台推送系统,大规模高并发分布式云计算体系架构总体设计研发的极光首席架构师王丰,他伴随着极光一路成长,见证了极光推送用户数量从0到数十亿的飞跃,经历了极光推送在架构上的重构、由 VM 全面转向容器化、微服务化等过程,在推送上有自己的见解。

极光推送所经历的重构

软件系统在开发和演进过程中,经常会经历较大规模的重构,极光推送服务经历过三次较大规模的重构:

  • 第一次是从300万用户增加到500万用户的时候,原先的 UDP 替换成 TCP,提高消息传输的可靠性,引入 ICE 框架,减轻基础部分研发工作的压力。
  • 第二次是用户数量达到6000万左右的时候,各服务模块间利用 MQ 进行解耦,模块的升级,依赖变得简单清晰。  
  • 第三次是用户数量达到3亿左右的的时候,各服务模块间缓存优化,采用大规模缓存集群CB,大规模 Redis 集群,内存规模 T 级别。另外硬件架构方面也发生了很大变化,采用万兆交换机、万兆网卡、节点满配内存。

转向容器化、微服务化的推送技术

未来,极光在技术架构上由 VM 全面转向容器化、微服务化是出于什么考虑?这一步走的算不算晚呢?

对此,王丰回答说,微服务是一种新的服务设计模式,开发、测试、生产三个环境可以统一,给开发工作带来了极大的灵活性。容器封装了所有必须的库,原来的版本依赖问题不存在了,由单纯的开发、运维两阶段合并成开发运维(DevOps),各方面的效率都将得到很大的提升。

极光研发团队很早就关注容器技术了,那时版本还是0.x。没有着急使用容器技术,主要是考虑到初始版本 bug 比较多,社区反馈问题也很多,所以就一直在等待容器技术相对成熟和稳定之后再使用。推送提供的是电信级的服务,最重要的指标是稳定、及时;极光的集群规模很大,很多模块都是上百个节点,基础模块出问题将是灾难性的。对于新技术,极光以开放的心态接纳吸收,以小心谨慎的方式验证使用。

在实现推送功能的同时,安全性也是要极光重点考虑的因素。为了保证安全性,极光推送服务没有在数据传输过程中采用双层协议方案。王丰说,安全方面,API 全面切换到 HTTPS。用户接入方面,现在已经提供了对称加密版本。如果还有更高的要求,还可以提供 SSL 连接需求。

基于 ICE 打造高可用云推送平台

极光研发团队基于 ICE 来打造高可用云推送平台,在扩容缩容、系统配置集中统一、自动负载均衡等方面更加便利,那是不是云推送平台有了 ICE 就一 劳永逸了?

仅仅 ICE 是不够的。

ICE 是一个分布式的网络中间件,提供了通信层的完全封装,能自动处理网络异常,负载均衡,业务部署等基础性的工作,避免在这些地方重复发明轮子,省时省力,让研发人员的工作变得更轻松。

但是,还是需要做一些调整工作,比如负载的调度策略、计划支持客户端语言选择,以及 ICE 对象的设计。推送系统是多种技术结合的综合体系,需要 缓存、需要数据库、需要 MQ 等大量的其它技术配合。

这里可以介绍一下 ICE 的体系架构(下图),这个 C/S 架构左边蓝色代码部分,是通过 IDL 生成的相应平台的接口,各平台下可以直接调用;右边是对应的接口骨架类,用来容纳具体的服务端业务逻辑。

ICE 本身提供的原生服务如 Ice  Grid,它可以管理 Glacier2,极光内部服务节点很多都是在内网,如果需要跨网访问的时候要跨外网,不可能把成千上万节点都给它,可以通过这样做一个流量的转发,就是防火墙穿越。

Ice  Patch2 是一个自动化的部署,有点像交付,它提供专用的服务,把 Server 放在这样一个目录结构里面更新一下,重新计算数值后发通知,所有的节点会全部更新。在更新的过程中,节点可能会停一下或重启。正在处理的请求处理完之后,再重新启动。请求不会在启动和停止之间丢失,因为 ICE 的客户端会把这个请求正常定位到其他正在运行的节点上,客户端的调用是没有感知的。  

像 DBAgent、STC、TagAlias 等集群都用到了 ICE,在研发过程中能节省不少精力,例如不需要从 Socket 做起,通过 IDL 简化协议设计,提高效率;扩容缩容方便;不用再专门处理容灾;不同语言之间的差异由框架代劳;系统配置集中统一;自动负载均衡,连接池管理等等。

双十一临近,极光在架构上也会做好充分准备,以确保推送服务后台系统平稳运作,主要措施如下:

  • 扩容、优化网络访问、优化内部交换机、核心路由器网络路径和网络带宽。
  • 测试选择一部分云平台,必要时动态扩充服务节点应对峰值,并进行相应的访问控制。

在开发极光推送服务过程中的一些感悟

极光在短短五年时间里,聚集了海量用户,目前有超过40万款 APP 正在使用极光推送服务,终端覆盖超过50亿,月活跃用户达6亿。极光推送的开发工作一直处于高速推进中,有时一个应用进来就有过亿的用户,连注册模块都需要高并发,这一点显著区别于绝大多数公司,印象尤其深刻。

王丰说,尽管业务量巨大,极光的后台架构开发团队却始终保持小规模,短小精悍。开发采用敏捷模式,快速迭代验证,灰度上线。

最后,王丰也谈了一个比较轻松的关于架构师修炼方面的问题,除了开发能力与设计能力以外,“有效沟通”也是架构师很重要的一项技能。和项目经理、销售、开发、测试人员清楚、精准地表达自己的想法,是不是需要有些技巧?

王丰说,沟通是天天在做的事情,研发团队的需求来自产品经理,和销售商务没有直接的沟通。和产品经理之间主要是反复确认有疑问的需求点,比如 A/B 测试,拿到需求之后,开会讨论、邮件、面对面的沟通业务流程。

而对于开发测试人员来说,详细讲解业务的功能点,接口为什么这么设计、服务模块划分的考虑因素、是否需要采用新的技术、用户将来如何用,不光知其然,还要知其所以然。让每个开发测试人员将自己的角色转换成用户来体验,确保准确的理解业务流程。

嘉宾介绍

王丰,毕业于北京航空航天大学,毕业后一直从事软件设计开发工作,曾就职于华为负责电信智能网的业务开发,目前担任极光的首席架构师,总体负责后台技术。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT