Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

代码都看了,当某台服务器挂了,上面的余票怎么重新分配到剩余服务器上,最关键的地方没写。 #6

Open
MukuroSama opened this issue Nov 16, 2019 · 7 comments

Comments

@MukuroSama
Copy link

No description provided.

@wcp1231
Copy link

wcp1231 commented Nov 20, 2019

不是说通过每台机器上留 buffer 解决吗?比如 100 台机器每台分配 105 张票,这样就有 500 张 buff 票,就能容忍 5 台机器宕机。
最后通过 redis 的统一库存就能保证不会超买这 500 张 buffer 票

@hegw
Copy link

hegw commented Nov 25, 2019

不是说通过每台机器上留 buffer 解决吗?比如 100 台机器每台分配 105 张票,这样就有 500 张 buff 票,就能容忍 5 台机器宕机。
最后通过 redis 的统一库存就能保证不会超买这 500 张 buffer 票

但是这个逻辑 localSpike.LocalDeductionStock() 是不是会导致少买宕机机器上的余票?

@wcp1231
Copy link

wcp1231 commented Nov 25, 2019

不是说通过每台机器上留 buffer 解决吗?比如 100 台机器每台分配 105 张票,这样就有 500 张 buff 票,就能容忍 5 台机器宕机。
最后通过 redis 的统一库存就能保证不会超买这 500 张 buffer 票

但是这个逻辑 localSpike.LocalDeductionStock() 是不是会导致少买宕机机器上的余票?

为啥会少买?比如 redis 缓存总的票有 10000 张。100 台机器每台分配 105 张票,这样所有机器本地的票加起来有 10500 张,就算一开始就立马挂了两台,本地机器的票加起来也有 10290 张。不会因为挂了两台就只卖 9800 张啊,因为剩下的机器的本地总票比 10000 张还多了 290 张。

本地 LocalDeductionStock 的作用是为了减少不必要的 redis 请求吧,本地的卖完了就不用请求 redis 了。然后因为有负载均衡,所以每台机器的请求应该是均匀的,不会出现一台机器卖完了很久其他机器都还没卖完。

@hegw
Copy link

hegw commented Nov 26, 2019

不是说通过每台机器上留 buffer 解决吗?比如 100 台机器每台分配 105 张票,这样就有 500 张 buff 票,就能容忍 5 台机器宕机。
最后通过 redis 的统一库存就能保证不会超买这 500 张 buffer 票

但是这个逻辑 localSpike.LocalDeductionStock() 是不是会导致少买宕机机器上的余票?

为啥会少买?比如 redis 缓存总的票有 10000 张。100 台机器每台分配 105 张票,这样所有机器本地的票加起来有 10500 张,就算一开始就立马挂了两台,本地机器的票加起来也有 10290 张。不会因为挂了两台就只卖 9800 张啊,因为剩下的机器的本地总票比 10000 张还多了 290 张。

本地 LocalDeductionStock 的作用是为了减少不必要的 redis 请求吧,本地的卖完了就不用请求 redis 了。然后因为有负载均衡,所以每台机器的请求应该是均匀的,不会出现一台机器卖完了很久其他机器都还没卖完。

@wcp1231
你这么说我就明白了,是我理解错了,错将buff票计入了redis缓存总的票,误认为这部分少了。
非常感谢! !!

@Angelof7
Copy link

这种方式和扣减redis库存失败后在服务器上缓存一个库存已消耗光的标志位的方式相比 收益很大么?

@yeongjet
Copy link

这种方式和扣减redis库存失败后在服务器上缓存一个库存已消耗光的标志位的方式相比 收益很大么?

同问 @GuoZhaoran

@younglifestyle
Copy link

我有个疑惑,就是写MQ的时机,我在代码上有看到扣减远端redis,但没有看到扣减MQ的时机。在图片上看到是订单量100连到MQ,这是说本地服务扣减满100后去写MQ嘛?
这里要是本地服务宕机,那不是数据就出现不一致了?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants