个人电脑刚开始发展时,一个家庭可能只有一台(或更少)电脑。孩子们白天玩电脑游戏,晚上家长做会计、编程,或者在业务支持系统上漫游。然而,想象一下今天只有一台电脑的家庭,你可以想象这会产生什么样的冲突。每个人都想使用电脑,只有键盘和鼠标。随着计算机变得越来越普遍,IT行业或多或少也发生了同样的事情。对服务和服务器的需求已经增长到由于过度使用而下降的程度。幸运的是,我们现在有了负载均衡的概念来帮助我们处理需求。什么是负载均衡?负载平衡是一个通用术语,指的是为确保托管资源的有效分配所做的事情。对于Web服务器系统管理员来说,负载平衡通常意味着确保Web服务器软件(例如Nginx)配置有足够的工作节点来处理激增的访问者。换句话说,如果一个网站突然变得如此受欢迎以至于它的访问者在几分钟内翻了两番,那么运行服务器的软件必须能够响应每个访问者而不让任何访问者看到服务下降。对于简单的网站,这就像修改一行配置选项一样简单,但对于具有动态内容的复杂网站,每个用户都有多个数据库查询,这可能是一个严重的问题。这个问题本来是可以随着云计算的发展来解决的,但是当web应用遇到意想不到的激增时,不规模化也不是没有可能。进行负载平衡时要记住的重要一点是,有效分配资源并不一定意味着均匀分配资源。并非所有任务在任何时候都需要所有可用资源。智能负载平衡策略仅在需要时向用户和任务提供资源。这通常是应用程序开发人员的领域,而不是IT基础架构的责任。异步应用程序对于确保离开计算机休息的用户不会占用服务器上的宝贵资源至关重要。负载均衡是如何工作的?负载平衡通过将工作负载分配到多个计算节点来避免瓶颈。这些节点可能是数据中心中的物理服务器、云环境中的容器、用于边缘计算的战略性放置的服务器、复杂应用程序框架中的独立Java虚拟机(JVM)或在单个Linux服务器上运行的Linux服务器。守护进程。这个想法是将一个大问题分成几个小任务,并将每个任务分配给一台专用计算机。例如,对于需要用户登录的网站,该网站可能托管在服务器A上,而登录页面和所有伴随的身份验证查询托管在服务器B上。这样,新用户可以登录他们的帐户而无需绑定来自使用该站点的其他用户的资源。云计算负载均衡云计算使用容器,因此通常没有单独的物理服务器来处理不同的任务(实际上,有很多单独的服务器,但它们聚集在一起成为一个计算“大脑”)。相反,“容器pod”是从多个容器创建的。当容器pod由于其用户或任务负载而开始耗尽资源时,将生成一个相同的容器pod。容器Pod共享存储和网络资源,每个容器Pod在创建时分配给一个计算节点。容器pod可以根据负载需求创建或销毁,因此无论有多少用户,用户都能体验到一致的服务质量。边缘计算边缘计算在负载平衡方面考虑了现实世界。云计算天然是一个分布式系统,但实际上,云计算的节点通常集中在几个数据中心。用户离运行云的数据中心越远,他们必须克服越多的物理障碍才能获得最好的服务。即使有光纤连接和适当的负载平衡,位于3000英里外的服务器的响应时间可能比仅300英里外的服务器更长。边缘计算将计算节点带到云计算的“边缘”,试图弥合地域鸿沟,形成一种云计算的卫星网络,因此也起到了很好的负载均衡工作的作用。什么是负载均衡算法?负载均衡策略有很多种,其复杂程度取决于所涉及的技术和需求。负载均衡不一定要复杂,从一开始就做好负载均衡很重要,即使使用像Kubernetes和Keepalived这样的专门软件也是如此。当您可以设计应用程序并自行采取简单的预防措施时,不要依赖容器来平衡负载。如果您从一开始就将应用程序设计为模块化和临时性的,您将通过巧妙的网络设计、容器编排和其他未来技术从负载平衡机会中受益。一些可以指导应用程序开发人员或网络工程师工作的流行算法包括:按顺序向服务器分配任务(这通常称为循环调度)。将任务分配给当前最不忙的服务器。将任务分配给响应最快的服务器。随机分配任务。例如,在分配特别复杂的任务时,可以组合或加权这些原则以分配给组中最强大的服务器。通常使用编排,这样管理员就不必为负载平衡找到完美的算法或策略,尽管有时由管理员来选择使用哪种负载平衡方案组合。意外负载平衡并不是真正确保所有资源在网络中均匀使用。负载平衡实际上是为了确保即使在意外发生时也能提供可靠的用户体验。良好的基础架构可以承受计算机崩溃、应用程序过载、网络流量冲击和用户错误。考虑您的服务如何具有弹性,并从头开始相应地设计负载平衡策略。
