千万级消息推送系统设计与实战

系统概述
  • 功能: 支持千万级用户的消息推送,包括通知和透传消息,快速触达用户,提升用户留存和活跃度。
  • 接入方式: 通过API接入,实现消息的即时推送。
  • 管理后台: 提供网页端后台,便于应用授权、业务管理、消息管理及数据查看。
基本概念
  • 移动推送: 服务器将信息实时定向送达手机的服务,具备指定接收者和实时性。
推送消息分类
  1. 通知消息: 显示在手机通知栏,适用于多种场景,如新闻、促销、产品信息等。
  2. 透传消息: 直接送达应用,不显示在通知栏,用于应用内业务逻辑,要求APP在线。
推送基本原理
  • PULL方式: 客户端定时查询服务端,考虑轮询频率,避免资源浪费。
  • PUSH方式: 服务器主动推送,客户端被动接收,需维持长连接,实时性强,消耗资源。
  • SMS方式: 通过拦截短信获取信息,成本高,使用较少。
功能介绍
  • 推送形式: 包括通知栏消息、应用内透传消息、点击跳转消息。
  • 推送方式: 支持按用户、设备、模板、条件、定时推送。
推送流程
  1. 客户端SDK通过安全验证连接接入层服务。
  2. 绑定token及用户信息,分库分表存储。
  3. 业务方调用API发起推送请求。
  4. 推送请求写入Kafka队列。
  5. 消费服务查找设备,推送给第三方平台。
  6. 第三方系统推送消息至客户端。
  7. 厂商回调服务端接口,统计触达率。
  8. 客户端SDK回调点击接口,统计点击率。
服务端设计
  • 创建token,缓存应用token。
  • 提供统一接口,屏蔽厂商推送细节。
  • 批量推送接口限制,拆分任务,推送并记录结果。
规划与展望
  • 速率限制: 增加主动退避的速率限制功能。
  • 用户画像对接: 迭代用户画像标签,方便圈选用户群体。
  • 数据漏斗: 增加数据维度,提高监控效率。
  • 机器学习: 结合推送数据,提高召回率。

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

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

相关文章

Linux_网络编程_TCP

服务器客户端模型: client / server brow / ser b / s http p2p socket——tcp 1、模式 C/S 模式 》服务器/客户端模型 server :socket()-->bind()--->listen()-->accept()-->recv()-->close()client :socket()-->conn…

STM32第九课:STM32-基于标准库的42步进电机的简单I/O控制(附电机教程,看到即赚到)

一:步进电机简介 步进电机又称为脉冲电机,简而言之,就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩,步进电机的角位移量与输入的脉冲个数严格成正比…

【计算机网络】tcp协议和upd协议有什么区别

文章目录 前言一、区别TCP(传输控制协议):UDP(用户数据报协议): 二、总结 前言 在网络通信中,传输层协议起着至关重要的作用。它们负责将应用层的数据从一台机器传送到另一台机器。其中&#x…

超越单兵作战:多智能体 Multi-Agent System (MAS)

超越单兵作战:多智能体 Multi-Agent System (MAS) Multi-Agent System 是指一个系统中有多个智能体同时工作的情况。在这样的系统中,每个智能体都具有一定程度的自主性,可以独立执行任务、做决定,并且能够与其他智能体进行交互&a…

STM32的Code、RO-data、RW-data、ZI-data和RAM以及flash的关系

对于刚接触stm32编程的同学来说,通常不知道如何选择合适型号的芯片来开发自己的项目,下面就分析一下多大的片内ram以及flash能符合我们项目的需求。 不知道大家有没有注意到,我们的项目每次编译完成后,都会出现这个Program Size&…

运维团队如何应对动环监控与IT监控分离的挑战

IT与机房动环监控的一体化是当下及未来的必然趋势,这一模式显著节省了运维过程中的时间与成本。一体化平台不仅消除了频繁切换系统的繁琐,更在一个统一界面上实现了多元化的管理运维功能,极大地提升了工作效率。 在机房升级或新建项目中&…

亚马逊卖家告别熬夜!批量定时上下架,自动调价

必用能功三个,不限制上传商品。 大家好,今天来讲下这款erp的定时上下架功能。 打开工具这栏选择智能调价,点击添加智能调价选择店铺,选择定时上架的商品添加也可以全部添加。每个商品的价格都是不同的,可以点击保底价…

windows10开启防火墙,增加入站规则后不生效,还是不能访问后端程序

一、背景: 公司护网要求开启防火墙,开启防火墙后,前后端分离的项目调试受影响,于是增加入站规则开放固定的后台服务端口,增加的mysql端口3306和redis端口6379,别人都可以访问,但是程序的端口808…

Android C++系列:Linux进程(三)

wait/waitpid 僵尸进程: 子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程 孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号 进程init进程,称为init进程领养孤儿进程 #include <sys/types.h> #include <sys/wait.…

力扣7.整数反转的两种算法详解

给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2 ^31, 2 ^31 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 1&#xff1a; …

抖音工具箱功能菜单解析分享

一 支持视频链接 采集/点赞/评论/收藏 二 支持导入 用户id私信 内容自定义 可 关注后私信对方 私信间隔自定义 三 支持多直播间 发言 内容-间隔自定义 五 支持 监听指定用户作品 新发作品 自动 点赞/评论/收藏 六 支持 视频评论实时监控 新发评论自动采集获取 七 智能 暂停…

NLP入门——卷积语言模型的搭建、训练与预测

语言模型建模是针对句子建模&#xff0c;主要分为掩码语言模型和自回归语言模型。 我们从corpus中截取一句话作为例子&#xff0c;这句话是bpe分词后的句子&#xff1a; 1994 年 5 月 17 日 安全 理事会 第 33 77 次 会议 通过 掩码语言模型的主要机制是&#xff1a;例如将33 7…

PostgREST API 安装及基础使用

PostgREST是一个独立的Web服务器&#xff0c;它将PostgreSQL数据库转换为RESTful API。它提供基于基础数据库的结构自定义的API。 PostgREST安装 首先访问Releases PostgREST/postgrest (github.com)&#xff0c;根据安装平台选择下载的源码。比如我现在的设备是Mac但是我的…

删掉此电脑中烦人的百度网盘、WPS、迅雷下载图标(还有导航栏)-win10/11

删掉此电脑的图标 1、首先 搜索 注册表管理器 或者 win R 输入 regedit 2、在红框的地方输入这串路径&#xff08;下2选1&#xff09;&#xff1a; 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\ HKEY_CURRENT_US…

解决Linux中已安装JDK但是java找不到命令问题

报错解释&#xff1a; 这个错误表明即使在Linux系统中安装了Java Development Kit (JDK)&#xff0c;但是系统无法找到java命令。这通常是因为JDK的安装路径没有被加入到环境变量PATH中&#xff0c;导致系统无法在默认的路径下找到java执行程序。 解决方法&#xff1a; 检查J…

【C++】使用C++实现基于Socket的通信

在本文中&#xff0c;我们将详细讨论如何使用C实现基于Socket的通信&#xff0c;并设计一个TLV&#xff08;Type-Length-Value&#xff09;协议用于数据交互。TLV协议因其灵活性和可扩展性&#xff0c;在多种通信协议中被广泛使用&#xff0c;特别是在需要动态定义数据结构的场…

【Axure】产品原型如何在谷歌浏览器中打开

作为一名前端开发来说&#xff0c;在拿到产品的原型图后&#xff0c;如何打开&#xff1f;直接用谷歌浏览器打开&#xff0c;是打不开的&#xff0c;需要安装对应的插件。但是谷歌插件市场在不翻墙的情况下&#xff0c;是没有办法直接打开的&#xff0c;分享一种超级简单的方法…

深入解析RocketMQ的名字服务机制:功能、原理与应用

NameServer 是专为 RocketMQ 设计的轻量级名字服务&#xff0c;它的源码非常精简&#xff0c;八个类 &#xff0c;少于 1000 行代码。 这篇文章&#xff0c; 笔者会从基础概念、Broker 发送心跳包、NameServer 维护路由、Zookeeper vs NameServer 四个模块揭秘名字服务的设计精…

电脑怎样连接打印机?详细步骤告诉你!

在现代办公环境中&#xff0c;打印机是必不可少的设备之一。无论是打印文档、图片还是其他资料&#xff0c;连接打印机都是我们日常工作中的基本操作。然而&#xff0c;不同类型的打印机和连接方式可能会让人感到困惑。本文将介绍电脑怎样连接打印机的3种方法&#xff0c;帮助您…

hnust 1497: 中国象棋中的跳马问题

hnust 1497: 中国象棋中的跳马问题 题目描述 现在棋盘的大小不一定&#xff0c;由p&#xff0c;q给出&#xff0c;并且在棋盘中将出现障碍物&#xff08;限制马的行动&#xff0c;与象棋走法相同&#xff09; 输入 第一行输入n表示有n组测试数据。 每组测试数据第一行输入2个整…