当前位置: 代码迷 >> Java Web开发 >> 大批量号码过滤的有关问题
  详细解决方案

大批量号码过滤的有关问题

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

------解决方案--------------------
先答问题1:100万,可以考虑分解成多份,比如10份、20份、或者50份,那么每一份的数量就少多了,查询起来应该毫不费力。原因是号码可以天然地分组,而且分组效率很高,所以这种方法是可行的。
------解决方案--------------------
可以考虑存在硬盘嘛,也就是存在服务器,不用存在数据库呀,可以通过hash算法来实现嘛
------解决方案--------------------
通过写本地文件的方式,读取到内存中利用hashmap存储
  相关解决方案