我对服务器如何处理数千个请求感到困惑。我想如果有成千上万的请求,最终其中两个必须在同一时间点击服务器。如果有两条消息同时出现,它只能处理一个吗?
我知道,如果多个请求在非常接近但非完全相同的时间点击服务器,那么它可以在获得另一个工作之前非常快速地将工作分发到其他服务器。我不知道的是,当机器在同一时刻得到两个请求时会发生什么。
答案 0 :(得分:3)
即使两个cpu在同一时间处理请求,并且它们发生冲突,那么在某个阶段它们会说“我想要做某些事情,这不可能与其他任何事情同时发生” 。如果两个cpu完全同时执行此操作,则会有一个预定义的顺序 - 我会想到降低数量的CPU将获得优先权。
这种阻止只需要一两个循环 - 只要说“我声称拥有此资源”(称为锁定)。然后该块将被解除阻塞,另一个CPU可以恢复(只要它不想访问相同的数据)。
这太过于简单了。
此外,如果只有一个网卡,则两个请求不可能通过网络“同时进入” - 如果它们同时进入,则完全(在千兆网络上),然后两个数据包将发生冲突;两个请求将在稍微随机的时间后重试,直到没有冲突。
请记住,这是以计算机的时钟速度运行的(例如高达3ghz),因此“每秒数千”并不算什么。每秒100万个请求,每1000个cpu周期将产生1个请求。
答案 1 :(得分:0)
所有服务器都可能是concurrrent Servers。服务器可以是迭代的,即它遍历每个客户端并一次提供一个请求。
或者,服务器可以同时并行处理多个客户端,这种类型的a
服务器被称为并发服务器。
他们还通过load balancing生成响应并生成web cache。这两个重要机制用于同时允许许多用户。 br /> Web缓存
Web缓存是一种用于临时存储(缓存)Web文档(如HTML页面和图像)的机制,以减少带宽使用,服务器负载和感知落后。 Web缓存存储通过它的文档的副本;如果满足某些条件,则可以从缓存中满足后续请求。1 Google搜索结果中的缓存链接提供了一种从最近出现故障的网站检索信息的方法,以及一种比单击更快速检索数据的方法直接链接。来自Wiki
负载平衡
负载平衡是一种计算机网络方法,用于在多台计算机或计算机群集,网络链路,中央处理单元,磁盘驱动器或其他资源之间分配工作负载。成功的负载平衡可优化资源使用,最大化吞吐量,最大限度地缩短响应时间并避免过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性。负载平衡通常由专用软件或硬件提供,例如多层交换机或域名系统服务器进程。来自Wiki
这是一个小图片多线程服务器