常见业务场景:批量给特定用户人群发送消息通知,业务实现?

例1:
直播平台中,我要是订阅某位主播后。之后一旦他开播,服务端就会给粉丝们发送:他的开播消息通知。存在如下两点:

(1) 一位大主播的粉丝都是 10W+、100w+,甚至更多。(需推送的量大)
(2) 保证在开播后的短时间内,消息通知到每一位订阅的粉丝。
(3) 每位用户只发送 1 次通知(不可重复)

例2:
像活动报名平台,一场活动的参加人数大概在几十到几百个人,需要在活动开始前1小时,通知到该场活动下的每一位用户: 提醒他们参加的活动开始时间。存在如下两点:

(1) 活动报名平台,需通知的量不会像直播平台那么大。(需推送的量小一些)
(2) 还是尽量在短时间内,消息通知到每一位活动参与者。
(3) 每位用户只发送 1 次通知(不可重复)

这种业务场景还是比较常见的,大概总结就是:在需要发送通知那一刻开始,尽量在段时间内,批量发送通知消息 到 需要提醒的用户人群。

问:
有sf小伙伴能提下实现思路的没? 谢过 ^_^

阅读 4.8k
4 个回答

最常见的就是扔队列执行,开启多个进程消耗队列

假设你有10w+消息,扔到redis队列中,自己写个消费队列的脚本,用supervisor开启多个进程,来消费这个队列

由于队列的特性,一个任务只能被消费一次,可以很好的解决这个问题

了解过消息队列吗,你可以使用rabbitmq或者kafka之类的消息队列,你可以增加消费者来加大消费速率.或者你直接用redis list 也能实现

这个东西不是很简单吗?
新建一个消息数据表:

主播id消息内容
1message
2message

当用户访问的时候,读取这个主播最新的一条消息,如果有直接显示就行了,还可以设置个过期时间,如果超出这个时间后用户就无法读取这条消息就行了。

不用考虑数据量的大小, 数量只和并发有关.
业务上就是把要发的消息放到队列里面, 然后一个一个消息的处理.
很简单的生产者消费者问题.
嫌不够快, 就增加消费者.
如果是自建的通知系统, 那就看自己的消息通知接口.
如果是用别人家的通知, 类似短信, 微信消息等, 就调用他们的接口.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题