我对服务器如何处理数千个请求有点困惑。我想如果有数千个请求,最终其中两个请求必须同时到达服务器。如果两条消息同时到达它,它只能处理一条,对吗?
我知道,如果多个请求以非常接近但不完全相同的时间到达服务器,那么它可以在完成另一项工作之前非常快速地将工作分配给其他服务器。我不明白的是,当一台机器在完全相同的时刻收到两个请求时会发生什么。
即使两个CPU完全同时处理请求并且它们发生冲突,那么在某个阶段它们会说“我想做某事,但不能与其他事情同时发生”。如果两个 cpu 完全相同地执行此操作,则会有一个预定义的顺序 - 我想数字较低的 CPU 将获得优先级。
这种阻塞只需要一个或两个周期 - 足够长的时间来表示“我声明对此资源的所有权”(称为锁)。然后该块将被解除阻塞,并且另一个 CPU 可以恢复(只要它不想访问相同的数据)。
这实在是过于简单化了。
此外,如果只有一个网卡,两个请求不可能通过网络“同时进入” - 如果它们完全同时进入(在千兆位网络上),则两个请求数据包会发生冲突;两个请求都将在稍微随机的时间后重试,直到没有冲突。
请记住,这是以计算机的时钟速度运行的(例如高达 3ghz),因此“每秒数千”毫无意义。每秒 100 万个请求,将表现为每 1000 个 CPU 周期 1 个请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)