我想控制一个用户一次只能投一票的权限,需不需要将每个用户的IP存数据库呢?

蓝血的阿健 发布于 2015/11/08 23:40
阅读 791
收藏 0

我最近在做一个投票系统
由于公司希望投票控制在一人一次。那么我就在考虑,是不是需要控制投票者的IP呢?
我现在的做法是,用容器的application来存放所有的IP的List
但是问题来了,万一我服务器重启了怎么办呢?
所以现在我的问题是,我打算用一张数据表来存放所有的用户IP,如果你访问过了,那么我会先查询application内是否有这个IP,如果没有,那么就查询数据库,如果也没有那么就插入一条IP的记录,并且记录在application中,那么下次再打算投票时,还是会优先访问application,这样也不会去每次都访问数据库。
这么做会不会有效率上的问题呢?当并发量提高的时候,又会怎么样呢?
求高人指导。

加载中
0
ericsoul
ericsoul
是外网投票,还是公司内投票?关于性能考虑,如果真有这方面要求可以考虑,每次启动,从数据库初始化一次数据,写库的话,web端,写消息队列。后台启一个进程,进行数据库写操作。停应用时进行队列空判断,另外再加个watchdog监控这个进程死活进行自动启动。除非操作系统挂了,或者写的进程挂了watchdog起不来这个进程,之后web没挂,或者数据库挂了很久,理论上来讲是不会丢失数据的。
ericsoul
ericsoul
保证投票记录和ip记录在一个事务中的话,其实极小概率的故障导致丢一点数据也没事,大不了出个公告,系统故障,让那部分时间投票的人重新投票。哦,还可以在写消息队列前,写一些文件系统文件,类似mysql的binlog,都写成功了才返回,投票成功。其实要考虑的东西太多了,只能根据实际情况来考虑了。有时候系统要求不太高的情况下,没有必要,进行一些双机热备的设计。
0
xuqingkai
xuqingkai

你多大公司,多大规模的投票啊?

需要考虑这么严重?

哪个防ip投票的不是记录数据库啊,

再说 万一后期需要更改为一个ip最多两票呢,而且每天最多一票呢

用数据库没错!

返回顶部
顶部