所以我几乎完成了我的通知系统,就在我即将实施reCAPTCHA之前,我测试了如果我发送垃圾通知会发生什么。
为您提供有关我的通知系统的背景信息。我按时间戳确定最新内容。我从数据库ORDER BY时间戳中检索行。时间戳值是格式为Unix Time的整数。显示通知时,它们是超链接,遵循此URL格式 -
http://test.com/article/id
其中id是表的id,每次提交新文章时,id都会递增。在发送垃圾邮件后,我注意到垃圾邮件通知的网址顺序相反。经过进一步调查后,我发现如果垃圾邮件足够快,则时间戳变量不够准确,并记录多个提交的时间戳相同。
由于我的网站现在流量很低,而且提交的数量不多,这目前不是问题,但如果机会非常小,但如果一条内容与另一条内容同时提交,通知会在错误提交时排名,这是一个小而烦人的错误。
所以我想知道我应该做些什么。我应该解决这个问题,还是这种情况发生的极小可能性。由于reCAPTCHA的实施,垃圾邮件不是问题,但仍有可能偶然发生。
我提出了3种可能的解决方案。我的问题是最有效率的
答案 0 :(得分:1)
鉴于集群中可能存在多个线程甚至多个节点,在不同的表中插入数据,您使用的任何基于时钟的值总是有可能在多个甚至相同的表中重复。
所以我的第一个想法是使用全局id表。您可以使用一个公共content
表,其中包含一个自动递增的主键,所有其他表都是外键,并将其用于排序。
另一方面,按照相同的逻辑,你能在多大程度上确保提交之间的某些固定顺序?很可能两个提交将以与服务器接收相反的顺序提交给数据库。我认为解决这个问题的唯一方法是拥有一个所有请求必须通过的全局网守。如果您正在使用这样的看门人,那么这也是分配订购价值的最佳位置。
总而言之,我认为你不应该坚持完全订购,因为它不存在,除非它是一个高度有序的敏感系统,如交易或投注。否则微秒应该足够好,只要文章评论的通知不在文章本身之前。