国内马拉松报名系统有什么好的优化方案?

2015-11-12 16:18:04 +08:00
 bingdong700

事件背景:这些年重视身体健康的人越来越多了,大多数人选择了跑步这个项目,国内的马拉松赛事也越来越多了。但是仍然供不应求,国内的赛事名额基本上要靠抢。 2015 年长沙马拉松报名系统承受不住压力,网站奔溃,组织方人员居然说是受到黑客攻击,黑客背了好大的黑锅。

现行方案:现在一个普通点的赛事都有两三万名额,大概会招来十来万的访问量(多浏览器多标签同时刷新)在报名时间点蜂拥而至,预报名成功了,然后通过抽签才有机会参加。作为地方赛事的网站报名系统,毕竟没有淘宝的技术实力,也没有 12306 那样的资金实力,不崩溃的话说明没人来抢咯。港马的报名系统技术含量稍微高点,起码不崩溃,他们采用了在线排队方案,访问者能够实时查看人数,轮到你了才能进入填写资料的页面。

我知道,如果有钱有技术,地方赛事的报名系统肯定也能做得很好。但是,摆在眼前的事实是这些网站一年才用一次(天),要考虑性价比。那么,技术上,体验上,该如何优化整改呢?

如:港马和广马不同组别(全程、半程、迷你)是不同时间段来报名,分流缓解压力。

3881 次点击
所在节点    程序员
17 条回复
venster
2015-11-12 16:27:51 +08:00
阿里云租弹性服务器嘛,报名时多组一些,平时就租一台,维持网站运行
domty
2015-11-12 16:33:13 +08:00
楼上说的对,找个国内提供比较好的云服务提供商,负载均衡的问题交给他们去解决,比你自己解决的成本低很多
zingl
2015-11-12 18:49:32 +08:00
问题就是商机,搞出解决方案就可以创业了,专门承接马拉松报名,网站名称:我要跑马
virusdefender
2015-11-12 18:53:53 +08:00
可以写个系统然后开源啊
dphdjy
2015-11-12 19:42:39 +08:00
10w 来说~好像不是很夸张~弹性云~~
dphdjy
2015-11-12 20:21:53 +08:00
收回之前的话~~好像很难~
cevincheung
2015-11-12 20:25:03 +08:00
报名这种东西不是直接 redis 么
dphdjy
2015-11-12 21:06:29 +08:00
@cevincheung 8k/s 好像不够~
cevincheung
2015-11-12 21:07:26 +08:00
@dphdjy 可是还有 cluster 啊
Admstor
2015-11-12 21:13:24 +08:00
别以为什么都能弹性云...
这网站的架构能不能弹起来还是个问题...
metaldudu
2015-11-12 21:21:52 +08:00
地方马拉松应该从机制上改变一下做法,同样可以预报名避免拥堵。
ddou
2015-11-12 21:28:53 +08:00
@zingl 哥们你真逗
dphdjy
2015-11-12 21:39:44 +08:00
刚刚去补了一大堆资料~(没多少技术上的~)

1. 预注册

2. 用户筛选和屏蔽

3. 增加验证码难度剃度

4. 乐观锁 token

5. 延迟或提早填写流程

(话说分布式东西好多~我继续恶补)
master
2015-11-12 21:52:52 +08:00
其实预报抽选的方式还是蛮合理的,是属于欧洲人还是非洲人的问题,而不是谁手快的问题。

如果非要讲究实时性
参照电商抢购的做法 基本信息一般都是建议预先注册 并且完成登录的
这样报名阶段要做的事就很简单 就是选择组别、点击报名

报名阶段可以分多个时间放名额( 举例中的不同组在不同时间其实也挺好的)

对于报名的行为,用户提交后可以交给队列来处理(队列可以有多个来分散压力),然后告知用户稍后来获取结果。这样并发压力就在队列上,而不是数据库事务和锁上了。
dphdjy
2015-11-13 00:44:44 +08:00
@master 队列对内存需求较大~而且反馈慢~被怀疑暗箱操作(以前抢购就是这样)
msg7086
2015-11-13 00:54:57 +08:00
静态资源分开存储,首先就能解决刷不开下拉框的问题。
然后嘛,队列也好怎么也好,都问题不大了。
开几十台机器负责存用户的资料,中间放一台机器负责报名生效,然后由外网服务器向中心服务器提交数据。
做得好点的还可以在中心服务器上集群,序列化请求做成队列,并行化请求做成并发,等等。
优化方法多的是。
SmiteChow
2015-11-13 17:56:50 +08:00
redis 足够了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/235676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX