只有光头才能变强。
文本已收录至我的GitHub精选文章,欢迎Star:github.com/ZhongFuChen…
自从做了推送以后,每隔一段时间就发现有各大的公司推送事故出现。
你问我做开发的慌不慌,我当然慌得一批了。
为什么会经常出现类似的事故呢?我认为最主要的原因是:预发和线上的环境是同一套。
众所周知,我们的系统都有几套的环境(比如说本地/线下/预发/线上 环境),其中大多数公司的预发和线上环境数据库是同一套的,只是预发环境调用的是预发环境的接口,线上环境调用的是线上环境的接口而已。
推送这种系统的线上和预发环境其实没多大的区别,因为在底层是调用外部的接口来实现发送的,所以预发和线上环境其实调的都是同一个接口。
之前写过一篇关于推送的文章,也算是科普了一把什么是推送消息,有兴趣的同学可以去看看: 三歪带你了解什么是Push消息推送。这次在上面的文章基础上补全一下。
Push推送消息能够在你手机闭屏时(即便你没有打开APP),通过通知来给你推送信息,是一种能够直接触达用户的消息推送
要给用户下发消息,我们得维护APP 客户端和服务端的「长连接心跳」。这个长连接心跳如果由我们自行来维护,难度会很大,绝大部分的公司不会自建推送服务。
目前我们手机类型分为两种:安卓和iOS。
总结:
在大多数情况下,推送事故往往是「运营」的推送导致的。运营要推送消息给用户,首先需要圈选一个人群去推送。
人群量需要管控:我们在圈选的时候,如果运营圈定的人数大于一个阈值,我们会走邮箱让主管确认是否需要圈选这么一个大的人群去推送。
这块有两个目的:
在我们的系统是没有全体用户推送的。
在运营圈定人群后,我们会有单独的测试功能去「测试单个用户」是否能正常下发消息,文案链接是否存在问题。
这一个步骤是必须要做的,给用户发出的消息,首先要经过自己的校验。如果确认链接和文案都无问题后,则提交任务,走工单审批后才能发送。
如果在启动之后发现文案/链接存在问题,还可以拦截剩余未发的消息。
针对于通知类的消息(技术方推送),我们在预发环境下配置了「白名单」才能收到消息。
线上消息有「去重」的逻辑:
虽然说,我们制定了很多的规则去尽量避免事故的发生,但不得不说推送还是一个容易出现事故的功能。
我的牛逼已经吹完了,如果某天发现我的推送出了事故,不要@我,当没见过这篇文章就好。
下面的文章都有对应的原创精美PDF,在持续更新中,可以来找我催更~
如果大家想要实时关注我更新的文章以及分享的干货的话,微信搜索Java3y。
PDF文档的内容均为手打,有任何的不懂都可以直接来问我(公众号有我的联系方式)。