大批量号码过滤的问题
需求是同一个手机,一天只能发送的一条短信。(每天发送量大概是20-30万,最高100万。)
我的想法是做一个号码过滤表用来存储已发送的号码,发送之前去查询数据库,发送后号码录入该表。然后每次发送前先读取该表过滤号码,然后再发送短信。问题1.数量比较大的时候效率会很低,比如已发送100万,现在又提交100万,每一个号码都去查数据库对比,100万号码要过滤好久不知道服务器能不能抗得住?问题2.两个人同时提交任务同时去查询数据库,他们之前有的号码是重复的。此时数据库内的号码是空的,他们两个的号码都没有过滤,这样就一个号码一天发送了两条短信。想过用锁的方法来解决这个问题,那么任务只能一个个的提交那效率就太低了,请问下各位有没有办法解决这个问题?3.有考虑过另外一种方法,就是把当天以发送的号码写入内存,当服务器tomcat停止的时候,把内存中的号码写入文件,那么当天重启后可以从文件中读取已发送的号码,就是不知道这样异常停止服务器会不会没有调用写入文件的方法,导致没有过滤到当天已发送号码?4.请问大家有没有更好的方法可以处理这个问题?