PCon全球产品创新大会(北京站)来啦~了解最新日程 了解详情
写点什么

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

  • 2016 年 11 月 08 日
  • 本文字数:2459 字

    阅读完需:约 8 分钟

一年一度的双十一大促帷幕即将拉开,作为国内第三方推送服务的领导者,极光(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 测试,拿到需求之后,开会讨论、邮件、面对面的沟通业务流程。

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

嘉宾介绍

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

2016 年 11 月 08 日 18:10
用户头像

发布了 108 篇内容, 共 35.8 次阅读, 收获喜欢 120 次。

关注

评论

发布
暂无评论
发现更多内容

商家要的是增收:用AI来做营销

石云升

28天写作 12月日更

HTTP超时处理

JavaEdge

12月日更

面试官:final、finally、finalize 有什么区别?

老程想双休

Java 程序员 数据结构 分布式 后端

[Pulsar] Producer 流控

Zike Yang

Apache Pulsar 12月日更

架构实战营 4 期第二模块作业

jialuooooo

架构实战营

最好用的 5 款 React 富文本编辑器

蒋川

React 富文本编辑器

20强诞生!2021 OceanBase 数据库大赛决赛酣战在即!

OceanBase 数据库

开源 oceanbase 高校 OceanBase 数据库大赛

复习11

IT蜗壳-Tango

28天写作 12月日更

读《思辨与立场》-05批判性思维发展的四个层级

wood

28天写作 批判性思维 思辨与立场

演绎法、归纳法、辩证法

mtfelix

28天写作

TCP报文发送的那些事

程序员历小冰

网络 TCP/IP 28天写作 12月日更

学生管理系统架构文档

drizzle

「架构实战营」

16.  《重学JAVA》--1.8新日期类

杨鹏Geek

Java 25 周年 28天写作 12月日更

详解PON基础知识:OLT、ONU、ONT和ODN,建议收藏

Ethereal

pon 光纤 弱电工程师

【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南

浩宇天尚

OSS Minio 集群 minio client 12月日更 MINO

GitHub疯传15k+的《SpringBoot+vue全栈开发实战项目》太香了

不想秃头

Java spring 程序员 springboot

React 任务调度

贝壳大前端技术团队

前端 React

分布式锁及其实现

xcbeyond

分布式锁 28天写作 12月日更

Go+ URL 解析教程(5.6)

liuzhen007

28天写作 12月日更

47 K8S之 Ingress资源

穿过生命散发芬芳

k8s 28天写作 12月日更

Prometheus Exporter (二十九)xxx Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更

细节的问题

将军-技术演讲力教练

架构实战营:模块二作业

Geek_93ffb0

「架构实战营」

Turbine

李子捌

微服务 28天写作 12月日更

项目管理-短视频实践(第3天)

Ian哥

拆解 项目管理实践课 PDCA

再见 Xshell~ 这款开源的终端工具逼格更高

老程想双休

Java 程序员 后端 SSH Liunx

保护自己电脑绝对不做黑客肉鸡

喀拉峻

网络安全 安全

面向WEB开发人员的Docker(七):使用 Docker 开发Node应用程序

devpoint

node.js Docker 12月日更

TDSQL前沿技术进展和趋势——数据异常基础理论研究

TDSQL前沿技术进展和趋势——数据异常基础理论研究

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