设计简单的推送通知系统
Posted
技术标签:
【中文标题】设计简单的推送通知系统【英文标题】:Designing Simple Push Notifications System 【发布时间】:2017-04-17 10:52:23 【问题描述】:需要一些关于实施推送通知系统的设计建议。我使用后端 Symfony 3、Doctrine 和 postgres 作为数据库。通知系统将有两种类型的通知: 1. 即时通知 2. 预定通知 即时通知是在后端执行操作并立即推送通知时。例如,在数据库中删除用户时的通知。
计划通知用于尚未触发但将在未来某个已知时间触发的通知。只有到达设定的时间时才会触发通知。例如闹钟。
基于此,我设计了一些简单的表格,其中包含一些模拟数据:
因此,根据上述信息,API 概念是在用户的设备(例如手机)上,它将每 2 分钟运行一次 GET/notifications API。 API 将返回当前日期之前且尚未为该用户关闭的通知。例如,如果 USER2 以 2017 年 4 月 18 日的当前日期执行 GET/通知,它将返回记录 3。
我的问题是这种类型的设计是否可以接受,如果不是传统做法的话?此外,许多用户每 2 分钟运行一次相同的 GET API,是否有可能减慢系统速度?我猜最多有 3000 个用户。
最后,随着通知表中记录的增长,postgres 在执行此 API 时会变慢吗?
谁花时间阅读它,谢谢,我非常感谢任何建议。
【问题讨论】:
您好,我为 realclearpolitics.com 构建了浏览器推送通知系统如果您愿意,我可以指导您完成整个过程以及其中涉及的所有不同技术。 嗨,Abraham,是的,如果你能引导我完成它,那就太棒了! 这是一个漫长的解释过程,因为涉及此设置的所有不同细节。有什么比这些评论区更容易联系您的方式? 【参考方案1】:推送通知。
如果您的客户端设备通过 GET API 调用请求通知,则它不称为推送通知。随着时间的推移,服务器端处理过多不必要的请求将会很繁重,因为所有用户可能都没有那么多通知。
您不应该让您的客户来电。您应该改为将通知推送到客户端。 ios
和android
应用程序可以配置为通过deviceId
和uuid
获取推送通知。向您的移动开发人员询问同样的情况。如今,甚至 html5 浏览器也支持推送通知。
用于存储:
我认为您根本不必将instant push notifications
存储在数据库中,除非您有存储日志的应用程序级别要求。
您应该只存储scheduled notifications
,以便Cron job
可以在通知到期时选择并推送这些通知。
希望这会有所帮助!
【讨论】:
嗨 Jeet 这很有帮助。老实说,推送通知的概念对我来说是全新的。因此,根据您在 CRON 收到通知后推荐的内容,将其推送给用户的最佳方式是什么?例如,我需要使用像谷歌消息这样的服务还是在 Syfmony 中有一种简单的方法来做到这一点? 用于将通知推送到Android
或iOS
等应用程序。 Google
和 Apple
都有特定的 API。应用程序构建将生成一个appId
,在应用程序安装后需要与服务器通信,Google
或Apple
可以通过该Apple
将消息传递给相应的应用程序。移动应用程序开发人员更清楚这一点。我参与了几个项目,所以有一个基本的想法。以上是关于设计简单的推送通知系统的主要内容,如果未能解决你的问题,请参考以下文章