基于阿里云搭建全量push系统

简介: push又称消息推送、消息触达。叫法有很多但目的只有一个,就是通过各种渠道或方式将指定内容告知到指定用户。所以我们也可以称之为通知。

Push:有主动推的意思,实际上就是一个服务端主动推送消息到用户App的一个系统。“苹果之父”乔布斯曾说:“根据大众的需要去设计产品其实是非常难的。因为在很多情况下,人们并不知道自己想要什么,所以需要你去展示给他看。”我感觉这句话用在推送上也是可行的。

今天主要从新闻app产品类型来介绍push系统的搭建与实践。

1.png

2.png

  • 静态全量库,非实时更新,分布式提取
  • 优先级排序(用户活跃度),保证用户体验
  • 常备部分资源,保证及时响应
  • 动态扩容,减少闲置资源

系统整体架构

3.jpg

采用阿里云产品的存储方案

4.jpg

机器复用和阿里云ecs的动态扩容

5.jpg

6.jpg

多播或群发
由兴趣,关系,LBS等部门针对不同人群做的群发push

难点 计算慢:特征工程(小时),特征匹配(分钟),用户设备更新
大批量:任务多,互相挤压,高低优先
频繁:下发条数太多,影响用户体验(push太多)
厂商通道限额

应对
数据架构:上面已经提到过的,hbase+spark
动态扩容:关键指标监控,自动触发扩缩容
混排:特征匹配混排,CTR试投,控制单个用户下发条数
限流器:厂商通道限制
物理隔离:分为重要通道和普通通道

混排与试投

7.jpg

厂商通道限额问题
总配额限制:额度熔断
QPS限制:限流器
单设备配额限制
偶发rt抖动:自动扩容,熔断

三种分布式限流器

8.jpg

短对点/长链接
与APP端的TCP长连接
用于push,IM,配置下发等多类功能

难点 :
高并发连接数(千万级)
低延时需求(消息下发时间短)
大消息量(X十亿级消息数)
高到达率要求:连接稳定,分运营商机房,动态均衡算法
增加在线时长:心跳算法

长连接服务端基本逻辑

9.jpg

批量发送

10.jpg

连接和断开

11.jpg

目录
相关文章
|
SQL 存储 数据挖掘
大模型与数据分析:探索Text-to-SQL(下)
大模型与数据分析:探索Text-to-SQL(下)
1234 4
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(中)
大模型与数据分析:探索Text-to-SQL(中)
1838 0
|
机器学习/深度学习 Shell 算法框架/工具
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
1654 0
|
存储 Java 测试技术
记一次堆内外内存问题的排查和优化
记一次堆内外内存问题的排查和优化
646 0
|
数据可视化 Java 数据库
手把手实现springboot整合flowable,非常简单【附源码.视频】
手把手实现springboot整合flowable,非常简单【附源码.视频】
599 2
|
2月前
|
存储 缓存 搜索推荐
转转千万级用户量消息推送系统的架构演进之路
本文将从0开始讲讲转转千万级用户量消息推送系统的架构演进和迭代过程,以及遇到的常见问题的解法,希望能带给你启发。
190 0
|
存储 Java API
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
|
消息中间件 监控 Java
利用Java构建高效的消息推送系统
利用Java构建高效的消息推送系统
|
消息中间件 算法 Kafka
面试题Kafka问题之Kafka的副本消息同步如何解决
面试题Kafka问题之Kafka的副本消息同步如何解决
245 4
|
算法 Java 索引
算法基础:KMP算法详细详解
算法基础:KMP算法详细详解