需求:
在一个平台上有着多家企业,企业的边缘应用每个时刻都可能生成异常告警消息,一旦有告警消息,系统应发送给订阅该消息的指定用户,用户可选择订阅每隔多少分钟接收告警消息。
注:每个企业可以添加任意多个用户,用户根据手机号进行区别,用户可以通过微信公众号的H5应用将手机号和微信openid绑定。消息类型包括微信模板消息告警和短信告警。
难点:
每个用户都可以设置告警消息接收间隔,如何实现对每个订阅用户的精准推送?
整体流程:
1、定时任务每隔1分钟执行一次;
2、查询当前分钟的异常记录,并根据公司id进行分组companyAry;
3、遍历companyAry;
4、获取每个公司的所有订阅用户;
5、根据用户的订阅间隔X判断当前是否需要对该用户发送告警消息,如果是,则添加该用户到消息接收者数组中;
6、根据消息接收者数组发送告警消息;
设计思路:
1、首先要确定时间刻度的选择,有两种实现方式:
a.以系统时间为刻度,每天的零点零分为第0分钟,然后根据当前时分计算出当前是1天的第Y分钟,然后遍历用户的订阅间隔X,拿Y对X取余,余数为零,则对该用户发送消息;
b.以系统启动时刻为零刻度T,每个一分钟,T+1,然后每次拿T读X取余,余数为零,则发送消息。此方法的需要格外注意的是:T+1在哪里执行,又存储在哪里,可以单独开一个定时任务执行此操作,该参数可以存储在缓存中。
思考?
当前设计瓶颈在哪?海量用户如何实现?