来源 | Java3y

头图 | CSDN付费下载自视觉中国

自从做了推送以后,每隔一段时间就发现有各大的公司推送事故出现。

你问我做开发的慌不慌,我当然慌得一批了。

为什么经常会有推送事故?

为什么会经常出现类似的事故呢?我认为最主要的原因是:预发和线上的环境是同一套。

众所周知,我们的系统都有几套的环境(比如说本地/线下/预发/线上 环境),其中大多数公司的预发和线上环境数据库是同一套的,只是预发环境调用的是预发环境的接口,线上环境调用的是线上环境的接口而已。

推送这种系统的线上和预发环境其实没多大的区别,因为在底层是调用外部的接口来实现发送的,所以预发和线上环境其实调的都是同一个接口。

科普一下推送是怎么做的

Push推送消息能够在你手机闭屏时(即便你没有打开APP),通过通知来给你推送信息,是一种能够直接触达用户的消息推送。

要给用户下发消息,我们得维护APP 客户端和服务端的「长连接心跳」。这个长连接心跳如果由我们自行来维护,难度会很大,绝大部分的公司不会自建推送服务。

目前我们手机类型分为两种:安卓和iOS。

  • iOS我们默认走的是官方推送的渠道APNS。iOS 在系统层面与苹果 APNs(Apple Push Notification service)服务器建立连接,系统收到 APNs 服务器消息后会帮我们转发到相应的APP上;

  • 安卓由于Google在国内访问不稳定,在国内暂未统一掉推送服务。目前更多的是众多的手机厂商在其定制的系统中也内置了推送功能,如小米、华为等。由于接入成本的问题,也出现了大量的第三方推送服务提供商,比如个推、极光、友盟。

    • 工信部牵头成立的“安卓统一推送联盟”还在期待中。

总结:

  • iOS端我们更多用的是APNs服务器下发推送消息;

  • 安卓端由于接入成本的问题,更多的是接入各个第三方推送服务提供商,第三方推送服务提供商也会接入对应的手机厂商来实现对消息的下发

我们做了什么预防推送事故?

在大多数情况下,推送事故往往是「运营」的推送导致的。运营要推送消息给用户,首先需要圈选一个人群去推送

人群量需要管控:我们在圈选的时候,如果运营圈定的人数大于一个阈值,我们会走邮箱让主管确认是否需要圈选这么一个大的人群去推送。

这块有两个目的:

  1. 首先我们是认为推送的人群应该是精细化的,什么标签的人群应该收到什么的推送。不应该圈定一个庞大的人群去推送同一条文案的消息(新闻APP除外)。

  2. 即便出了事故,也只是一部分用户能收到,而不是全体用户。

在我们的系统是没有全体用户推送的。

在运营圈定人群后,我们会有单独的测试功能去「测试单个用户」是否能正常下发消息,文案链接是否存在问题。

这一个步骤是必须要做的,给用户发出的消息,首先要经过自己的校验。如果确认链接和文案都无问题后,则提交任务,走工单审批后才能发送。

如果在启动之后发现文案/链接存在问题,还可以拦截剩余未发的消息

针对于通知类的消息(技术方推送),我们在预发环境下配置了「白名单」才能收到消息。

线上消息有「去重」的逻辑:

  • 在某段时间内,过滤掉重复消息;

  • 运营类消息推送(圈定人群的方式去下发消息)同一个用户需要相隔一段时间才能下发一次。

虽然说,我们制定了很多的规则去尽量避免事故的发生,但不得不说推送还是一个容易出现事故的功能

我的牛逼已经吹完了,如果某天发现我的推送出了事故,不要@我,当没见过这篇文章就好。

版权声明:本文为CSDN博主「Java3y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/java_3y/article/details/106090620

【End】

CSDN 618程序员购物日:显示器、键盘、蓝牙耳机、扫地机器人、任天堂游戏机、AirPods Pro等超多IT人的心仪好物,全场超低价出售,让1亿程序员买到爽!

更多精彩推荐

☞使用虚幻引擎4年,我想再谈谈他的网络架构
☞算法鼻祖高德纳,82 岁仍在写《计算机程序设计的艺术》
☞程序员晒端午福利,网友:看了你的福利我想摔手机
☞如何成为一名黑客?
☞发送0.55 ETH花费近260万美元!这笔神秘交易引发大猜想
☞京东姚霆:推理能力,正是多模态技术未来亟需突破的瓶颈!
你点的每个“在看”,我都认真当成了喜欢

为什么 PUSH 推送要经常背锅?相关推荐

  1. 为什么PUSH推送要经常背锅?

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 自从做了推送以后,每隔一段时间就发现有各大的公司 ...

  2. 一篇文章带你了解APP PUSH推送机制

    本文为PMCAFF专栏作者卓别木出品 写作目的: 本文主要讲解关于APP PUSH的流程.机制及相关经验,一是为了方便各位可以针对APP迅速制定PUSH消息推送方案,实现0到1的推送功能搭建,二是可以 ...

  3. iPhone 的 Push(推送通知)功能原理浅析

    第一部分:Push原理 (以下绝大多数内容参考自.图片来自iPhone OS Reference Library) 机制简介 Push 的工作机制可以简单的概括为下图 图中, Provider是指某个 ...

  4. 变更数据推送java_idea 团队成员修改工程后push推送

    idea 团队成员修改工程后push推送 当团队成员修改了工程后,可以进行commit和push操作: 比如我们代码里,加了一段输出: 我们先把项目提交到本地库: 右击项目 -> Git -&g ...

  5. push推送服务设计

    PUSH系统架构设计简述 一.网络传输协议的选择 PUSH系统协议选取: UDP协议实时性更好,但是如何处理安全可靠的传输并且处理不同客户端之间的消息交互是个难题,实现起来过于复杂,那就非TCP协议莫 ...

  6. iPhone的Push(推送通知)功能原理浅析

    来自http://blog.csdn.net/omgle/archive/2011/06/29/6574313.aspx 第一部分:Push原理 (以下绝大多数内容参考自.图片来自iPhone OS ...

  7. 58同城高性能移动Push推送平台架构演进之路

    本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...

  8. 2021-06-10-APP PUSH推送机制

    APP PUSH推送机制 一.APP PUSH定义与价值 二.APP推送分类 三. PUSH流程 四.底层通道说明 五.下发推送 六.数据上报 七.PUSH特点 八.触达率的提升 一.APP PUSH ...

  9. iPhone的Push(推送通知)功能原理浅析[转]

    转自:http://xiaolife.com/wordpress/an-introduce-to-iphone-push/ 第一部分:Push原理 (以下绝大多数内容参考自.图片来自iPhone OS ...

最新文章

  1. 深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数
  2. 总结:ps aux指令
  3. SQL Server timeout分析和总结
  4. Angular单元测试的spyOn使用一例
  5. 详解GPU技术关键参数和应用场景
  6. 充满含金量的一场云原生Meetup,入场券免费发送中……
  7. 数据湖 数据仓库 数据集市_还原数据仓库/数据集市环境的两种方法
  8. 请大家帮忙,帮我看一下.net的这个问题
  9. matlab 曲面拟合,matlab曲面拟合
  10. Android 用代码获取基站号(cell)和小区号(lac)
  11. 准备计算机二级c语言需要多久,计算机二级自学需要准备多久
  12. 百度指数批量查询器,百度指数
  13. 需要使用新应用以打开此mswindowsstore解决办法
  14. 计算机视觉教程2-6:八大图像特效算法制作你的专属滤镜(附Python代码)
  15. win7共享网络的方法简述
  16. 2.try(){}语法含义及用法
  17. spring框架_03
  18. 期刊论文调格式的注意事项
  19. docker-compose 部署mysql一直重启
  20. [微信小程序]--关于获取当前时间的实现

热门文章

  1. AWS 推出长期支持的 OpenJDK 免费分发版本 —— Amazon Corretto
  2. Centos7下Yum安装PHP5.5,5.6,7.0
  3. 漫谈并发编程(三):共享受限资源
  4. 关于android LinearLayout的比例布局(转载)
  5. ImportError: libgdal.so.20: cannot open shared object file: No such file or directory
  6. spark节点安装numpy(在线方式,最简洁方式)
  7. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·011【视图和索引】
  8. leetcode 859 亲密字符串
  9. dp----最少硬币问题
  10. android获取app内存信息,Android 获取内存信息(RAM,ROM)