服务器会自行进行负载平衡吗?(核心。单服务器系统。)

服务器会自行进行负载平衡吗?(核心。单服务器系统。)

当我查找负载平衡时,我看到的所有内容都在谈论将流量分配到多台服务器。我使用 Google 搜索了“单个服务器”和“一台服务器”,但没有找到任何相关内容。

我知道操作系统可以进行自己的负载平衡(处理器上的内核),处理器也可以进行自己的负载平衡(虚拟内核)。我知道您也可以通过软件将线程引导到内核。

因此,如果您有一台服务器(1 个机架或 2 个机架),可以处理您将要处理的 TCP/IP 负载,服务器上的操作系统是否能保持所有核心正常工作,还是需要使用软件(或硬件?)负载平衡器来处理?特定应用程序涉及网络流量,以及在服务器上为员工运行 ERP 软件的公司。

答案1

我认为您要找的术语是“多任务”。Windows Server 2008 是一个多任务操作系统,可并行运行多个进程。开箱即用,操作系统会将负载分配到可用的核心/线程上。您不需要负载平衡器

答案2

简短回答:否

硬件提供 CPU 核心来执行指令,指令可以被定向到特定的核心,但哪些指令转到哪个核心的实际决策(称为“调度”)是由操作系统内核而不是硬件处理的。

实际上,从系统管理员的角度来看,这通常不是您需要担心的事情。正如 ivanivan 的评论中提到的那样,几乎所有现代服务器软件都是多线程的 - 即它是为利用多个内核而编写的 - 即使您处理的是单线程应用程序,内核仍将在不同内核上运行不同的程序(以及同一程序的不同实例)。根据操作系统的不同,通过指示内核使用与默认调度程序不同的调度程序(*NIX 内核通常有几个编译好的调度程序可供选择),您可能会获得很少的性能改进,但不,您绝对不需要添加任何硬件来管理这一点,并且除了一些非常不寻常的工作负载(您的不是),通常最好不要使用默认调度程序。

较长的答案

与 Iain 的回答相反,多任务实际上是涵盖计算机可以同时执行多个程序的任何技术的一个宽泛术语。多任务处理在单核系统上广泛使用数十年,采用“分时”方法,其中内核运行(或从技术上讲,发送到 CPU 执行)来自程序 A 的几条指令,然后运行来自程序 B 的几条指令,等等,并以循环方式循环遍历所有正在运行的程序。

您所问的正确名称是多线程或并行处理。如上所述,您可以进行单核多任务处理。您也可以进行相反的操作,即单个程序执行与任务各组成部分的完成顺序无关的任务,例如压缩文件的多个块。内核可能会将这些块压缩指令拆分到不同的内核中(这意味着它是多线程的),但所有这些线程都来自同一个“任务”,即一个程序压缩文件。多任务和多线程是相关但不能互换的术语。

维基百科页面线程(计算)对此进行了非常详细的分解,其中包括一个名为“线程与进程”的简短部分,它解决了多任务和线程之间的混淆。

建议搜索术语以查找有关该主题的更多信息(不会被与不同服务器之间的网络负载平衡有关的不相关结果所淹没):

  • 并行处理
  • 多线程
  • 线程调度
  • 内核调度器

如果你想了解其中涉及的挑战和陷阱写作多线程软件,请查阅“线程安全编程”。

相关内容