老师我想问下关于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回答

Cap

2020-02-20

有深处要求的话可以把固定的数量通过接口的方式进行统一管理

0
2
慕少7451463
是否可以详细解释一下呢,实验中用的是一台机器作数量控制,如果是10台,总不能一台写死1000吧,如果去mysql中获取,访问量又太大,感觉还是用redis合适一些呢?cap老师觉得呢
2021-12-19
共2条回复

Cap

2020-02-20

也可以其它扩展的数量为零只放在一台上,其它为零只负责接收接收请求。

0
0

全流程开发 GO实战电商网站高并发秒杀系统

运用架构设计与系统化思维,从容应对不同流量等级的“秒杀”场景

1462 学习 · 443 问题

查看课程