老师我想问下关于getOne集群和配置的优化问题
来源:12-14 【阶段总结】解决超卖&引入消息队列
阿憨阿憨
2020-02-20
//自增
var sum int64 = 0
//总量
var total int64 = 100000
//锁
var lock sync.Mutex
//计数
var count int64 = 0
//秒杀
func GetOne() bool {
lock.Lock()
defer lock.Unlock()
count += 1
//判断数据是否超限
//该方式可以用来限制秒杀时的请求rabbitMQ的请求量,可以看到通过这里,可以做到每X个请求只能一个才能正确请求rabbitMQ
if count%100 == 0 {
if sum < total {
1.例如上面的var total int64 = 100000
如果我想把它做成可配置化的,把数据都在Redis中,可是Redis的IO不就成了瓶颈了么? 写死在代码里又觉得不太灵活, 请问老师有没有更好的方式.
2.老师,如果我想把getOne这个进程做成分布式的分别放在10台机器里. 可是这样的话,如果每个机器里都有var total int64 = 100000
,这样的话这个集群就没法做限制了,如果把数量平均到每一台机器的话,感觉又太笨了.请问老师这个地方有没更好的方式?
望老师不吝赐教, 谢谢
写回答
2回答
-
有深处要求的话可以把固定的数量通过接口的方式进行统一管理
022021-12-19 -
Cap
2020-02-20
也可以其它扩展的数量为零只放在一台上,其它为零只负责接收接收请求。
00
相似问题