极光笔记 | 极光PUSH服务助力企业提升抢单速度

news2024/9/29 9:23:25

随着硬件、软件、网络等不断发展、完善,互联网已经渗透到了日常生活中的方方面面,在直接赋能原有行业服务的同时也带来了很多新的服务模式,给人们日常生活带来了极大便利。例如:外卖、快递、跑腿等相关业务更是在我们日常生活中随处可见。业务终端经常处在弱网环境下,对连通性、业务处理及时性有很高的要求。

企业要实现优质的服务,通常有2个方式:

  1. 完全自研

  1. 依赖已有的成熟第三方通道服务

企业可以选择两者取其一或者两个方式并存。

作为中国领先的客户互动和营销科技服务商,极光在行业内深耕多年,有着丰富的行业经验和深厚的技术积累,极光推送为外卖、快递、跑腿等抢单类业务提供了优质稳定的通道服务,帮助开发者快速下发订单、帮助终端设备的使用者实现快速抢单。

那么极光推送是如何实现的呢?

订单抢单的相关诉求


外卖、快递、跑腿类的终端设备通常使用专业的手持设备或者常规的手机。这些设备通常使用的是运营商移动网络,在移动过程中可能出现信号弱甚至信号中断的场景。因此这一类的业务,对于网络连通性有比较高的要求,需要尽量保证能够稳定在线、及时重新在线,以便服务端的业务消息能够及时送达到设备。另外一方面,从相关的业务角度看,开发者有给单一终端设备下发业务消息的场景,也有给特定用户群下发业务消息的场景,例如给一定地理区域范围或者某些类别的用户下发订单消息等等。

极光的优势


极光的推送服务已经有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年,是中国领先的客户互动和营销科技服务商。成立之初,极光专注于为企业提供稳定高效的消息推送服务,凭借先发优势,已经成长为市场份额遥遥领先的移动消息推送服务商。随着企业对客户触达和营销增长需求的不断加强,极光前瞻性地推出了消息云和营销云等解决方案,帮助企业实现多渠道的客户触达和互动需求,以及人工智能和大数据驱动的营销科技应用,助力企业数字化转型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CHAPTER 2 Web HA集群部署 - Heartbeat

Web HA集群部署 - Heartbeat1. Heartbeat 概述1.1 Heartbeat主要组成部分2. 环境依赖2.1 环境及组件软件2.2 关闭firewalld & selinux2.3 配置双机互信,SSH密钥登录​​2.4 同步时间(以主节点时间为准)2.5 配置域名解析3 安装软件3.1 安装…

你有“ChatGPT综合征”吗:想搞钱,或是失业焦虑?

最近互联网圈里有一个“顶流”,ChatGPT上线仅5天,注册用户数就突破100万,今年2月的月活跃用户已经突破了1亿。ChatGPT的热度有增无减,过不了多久,ChatGPT这个词就会从一线城市的写字楼席卷到农村老家的饭桌上。 互联网…

自动化测试难点案例分析,其实自动化你用错方向还不如不用

随着国内企业软件开发及测试水平的提升,许多企业开始尝试开展自动化测试的应用,以提高测试效率和测试质量。虽然在国外自动化测试工具应用已经很普遍,但国内许多企业对于软件自动化测试的理解还停留在表面上,没有深入的理解到企业…

SpringMVC的常用组件和工作流程及部分注解解析

一丶SpringMVC常用的组件 1.前端控制器DispatcherServlet 作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由 DispatcherServlet 来调用其他组件,处理用户的请求 接收请求,响应结果,相当于转发器&#xff…

参考 Promise/A+ 规范和测试用例手写 Promise

前言 这可能是手写promise较清晰的文章之一。 由浅至深逐步分析了原生测试用例,以及相关Promise/A规范。阅读上推荐以疑问章节为切入重点,对比Promise/A规范与ECMAScript规范的内在区别与联系,确定怎样构建异步任务和创建promise实例。然后开…

JavaSE18-面向对象-内部类

文章目录一、局部内部类二、成员内部类三、静态内部类四、匿名内部类一、局部内部类 把类定义在方法中。对象创建格式:直接在定义内部类的方法中创建。如果在该方法外就不能使用该局部内部类了。应用场景:如果需要定义一个在方法中临时使用的类可以使用…

SpringCloud(微服务)学习篇(一)

SpringCloud(微服务)学习篇(一) 1 nacos的下载和配置 1.1 进入官网 nacos官网 1.2 点击nacos➡点击最新稳定版本 1.3 往下翻并点击nacos-server-2.2.0.zip,此时就已经开始下载了 1.4 把下载好的压缩包解压到没有中文路径的目录里面 1.5 修改application.properties文件 1.…

Testlink相关功能使用部分总结

1.首页面(普通用户,测试用例创建用户的权限) 右上角切换具体的项目;页面上方包含主页、用例、测试执行、测试结果;左侧包含测试项目管理、关键字管理、编辑测试用例、搜索测试用例、每用户创建的测试用例;…

Element UI的基本使用

学习来源,传送门 目录创建vue项目Element UI主要的标签Vue router 来动态创建左侧导航栏为何会发生嵌套menu与router的绑定设置默认展开设置默认打开页面创建vue项目 以管理员身份,在选定目录下,使用vue ui 按照正常配置配好,可…

Linux(ubuntu)系统搭建docker下的LNMP环境

系统环境 系统:Ubuntu 18.04.4 LTS x86_64 管理面板:宝塔面板7.9.8 下载镜像 通过面板下载docker和docker-compose 下载完毕后通过docker->镜像->从仓库拉取拉取镜像ubuntu:20.04 或者通过docker pull ubuntu:20.04拉取镜像 通过docker->容…

代码随想录算法训练营第四十一天 | 01背包问题-二维数组滚动数组,416. 分割等和子集

一、参考资料01背包问题 二维 https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html 视频讲解:https://www.bilibili.com/video/BV1cg411g7Y6 01背包问题 一维 https://programmercarl.com/%E8%83%8C%E5…

大功率分流电阻器产品阵容进一步扩大,助力大功率应用小型化

全球知名半导体制造商ROHM(总部位于日本京都市)面向车载、工业设备及白色家电等大功率应用,开发出大功率低阻值分流电阻器“GMR 系列”中额定功率最大的、10W 电阻器“GMR320”。近年来,在车载领域和工业设备领域中,应…

什么是敏捷测试

敏捷 反应快速灵敏。 在敏捷软件开发领域,更注重的以人为核心,迭代,循序渐进的开发方法。相比传统的开发方法,这种方法能更快速的开发,上线,反馈,调整、迭代。以敏捷的姿态去发展产品。 敏捷与…

基于java+swing+mysql员工工资管理系统

基于javaswingmysql员工工资管理系统一、系统介绍二、功能展示1.用户登陆2.员工主要功能3.管理员主要功能三、系统实现1.StudentFrame .java四、其它1.其他系统实现2.获取源码一、系统介绍 该项目功能相对完善,有管理员和普通用户两个角色,分别实现了一…

磷脂酰丝氨酸的作用;CAS:383907-32-2;磷脂酰丝氨酸(phosphatidylserine,PS)

磷脂酰丝氨酸(phosphatidylserine,PS)又称丝氨酸磷脂,二酰甘油酰磷酸丝氨酸,简称PS,是一类普遍存在的磷脂,通常位于细胞膜的内层,磷酯化合物中的磷酸甘油酯类,是细胞膜组…

数字化时代,企业如何通过技术改造传统客户服务模式

B端产品要从流量思维到客户思维上转变,良好的客户服务能够让B端企业走的越远走的越多,当然,对于所有产品或者企业来说,也唯有客户服务才是走的更远更久的保证,优秀的客户服务团队是企业的潜在优质财富。 搭建客服团队…

ATTO 647N-NHS ester,ATTO 647N SE,ATTO 647N NHS酯,适用于单分子检测应用

基础产品数据(Basic Product Data):CAS号:N/A中文名:ATTO 647N-琥珀酰亚胺酯,ATTO 647N-活性酯,ATTO 647N NHS酯英文名:ATTO 647 N-NHS,ATTO647N-NHS,ATTO 64…

为什么转行IT行业都会选择学习Python?

现在学习Python的人越来越多了,很多人都疑惑为什么这么多人转行IT都会选择学Python?为什么学Python要参加Python培训班呢?接下来蛋糕为大家答疑解惑一下吧。 虽然Python已经非常普及,但是大部分的大学都还没有开设Python课程,如果想要学习…

XGBoost学习-应用案例

文章目录一、过拟合:剪枝参数与回归模型调参二、XGBoost模型的保存和调用使用Joblib保存和调用模型三、分类案例:XGB中的样本不均衡问题四、 XGBoost类中的其他参数和功能总结一、过拟合:剪枝参数与回归模型调参 class xgboost.XGBRegressor…

2023前端vue面试题(边面边更)

Vue中key的作用 vue 中 key 值的作用可以分为两种情况来考虑: 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来实现元素切换的时候,如果切换前后含有相同类型的…