【系统架构】什么是集群?为什么要使用集群架构?

2023-10-29

1.什么是集群?

简单地说,集群 就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的 计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。

举个例子:

打开谷歌,百度的页面,看起来好简单,也许你觉得用几分钟就可以制作出相似的网页,而实际上,这个页面的背后是由成千上万台服务器集群协同工作的结果。

在这里插入图片描述
若要用一句话描述集群,即一堆服务器合作做同一件事,这些机器可能需要统一协调管理,可以分布在一个机房,也可以分布在全国全球各个地区的多个机房。

2.为什么要使用集群?

2.1 高性能

一些国家重要的计算密集型应用(如 天气预报核试验模拟 等),需要计算机有很强的运算处理能力。以全世界现有的技术,即使是大型机器,其计算能力也是有限的,很难单独完成此任务。因为计算时间可能会相当长,也许几天,甚至几年或更久。因此,对于这类复杂的计算业务,便使用了计算机集群技术,集中几十上百台,甚至成千上万台计算机进行计算。

在这里插入图片描述
假如你配一个 LNMP 环境,每次只需要服务 10 10 10 个并发请求,那么单台服务器一定会比多个服务器集群要快。只有当并发或总请求数量超过单台服务器的承受能力时,服务器集群才会体现出优势。

2.2 价格有效性

通常一套系统集群架构,只需要几台或数十台服务器主机即可。与动辄价值上百万元的专用超级计算机相比便宜了很多。在达到同样性能需求的条件下,采用计算机集群架构比采用同等运算能力的大型计算机具有更高的性价比。

早期的淘宝,支付宝的数据库等核心系统就是使用上百万元的小型机服务器。后因使用维护成本太高以及扩展设备费用成几何级数翻倍,甚至成为扩展瓶颈,人员维护也十分困难,最终使用 PC 服务器集群替换之,比如,把数据库系统从小机结合 Oracle 数据库迁移到 MySQL 开源数据库结合 PC 服务器上来。不但成本下降了,扩展和维护也更容易了。

2.3 可伸缩性

当服务负载,压力增长时,针对集群系统进行较简单的扩展即可满足需求,且不会降低服务质量。

通常情况下,硬件设备若想扩展性能,不得不增加新的 CPU 和存储器设备,如果加不上去了,就不得不购买更高性能的服务器,就拿我们现在的服务器来讲,可以增加的设备总是有限的。如果采用集群技术,则只需要将新的单个服务器加入现有集群架构中即可,从访问的客户角度来看,系统服务无论是连续性还是性能上都几乎没有变化,系统在不知不觉中完成了升级,加大了访问能力,轻松地实现了扩展。集群系统中的节点数目可以增长到几千乃至上万个,其伸缩性远超过单台超级计算机。

2.4 高可用性

单一的计算机系统总会面临设备损毁的问题,如 CPU,内存,主板,电源,硬盘等,只要一个部件坏掉,这个计算机系统就可能会宕机,无法正常提供服务。在集群系统中,尽管部分硬件和软件还是会发生故障,但整个系统的服务可以是 7 × 24 7×24 7×24 小时可用的。

集群架构技术可以使得系统在若干硬件设备故障发生时仍可以继续工作,这样就将系统的停机时间减少到了最小。集群系统在提高系统可靠性的同时,也大大减小了系统故障带来的业务损失,目前几乎 100 % 100\% 100% 的互联网网站都要求 7 × 24 7×24 7×24 小时提供服务。

2.5 透明性

多个独立计算机组成的松耦合集群系统构成一个虚拟服务器。用户或客户端程序访问集群系统时,就像访问一台高性能,高可用的服务器一样,集群中一部分服务器的上线,下线不会中断整个系统服务,这对用户也是透明的。

2.6 可管理性

整个系统可能在物理上很大,但其实容易管理,就像管理一个单一映像系统一样。在理想状况下,软硬件模块的插入能做到即插即用。

2.7 可编程性

在集群系统上,容易开发及修改各类应用程序。

3.集群的常见分类

计算机集群架构按功能和结构可以分成以下几类:

  • 负载均衡集群,简称 LBC 或者 LB
  • 高可用性集群,简称 HAC
  • 高性能计算集群,简称 HPC
  • 网格计算集群

提示:负载均衡集群高可用性集群 是互联网行业常用的集群架构模式,也是我们要学习的重点。

3.1 负载均衡集群

负载均衡集群 为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群可以把很多客户集中的访问请求负载压力尽可能平均地分摊在计算机集群中处理。客户访问请求负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合使用同一组应用程序为大量用户提供服务的模式,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。

负载均衡集群运行时,一般是通过一个或多个前端负载均衡器将客户访问请求分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。

负载均衡集群的作用为:

  • 分摊用户访问请求及数据流量(负载均衡)。
  • 保持业务连续性,即 7 × 24 7×24 7×24 小时服务(高可用性)。
  • 应用于 Web 及数据库等服务器的业务。

负载均衡集群典型的开源软件包括 LVSNginxHaproxy 等。如下图所示:

在这里插入图片描述
提示:不同的业务会有若干秒的切换时间,DB 业务明显长于 Web 业务切换时间。

3.2 高可用性集群

一般是指在集群中任意一个节点失效的情况下,该节点上的所有任务会自动转移到其他正常的节点上。此过程并不影响整个集群的运行。

当集群中的一个节点系统发生故障时,运行者的集群服务会迅速作出反应,将该系统的服务分配到集群中其他正在工作的系统上运行。考虑到计算机硬件和软件的容错性,高可用性集群的主要目的是使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了故障,那么这段时间内将由备份节点代替它。备节点通常是主节点的镜像。当它代替主节点时,它可以完全接管主节点(包括 IP 地址及其他资源)提供服务,因此,使集群系统环境对于用户来说是一致的,即不会影响用户的访问。

高可用性集群使服务器系统的运行速度和响应速度会尽可能的快。他们经常利用在多台机器上运行的冗余节点和服务器来相互跟踪。如果某个节点失败,它的替补者将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,集群里的任意一台机器宕机,业务都不会受影响(理论情况下)。

高可用性集群的作用为:

  • 当一台机器宕机时,另外一台机器接管宕机的机器的IP资源和服务资源,提供服务。
  • 常用于不易实现负载均衡的应用,比如负载均衡器,主数据库,主存储对之间。

高可用性集群常用的开源软件包括 KeepalivedHeartbeat 等,其架构图如下图所示:

在这里插入图片描述

3.3 高性能计算集群

高性能计算集群也称并行计算。通常,高性能计算集群涉及为集群开发的并行应用程序,以解决复杂的科学问题(天气预报,石油勘探,核反应模拟等)。高性能计算集群对外就好像一个超级计算机,这种超级计算机内部由数十至上万个独立服务器组成,并且在公共消息传递层上进行通信以并行运行应用程序。在生产环境中实际就是把任务切成蛋糕,然后下发到集群节点计算,计算后返回结果,然后继续领新任务计算,如此往复。

3.4 网格计算集群

由于很少用到,在此略过。

4.常用的集群软硬件介绍及选型

4.1 企业中常见的集群软硬件产品

  • 互联网企业常用的开源集群软件有:NginxLVSHaproxyKeepalivedheartbeat

  • 互联网企业常用的商业集群硬件有:F5NetscalerRadwareA10 等,工作模式相当于 Haproxy 的工作模式。

淘宝,赶集网,新浪等公司曾使用过 Netscaler 负载均衡产品。集群硬件 Netscaler 的产品图如下图所示:

在这里插入图片描述
集群硬件 F5 产品如下图所示:

在这里插入图片描述

4.2 对于集群软硬件产品如何选型

当企业业务重要,技术力量又薄弱,并且希望出钱购买产品及获取更好的服务时,可以选择硬件负载均衡产品,如 F5NetscalerRadware 等,此类公司多为传统的大型非互联网企业,如银行,证券,金融业及宝马,奔驰公司等。

对于门户网站来说,大多会用软件及硬件产品来分担单一产品的风险,如淘宝,腾讯,新浪等。融资了的企业会购买硬件产品,如赶集网等网站。

中小型互联网企业,由于起步阶段无利润可赚或者利润很低,会希望通过使用开源免费的方案来解决问题,因此会雇佣专门的运维人员进行维护。例如:51CTO 等。

相比较而言,商业的负载均衡产品成本高,性能好,更稳定,缺点是不能二次开发,开源的负载均衡软件对运维人员的能力要求较高,如果运维及开发能力强,那么开源的负载均衡软件是不错的选择,目前的互联网行业更倾向于使用开源的负载均衡软件。

4.3 如何选择开源集群软件产品

中小企业互联网公司网站在并发访问和总访问量不是很大的情况下,建议首选 Nginx 负载均衡,理由是 Nginx 负载均衡配置简单,使用方便,安全稳定,社区活跃,使用的人逐渐增多,成为流行趋势,另外一个实现负载均衡的类似产品为 Haproxy(支持 L4 和 L7 负载,同样优秀,但社区不如 Nginx 活跃)。

如果要考虑 Nginx 负载均衡的高可用功能,建议首选 Keepalived 软件,理由是安装和配置简单,使用方便,安全稳定,与 Keepalived 服务类似的高可用软件还有 Heartbeat(使用比较复杂,并不建议初学者使用)

如果是大型企业互联网公司,负载均衡产品可以使用 LVS + Keepalived 在前端做 4 4 4 层转发(一般是主备或主主,如果需要扩展可以使用 DNS 或前端使用 OSPF),后端使用 Nginx 或者 Haproxy 7 7 7 层转发(可以扩展到百台),再后面是应用服务器,如果是数据库与存储的负载均衡和高可用,建议选择 LVS + HeartbeatLVS 支持 TCP 转发且 DR 模式效率很高,Heartbeat 可以配合 DRBD,不但可以进行 VIP 的切换,还可以支持块设备级别的数据同步(Distributed Replicated Block DeviceDRBD),以及资源服务的管理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【系统架构】什么是集群?为什么要使用集群架构? 的相关文章

  • [转载]搜索引擎技术介绍

    转载声明 http backend blog 163 com blog static 202294126201252872124208 引言 早些时候分享过一份关于搜索引擎技术的PPT 这篇文章基本上是基于原来框架 在内容上做了一些改进和扩
  • EF循环依赖

    1 项目场景 项目场景 1 本项目采用了EF架构来建立实体与实体之间的关联关系 2 一个部门对应多个摄像头 1 部门实体 public partial class DepartmentEntity 部门实体 public int Id ge
  • Chromium多进程架构,你知道多少?

    一 前言 国内外主流的浏览器 大多采用的是谷歌的Chromium 浏览器内核 Chromium是一个多进程多线程架构的Web引擎 很多应用和底层开发者希望了解Chromium中的进程和线程的种类和用途 以便能利用相关信息提升应用的性能 为此
  • 阿里云大佬告诉你为什么学不会设计模式,归根到底还是方法不对

    最近总有读者在后台跟我说 工作几年 自己的代码质量似乎没有什么提升 我觉得他的情况非常典型 很多人应该或多或少都有过类似的经历 毕业几年 几乎一直在做复制黏贴的工作 偶尔会遇到原有业务扩展的需求 想简单应付一下完事的话 也不难 无非就是多加
  • 微服务项目之项目简介

    目录 项目模式 技术栈 项目架构图 模块 主模块 项目模式 电商模式 市面上有5种常见的电商模式 B2B B2C C2B C2C O2O 1 B2B模式 B2B Business to Business 是指 商家与商家建立的商业关系 如
  • 十四、java版 SpringCloud分布式微服务云架构之Java String 类

    Java String 类 字符串广泛应用 在 Java 编程中 在 Java 中字符串属于对象 Java 提供了 String 类来创建和操作字符串 创建字符串 创建字符串最简单的方式如下 String str xxx 在代码中遇到字符串
  • HCIE云计算之FusionCloud 6.3部署架构

    HCIE云计算之FusionCloud 6 3部署架构 一 不同的type类型场景需求 二 Region Type 1部署方案 1 Region Type 1简介 2 Region Type 1部署私有云介绍 3 Region Type 1
  • 企业架构LNMP学习笔记29

    Nginx负载均衡配置 架构分析 1 用户访问请求Nginx负载均衡服务器 2 Nginx负载均衡服务器再分发请求到Web服务器 实际配置负载均衡 只需修改作为负载均衡服务器的Nginx即可 当前架构中的server04 在客户端解析域名到
  • 【微服务架构设计】微服务不是魔术:处理超时

    微服务很重要 它们可以为我们的架构和团队带来一些相当大的胜利 但微服务也有很多成本 随着微服务 无服务器和其他分布式系统架构在行业中变得更加普遍 我们将它们的问题和解决它们的策略内化是至关重要的 在本文中 我们将研究网络边界可能引入的许多棘
  • 测试人员为什么要去了解业务架构和技术架构?

    问题 在入职公司不久 我参加老员工再给新来的员工和管培生宣讲产品的业务 功能 直接拿着功能清单和实际页面在讲解 等把产品功能讲完了 我问了一下实习生和管培生怎么样 他们都说功能讲的太多 太乱 不清楚讲解产品的核心业务逻辑及操作流程 后来发现
  • 微服务测试是什么?

    微服务测试是一种特殊的 测试类型 因为它涉及到多个独立的服务 以下是进行微服务测试的一般性步骤 1 确定系统架构 了解微服务架构对成功测试至关重要 确定每个微服务的职责 接口 依赖项和通信方式 了解这些信息可以帮助您更好地规划测试用例和测试
  • 阿里P8架构师带你“一窥”大型网站架构的主要技术挑战和解决方案

    写在前面 传统的企业应用系统主要面对的技术挑战是处理复杂凌乱 千变万化的所谓业务逻辑 而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理 前者的挑战来自功能性需求 后者的挑战来自非功能性需求 功能性需求也许还有 人月神话 聊
  • 人工智能与底层架构:构建智能引擎的技术支柱

    导言 人工智能与底层架构的交融塑造了智能系统的基石 是推动智能时代发展的关键动力 本文将深入研究人工智能在底层架构中的关键作用 以及它对智能引擎的技术支持 探讨人工智能在计算机底层架构中的作用 以及这一融合如何塑造数字化未来 1 人工智能与
  • 第六章--- 实现微服务:匹配系统(下)

    0 写在前面 这一章终于完了 但是收尾工作真的好难呀QAQ 可能是我初学的缘故 有些JAVA方面的特性不是很清楚 只能依葫芦画瓢地模仿着用 特别是JAVA的注解 感觉好多但又不是很懂其中的原理 只知道要在某个时候用某个注解 我真是有够菜的
  • Autosar诊断——配置部分服务功能寻址不响应,抑制肯定响应

    Autosar诊断 简介和功能概述 Autosar诊断 DCM模块内的子模块 Autosar诊断 DSL Diagnostic Session Layer Autosar诊断 DSD Diagnostic Service Dispatche
  • 高可用:如何实现消息队列的 HA?

    管理学上有一个木桶理论 一只水桶能装多少水取决于它最短的那块木板 这个理论推广到分布式系统的可用性上 就是系统整体的可用性取决于系统中最容易出现故障 或者性能最低的组件 系统中的各个组件都要进行高可用设计 防止单点故障 消息队列也不例外 本
  • 微服务常见的配置中心简介

    微服务架构中 常见的配置中心包括以下几种 Spring Cloud Config Spring Cloud Config是官方推荐的配置中心解决方案 它支持将配置文件存储在Git SVN等版本控制系统中 通过提供RESTful API 各个
  • 专车数据层架构进化往事:好的架构是进化来的,不是设计来的

    很多年前 读了 子柳 老师的 淘宝技术这十年 这本书成为了我的架构启蒙书 书中的一句话像种子一样深埋在我的脑海里 好的架构是进化来的 不是设计来的 2015 年 我加入神州专车订单研发团队 亲历了专车数据层 架构进化 的过程 这次工作经历对
  • BEV+Transformer感知架构共识下,传感器「火药味」再升级

    高阶智能驾驶战火愈演愈烈 正带动感知方案卷入新一轮军备竞赛 根据高工智能汽车研究院最新发布数据显示 2023年1 9月 中国市场 不含进出口 乘用车前装标配 软硬件 NOA交付新车37 73万辆 同比上年同期增长151 20 未来几年内 N
  • CCSC,一种CPU架构

    core circuit separate computer 核与执行电路的分离 最初是为了省电 用寄存器实现这种分离 V寄存器控制着执行电路的供电 V 0则不供电 进入省电模式 V 1则供电 进入工作模式 P寄存器是parameter r

随机推荐

  • gitee项目下载与上传

    在gitee clone项目到本地的情况下 1 项目下载 git clone 地址 默认下载master主分支上的内容 git clone git gitee com L lemon L shome git 2 项目上传 git add 3
  • 如何在Vue中定义和调用过滤器?

    过滤器 Filters 是 vue 为开发者提供的功能 常用于文本的格式化 过滤器可以用在两个地方 插值表达式和 v bind 属性绑定 过滤器应该被添加在 JavaScript 表达式的尾部 由 管道符 进行调用 示例代码如下
  • python计算100以内7的倍数和与个数

    a 0 count 0 sz num 0 while a lt 100 a 1 if a 7 0 sz append a count 1 print 7的倍数是 a for i in range len sz num sz i print
  • 今天开始练习,第一天——A+B

    输入两个整数a和b 计算a b的和 本题很简单 但是注意此题是多组测试数据 即需要不停的接收系统的测试输入 你都可以计算结果并输出 输入格式 输入两个整数A和B 范围不超过2 10 输出格式 求A B 样例输入 1 1 10 20 样例输出
  • 定义一个学生类Student,包括3个数据成员:姓名name,学号no,分数score;三个静态数据成员:学生总人数count,总成绩sum和平均成绩average;带参数的构造函数用来初始化对象,成

    include
  • 密码学之一(Hash函数)

    定义 单向性 数据完整性 Hash冲突 常用的Hash算法 程序 Hash环问题 Hash应用场景 定义 Hash函数H将可变长度的数据M作为输入 产生固定长度的Hash值h Hash函数 哈希函数 散列函数 杂凑函数它们说的都是同一个含义
  • GPS nmealib学习笔记

    0 nmealib简介 nmealib是一个基于C语言的用于nmea协议的开源库 虽然nmea体积小巧 但是却具备了不少功能 分析NMEA语句并把结果保存在合适的C语言结构体中 除了解析NMEA语句之外 还可以产生NMEA语句 支持多种NM
  • 0.0.0.0这个IP地址代表什么?

    当socket绑定的IP地址0 0 0 0时 表示监听本机上的所有IP地址 也就是接收本机所有网卡发到本进程端口的请求 在网络中 0 0 0 0表示整个网络中的所有主机 当数据包在路由器之间转发时 在路由表中如果找不到目的IP所在的网段 就
  • 无线通信原理之F-OFDM技术

    目录 1 F OFDM系统的基本原理 2 F OFDM系统的子载波映射 3 F OFDM系统的子带滤波器设置 1 F OFDM系统的基本原理 F OFDM Filtered Orthogonal Frequency Division Mul
  • VMware安装Windows server 2016

    1 打开VMware 点击创建新的虚拟机 2 选择典型配置 并进行下一步 3 选择稍后安装操作系统 并进行下一步
  • STM32 IAP

    1 IAP IAP 即在应用编程 IAP 是用户自己的程序在运行过程User Flash 的部分区域进行烧写 目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级 通常实现 IAP 功能时 即用户程序运行中作自身的
  • m4头发mod制作

    贴图制作 PS 添加底色 滤镜 添加杂色 高斯分布 单色 滤镜 模糊 动感模糊 角度90 距离自己调 图像 调整 亮度对比度 新建图层 随意加一些纤维 让头发看起来更密 再根上面一样添加滤镜只要动感模糊就可以 新建图层 再继续加 加滤镜从添
  • 大数据_什么是数据中台?

    目录 一 数据中台的定义 二 数据中台必备的是个核心能力 三 数据中台VS业务中台 四 数据中台VS数据仓库 五 数据中台VS现有信息架构 六 数据中台的业务价值与技术价值 一 数据中台的定义 数据中台是一套可持续 让企业的数据用起来 的机
  • VS2017:打开时提示登录,登录窗口却打不开

    转自 VS2017无法登录微软账户的问题 亲测有效 这方法真是神了
  • ffmpeg接收rtsp流异常问题

    今天使用ffmpeg接收rtsp流转mat做人脸识别时碰到了一个问题 就是使用 avformat open input 打开rtsp url时一直出现段错误 但是vlc播放url可以正常播放 百度一下发现 ffmpeg默认rtsp使用tcp
  • 微信小程序uview图标不显示

    问题 之前还好好的 图标能显示 不知何时 图标突然不显示了 百度后发现 原来是因为我引入的iconfont css 导致的css覆盖导致的 字体图标不显示一般由于字体图标的名称被覆盖导致 如下图 问题解决参考 https www kancl
  • 一看就懂!如何将Zabbix监测到的数据导出?

    前言 Zabbix是一款服务器监测应用 有良好的web界面 美中不足的是缺乏导出报表的功能 但是Zabbix同时也提供了强有力的API支持 https www zabbix com documentation 3 4 zh manual a
  • 一键分块,轻松拼图!使用Segment Anything让你的设计更加高效!

    目录 第一步 第二步 第三步 第四步 如果你是一名设计师或者摄影爱好者 那么你一定经常需要将图片分割成不同的块 以便在不同的场合下使用 例如 在网页设计中 你可能需要将图片分割成不同的块 以便在不同的区域中使用 而分块的难度不小 需要一定的
  • java easypoi导出word时添加空白页导出多组相同类型的数据

    1 需求 导出用户信息 模板如下 要求 导出多个用户信息时 另起一页 根据模板生成下一条用户信息 2 模板变化 easypoi不能直接创建空白页 下一页 但可以使用apache的poi中的document createParagraph c
  • 【系统架构】什么是集群?为什么要使用集群架构?

    什么是集群 为什么要使用集群架构 1 什么是集群 2 为什么要使用集群 2 1 高性能 2 2 价格有效性 2 3 可伸缩性 2 4 高可用性 2 5 透明性 2 6 可管理性 2 7 可编程性 3 集群的常见分类 3 1 负载均衡集群 3