我对服务器如何处理数千个请求感到有些困惑。我想如果有数千个请求,最终其中两个将不得不同时访问服务器。如果两个消息同时命中它,它只能处理一个对吗?
我知道,如果多个请求非常接近但不完全相同,那么它可以在获得另一项工作之前非常快速地将工作分发到其他服务器。我不明白的是,当一台机器在完全相同的时刻收到两个请求时会发生什么。
即使两个 CPU 完全在同一时间处理请求,并且它们发生冲突,那么在某个阶段它们会说“我想做某事,这不能与正在发生的任何事情同时完成”。如果两个 CPU 完全在同一时间执行此操作,则会有一个预定义的顺序 - 我可以想象较低数量的 CPU 将获得优先级。
这种阻塞只需要一两个周期——刚好足以说“我声称拥有这个资源”(称为锁)。然后该块将被解除阻塞,另一个 CPU 可以恢复(只要它不想访问相同的数据)。
这过于简单化了。
此外,如果只有一张网卡,两个请求不可能通过网络“同时进入”——如果它们同时进入,完全(在千兆网络上),那么这两个数据包会发生冲突;两个请求都将在稍微随机的时间后重试,直到没有冲突。
请记住,这是以您计算机的时钟速度运行的(例如高达 3GHz),因此“每秒数千次”根本算不了什么。每秒 100 万个请求,每 1000 个 cpu 周期产生 1 个请求。
| 归档时间: |
|
| 查看次数: |
9276 次 |
| 最近记录: |