2

假设一个活动门票网站处理数量和并发性,门票分布在不同的服务器和数据库上。

例如,在“server1”上还剩 10 张票,在“server2”上还剩 5 张票。如果同时“User1”(其请求被转发到server1)发送请求预订12张门票,“user2”(其请求被转发到server2)发送请求预订3张门票。“User3”(其请求被转发到 server2)发送预订 2 张门票的请求。

虽然系统中有 15 张门票可用,但 server1 会告诉 user1 有 12 张门票不可用,但 user2 和 user 3 都可以预订门票。这对 user1 来说是不公平的。

关于如何处理这种情况的任何想法?

4

1 回答 1

1

您不能在每个服务器都有自己的票数时执行此操作。您将需要一个中央数据库,每个服务器都可以访问以获取事实来源,或者您将需要一个具有分布式锁定机制的分布式数据库(其核心是相同的,只是具有用于读取的分布式缓存) .

我使用了基于 Apache ZooKeeper 和 Redis 的不错的分布式锁管理器,但您可能应该自己研究以找到适合您特定需求的东西,但它们是一个很好的起点。

于 2018-10-17T02:08:25.627 回答