有一个原有系统,每秒钟生成1000条订单记录;
现在需要开发一个新系统,需要将每条记录取出并推送给其它系统;系统使用http请求将记录通知给其他系统(注意:一条记录,需要按顺序发送3次http请求,此处为同步调用,每个请求处理需要3秒钟,按顺序执行,则该方法共需要9秒钟才能执行结束);
请问?
问题一: 如此高的数据量, 一台4核的cpu服务器,通常最大开启多少个线程用于http发送?
问题二: 按上面的数据,每条记录处理时间需要9秒钟,可以开启多线程,那么一台机器每秒可以完成多少条记录的http请求?
问题三: 部署多少台服务器,可以应对每秒新增1000条记录的需求; 应该按什么思路计算?
问题四:如果是4核CPU,那么开100个线程和开5个线程的执行效果是不是一样,线程多了反而会造成频繁切换线程问题,反而更慢,对不?
如果没介绍清楚,请看图片!!
请问 每秒1000条数据处理, 每条记录处理需要9秒钟,请问需要部署多少服务器?
异步回调模型.所以100个线程和5个线程差别是非常大的.
因为是发起请求后等待io响应3秒.
这个问题本身问题很大.要是后端处理服务器数量够多.
重点压根就不是前面这个发起一个http请求的服务器.而是后台需要处理3秒的服务器.
请问 每秒1000条数据处理,每条记录处理需要9秒钟,请问需要部署多少服务器? 怎么算?
@寒山空明月: 没法算.具体问题具体分析.已知条件总共就这么点.
难道说1000*9=9000台服务器吗.也没说是单线程9秒.还是多线程9秒.
我猜是一个脑筋急转弯.每秒1000个请求.一个请求9秒.也就是说一共需要9000个线程.
然后一台电脑开1500个线程算.那就是6-7台.只需要考虑线程数就行.
问题一:4,四核就4个,开多了就有线程切换。
问题二:什么叫处理?如果是异步模型,可以一次仍一千哇。。。
问题三:9台。通过轮训处理。第一台,1~9s;第二台,2~10s,第9台:9~18,此时第一台空闲,开始18~26s。
问题四:看具体场景,有可能一样,有可能不一样。线程多了,确实会频繁切换。
BTW:这题我觉得更应该直接和面试官沟通,如果是笔试,没太大意思。
问题二: 这个是同步请求的,每条记录需要处理9秒;一个4核cpu服务器,每秒钟即使开启多线程,能处理多少条记录?
问题三: 按照每条记录需要处理9秒钟, 4核cpu服务器,部署9台,就能完成每秒钟1000条记录的发送么?(http发送是同步的,一个记录处理共用9秒)
我这样理解的,不知道对不对?
每秒1000条记录,每条记录需要9秒; 所以9秒钟产生了9000条记录;
4核服务器,如果是cpu运算型线程,好像是推荐的线程数是: 核心数+1;-->不知对不对
但这个题是io运算型,所以开启的线程数是 :核心数*50 以内;-->不知对不对
我们就当他可以开启200个线程吧; 即200个线程同时处理;200个线程处理9秒, 则处理了200条记录;
9秒的时间产生9000记录,9秒每台机器处理200条记录; 9000/200=45台服务器;
这结论正确么?
@寒山空明月: 条件不足,很难有明确的结论。建议直接和面试官讨论。