随着硬件、软件、网络等不断发展、完善,互联网已经渗透到了日常生活中的方方面面,在直接赋能原有行业服务的同时也带来了很多新的服务模式,给人们日常生活带来了极大便利。例如:外卖、快递、跑腿等相关业务更是在我们日常生活中随处可见。业务终端经常处在弱网环境下,对连通性、业务处理及时性有很高的要求。
企业要实现优质的服务,通常有2个方式:
完全自研
依赖已有的成熟第三方通道服务
企业可以选择两者取其一或者两个方式并存。
作为中国领先的客户互动和营销科技服务商,极光在行业内深耕多年,有着丰富的行业经验和深厚的技术积累,极光推送为外卖、快递、跑腿等抢单类业务提供了优质稳定的通道服务,帮助开发者快速下发订单、帮助终端设备的使用者实现快速抢单。
那么极光推送是如何实现的呢?
订单抢单的相关诉求
外卖、快递、跑腿类的终端设备通常使用专业的手持设备或者常规的手机。这些设备通常使用的是运营商移动网络,在移动过程中可能出现信号弱甚至信号中断的场景。因此这一类的业务,对于网络连通性有比较高的要求,需要尽量保证能够稳定在线、及时重新在线,以便服务端的业务消息能够及时送达到设备。另外一方面,从相关的业务角度看,开发者有给单一终端设备下发业务消息的场景,也有给特定用户群下发业务消息的场景,例如给一定地理区域范围或者某些类别的用户下发订单消息等等。
极光的优势
极光的推送服务已经有10年左右的历史,给各行各业众多的企业提供服务,有着非常丰富的各种场景的落地实践经验,同时我们也在不断夯实技术,每天处理大量的数据,推送百亿级别的消息,为日活超过4亿的终端用户提供高效、稳定的服务。
极光如何通过技术实现达到赋能的目的
极光推送提供的服务就是要快速的将消息发送给目标设备,并提供专业的数据分析让开发者能够及时了解推送的结果,方便业务运营,通过以下几个方面来达到这个目的:
专业的SDK便于方便集成,高效稳定,满足合规要求。
高效稳定的连接,让消息更加快速的发送到终端设备。
高效的数据访问方式,在大数据量、高并发场景也能够实现快速访问。
大规模集群并行处理,能够满足高并发要求,并且能够应对突增的流量高峰。
多个下发通道的支持,尽量保证消息下发触达到目标终端设备。
专业的数据统计分析,推送结果一目了然,方便开发者进行业务运营。
专业的SDK
当前极光支持多个主流平台的SDK,能够让开发者快速地集成到自身的应用当中,几分钟就可以实现App的推送功能,也能够满足各开发者对SDK体积大小、功耗等方面的要求。在数据采集方面,基于最小化原则,只采集必要的数据,满足相关合规条款的要求,在此基础之上,推送相关的数据例如送达、展示、点击等数据尽量上报,方便数据统计分析。
多个终端接入节点,就近接入
极光推送连接着开发者和终端设备用户,而终端设备上集成极光SDK,那么SDK和极光推送的连接质量就特别重要了。在推送系统架构上,把SDK和极光推送系统连接的部分抽离出来,形成接入网关服务,接入网关服务负责连接终端设备,并将消息分发到指定的SDK连接上,本身并不进行具体的业务逻辑,起到连接和业务中转的功能。接入网关服务部署在全国各个区域,跟核心机房的推送系统主要是通过运营商的骨干网络进行通信,网络质量基本上都很稳定。
SDK首先向推送系统请求获取连接接入网关服务的地址,推送系统根据SDK的相关信息例如IP运营商、IP属地等从接入网关服务的地址列表中,选择最优的接入网关服务地址返回给SDK进行连接。这通常来说会考虑SDK的IP运营商、IP属地、接入网关服务的网络线路例如是否特定线路或者BGP网络、接入网关服务部署地域、接入网关服务本身的负载等等机房方面。尽量让SDK连接到网络线路友好的、距离最近的接入网关服务。
此外,SDK在保持连接方面也有一些相关的工作,综合考虑功耗、流量消耗、连接断开敏感性等因素设置合适的心跳间隔时间,以便及时感知网络断开的情况,进而重新连接到推送系统。为了快速建立连接,采用并行建立连接的方式,以最快的速度建立SDK和推送系统的网络链路。
接入网关服务目前基本上都是对接BGP网络,从而满足从各个运营商网络连接的设备的连接稳定性,同时根据就近连接策略,减少数据在网络传输的时延,尽量保证连接质量。
推送业务数据存储优化
极光推送目前有超过650亿的累计注册用户数据,并且还在持续增长中,除了基础的用户数据,还有用于推送的各个维度的数据,例如标签别名、智能标签、定时任务等等。这么大量级的数据,如何组织数据、存储数据,以便快速访问数据,实现高并发的业务处理,就需要有相应的处理策略来达到这个目的。
按照子业务功能拆分数据,最小化访问数据。每个子业务功能所访问的数据通常来说只是访问用户的一部分数据,其他数据维度往往不需要访问,因此可以从子业务的维度进行数据的拆分并独立存储。例如别名标签、用户在线状态、离线消息等等,通过独立存储数据,能够减少网络IO,减少存储系统过滤不相关数据的处理,降低业务耦合,提升系统的稳定性、可用性和整体性能。
缓存优化。推送任务的及时性要求非常高,并且系统中有大量的推送任务同时进行,因此对数据的访问时延也有很高的要求,以便快速的数据访问。根据数据集的规模和特性、访问时延、总体QPS、存储成本等方面的因素,设计合适的存储结构存储到合适的存储系统中。采用多级缓存的机制,通常来说是基于内存的存储结合基于磁盘的存储,例如使用Redis和PIKA进行存储,也会根据业务适当的使用本地缓存。特别的,针对大数据集群或者big key,采用数据分片处理。
冷热数据分离。我们的系统中有大量的数据,有一些高频访问,也有一些是很少访问甚至基本不访问例如已经长时间不活跃的用户。综合考虑存储成本、访问时延、维护成本,采用不同的存储系统来保存这些数据,高频访问的数据存储在Redis中,低频访问的数据存储在PIKA或者MySQL。
读写分离、一主多从。对于读多写少的场景,可以采用这个策略进行读写业务的隔离,同时通过多个从节点进行读数据,提升系统的并发处理能力、整体吞吐能力。
大规模集群并行处理
推送系统是一个包含多个子业务功能的庞大的系统,在大规模的数据集、大量并发请求的这个场景下,我们把各子业务拆分独立成子系统,构造相关的服务,把业务处理流程化,通过消息驱动串联业务流,各个业务节点/服务并行的处理。我们主要采用MQ或者RPC的方式进行各个服务的调用,异步调用处理为主,少部分使用同步请求处理,一方面解耦业务,另一方面也提升系统整体性能。
推送的各个业务服务集群化部署,每个子服务都是部署多个节点并行处理各个请求,同时为了应对突发的大量请求流量,基于K8S的部署能够快速的实现相关服务的自动扩容,快速处理各个业务请求。
下发通道选择策略优化
当前极光推送系统中,有基于SDK和推送系统长链接的自有通道,也对接了主流的各个设备厂商的推送通道。自有通道由于权限的限制,并不一定能够时时刻刻的保持长链接,但是并没有限制下发频率和下发数量;厂商推送通道使用系统级别的长链接,连通性更加好,但是每个厂商都有自己的消息下发限制规则,例如每日推送配额限制、推送速率限制、单个设备每日营销类消息数量限制等等。
我们根据这些因素选择合适的推送通道进行下发给目标用户,以达到快速把消息送达给目标用户。默认情况下,如果厂商通道能够下发则选择厂商通道下发消息,厂商通道不能够下发例如没有推送配额则使用极光自有通道进行消息下发。也可以选择只通过厂商通道或者只通过极光自有通道下发消息。
专业的数据统计分析
当完成一个消息推送时,极光提供专业的漏斗分析工具,向开发者提供推送耗时、推送结果分析;同时也有推送用户分析、推送消息统计分析等等工具,方便业务运营。
如何处理一个推送请求
当开发者需要发送一个订单消息时,会调用我们的API接口,API服务器接收到请求后将进行权限校验和参数校验,判断推送目标是否存在;然后将消息流转到下游,下游根据参数的目标信息进行判断,如果是推送给单一目标用户,从用户信息服务中获取用户信息;如果是推送给特定标签,从标签服务中获取相关联的目标用户集合,这个过程已经做了相关的优化,即使是大量的用户集合,也能够快速的获取。再根据用户的通道信息流转到指定的下发通道,由下发通道下发给目标设备的用户。
目标设备的用户收到消息后处理相应的业务逻辑,例如订单的处理、抢单等等。
这个过程的处理耗时单推情况下能够200ms内推送到目标设备,具体如下:
API处理耗时:10ms 以内
目标用户选择:单推情况下10ms 以内,多推情况跟目标用户数量有关
厂商通道:10ms以内的数据访问,http请求厂商接口10~40ms
极光自有通道:10ms以内的数据访问,核心机房到达最远的接入机房40ms,接入机房到达目标设备20ms
结 语
通过使用精准、高效、稳定、安全的极光推送服务,将帮助企业有效提升抢单速度,进而有效提升客户触达效率和互动需求。期待通过使用极光推送服务,帮助您实现快速增长。
关于极光
极光(Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的客户互动和营销科技服务商。成立之初,极光专注于为企业提供稳定高效的消息推送服务,凭借先发优势,已经成长为市场份额遥遥领先的移动消息推送服务商。随着企业对客户触达和营销增长需求的不断加强,极光前瞻性地推出了消息云和营销云等解决方案,帮助企业实现多渠道的客户触达和互动需求,以及人工智能和大数据驱动的营销科技应用,助力企业数字化转型。