c*******e 发帖数: 621 | 1 刚才leetcode又当了,正好来讨论下如果这是一道面试题,大家怎么回答?
我先抛砖引玉一下
leetcode oj现在host在www.linode.com
我猜是 单个 6 core 或 4 core服务器,因为这家公司这两种性价比比较高
leetcode 每题有200k左右的submission在3年左右的时间里
所以每分钟的submission大概平均是200k*150题/3/365/24/60=19
以高峰200 submission计
60/(200/6)=2s 每个submission只分到2s左右的时间,我猜勉强够用吧(很粗略的估计)
用的是nginx server,后台是啥就不知道了
一旦你submit,就会得到一个submit id,每隔几秒check一下是不是有结果,直到有结
果为止
这里就有一个疑问?为啥不是submit后直接等结果?而是先拿到submit id,再不停
check?
有一些open source oj是submit后,php直接调用shell script去编译给结果,不需要
给submit id再check.所以我猜leetcode不是采用这种方式,而是submit只负责submit
,另有一个back end程序定时查最新submit,分配任务,任务结束后更新数据库。
如何scale?
小规模scale,我想把队列分成几份,分发到不同服务器就好
如果是几万人同时submit的程序呢?
有啥现成轮子可用?leetcode现在的设计合理么
大家讨论下?呵呵 |
l***4 发帖数: 1788 | 2 关于submit后check
应该是async提交到一个queue
计)
【在 c*******e 的大作中提到】 : 刚才leetcode又当了,正好来讨论下如果这是一道面试题,大家怎么回答? : 我先抛砖引玉一下 : leetcode oj现在host在www.linode.com : 我猜是 单个 6 core 或 4 core服务器,因为这家公司这两种性价比比较高 : leetcode 每题有200k左右的submission在3年左右的时间里 : 所以每分钟的submission大概平均是200k*150题/3/365/24/60=19 : 以高峰200 submission计 : 60/(200/6)=2s 每个submission只分到2s左右的时间,我猜勉强够用吧(很粗略的估计) : 用的是nginx server,后台是啥就不知道了 : 一旦你submit,就会得到一个submit id,每隔几秒check一下是不是有结果,直到有结
|
g**e 发帖数: 6127 | 3 这个数学分析要打回去重做
现成的轮子可以用SWF。二爷会告诉你上kafka + cassandra + spark
leetcode这种in memory workflow本地用个queue然后自己写个简单的flow就行了。隔
几秒check结果太土了,现在都reactive programming时代了
计)
【在 c*******e 的大作中提到】 : 刚才leetcode又当了,正好来讨论下如果这是一道面试题,大家怎么回答? : 我先抛砖引玉一下 : leetcode oj现在host在www.linode.com : 我猜是 单个 6 core 或 4 core服务器,因为这家公司这两种性价比比较高 : leetcode 每题有200k左右的submission在3年左右的时间里 : 所以每分钟的submission大概平均是200k*150题/3/365/24/60=19 : 以高峰200 submission计 : 60/(200/6)=2s 每个submission只分到2s左右的时间,我猜勉强够用吧(很粗略的估计) : 用的是nginx server,后台是啥就不知道了 : 一旦你submit,就会得到一个submit id,每隔几秒check一下是不是有结果,直到有结
|
c*******e 发帖数: 621 | 4
~~真的碰到设计题,peak怎么估?大牛来个估计?
~SWF是啥?
~spark在这里有啥用?据我所知compiler目前没法很好模拟,judge还是只能老老实实用
gcc和javac之类。难道spark只是用来分配下任务?
~你的意思是自己写个server,维护一个queue,算完了直接返回结果比较好? 那啥现
成的轮子能实现呢?自己写的话,并发更难达到要求吧。现在leetcode我猜是php每几
秒check下database,土是土了点,但现成的nginx,php,database(sql也好,nosql也
好)至少并发没问题啊
【在 g**e 的大作中提到】 : 这个数学分析要打回去重做 : 现成的轮子可以用SWF。二爷会告诉你上kafka + cassandra + spark : leetcode这种in memory workflow本地用个queue然后自己写个简单的flow就行了。隔 : 几秒check结果太土了,现在都reactive programming时代了 : : 计)
|
c*******e 发帖数: 621 | 5 理论上应该这样
但还是不理解为什么不等到结果出来了直接给结果,而是现在这样反复check
leetcode这样设计的好处是什么?还是额外加重了服务器负担?
【在 l***4 的大作中提到】 : 关于submit后check : 应该是async提交到一个queue : : 计)
|
z******g 发帖数: 271 | 6 一个IO基本可以忽略,执行时间纯CPU bound的application想优化latency,除了堆机
器有解? |