当前正在从事一个项目,可以就如何为类似于Ebay的Web应用程序实现自动出价系统使用一些建议。

我的问题实际上是处理“自动”功能。最初的想法是,我认为我可以做一个MySQL触发器,但是,我很快了解到触发器不允许您插入/更新触发器表。

我唯一想到的其他真正的解决方案是使用Java在服务器端进行处理,但是,我看到这种实现的时间复杂度很差:

例如

自动出价的工作方式是,在没有达到自动出价限制的情况下,它会创建新的出价项目,而新出价项目比其他用户对指定项目的任何出价高0.01

如果配置了许多用户的自动出价功能,则可能会重复一段时间,并且每次迭代时系统都会进行更新查询,我想这在任何具有真实用户的生产环境中都会变得很慢...

另外,如果我做了服务器端解决方案,则意味着当某些给定的不幸用户发送一次性出价或配置自动出价时,他们将在等待服务器处理此工作之前得到正确的响应。

虽然在这种情况下只创建与最高自动出价限制相对应的出价项目是有意义的,但不幸的是,我确实需要反复执行+0.01的过程才能对自动系统进行实际建模。

那么,有什么想法可以解决这个问题吗?

最佳答案

如果您同时是拍卖系统和自动出价系统的运营商,则根本不需要任何计时器。结果将在您知道所有自动出价限制和手动出价时确定:最高出价胜出,平局通常是更早的出价时间(或您想出的任何方法)。

对于您的服务器,自动出价与正常出价相同,只是用户体验方式不同。您的服务器只需要知道存在哪些出价以及何时添加出价。

您可以例如每次更改实际出价或自动出价限制时,添加并更新有效步骤出价。甚至不需要花费多长时间来处理,结果将是相同的。如果有2位使用者,例如在最后期限前以$ 100k 0.2s的价格出售自动出价,而在最后期限前以0.1s的价格将$ 101k的出价增加到$ 100k,那么您将花费超过0.2s的时间产生1000万个$ 0.01的步骤。但是要回答与大多数竞标者最相关的问题,“我赢了,我需要支付什么?”,您无需等待步骤创建过程结束,只需查看3个竞标就可以了。立即告诉用户3获胜,必须支付10万美元和1美分。

从技术上讲,您甚至不需要在数据库中存储这些步骤,因为您的服务器端代码可以在每次有人希望查看详细的投标过程时从存储的限制和投标中生成这些(确定的)步骤。虽然这似乎不符合您的要求,但可能是一项功能。 (您可以将其称为“压缩”或什至“标准化”)。

对于用户而言,您显然只会显示直到当前时间的最终出价。客户端可以使用计时器自动刷新以使其更加令人兴奋(因为与您相反,他不知道谁会赢),但这与服务器端代码无关。

10-06 11:24