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

news2024/10/7 14:32:16

什么是集群?为什么要使用集群架构?

  • 1.什么是集群?
  • 2.为什么要使用集群?
    • 2.1 高性能
    • 2.2 价格有效性
    • 2.3 可伸缩性
    • 2.4 高可用性
    • 2.5 透明性
    • 2.6 可管理性
    • 2.7 可编程性
  • 3.集群的常见分类
    • 3.1 负载均衡集群
    • 3.2 高可用性集群
    • 3.3 高性能计算集群
    • 3.4 网格计算集群
  • 4.常用的集群软硬件介绍及选型
    • 4.1 企业中常见的集群软硬件产品
    • 4.2 对于集群软硬件产品如何选型
    • 4.3 如何选择开源集群软件产品

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),以及资源服务的管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2+Vue3

文章目录 Vue快速上手Vue是什么第一个Vue程序插值表达式Vue核心特性:响应式 Vue指令v-htmlv-show 与 v-ifv-else 与 v-else-ifv-onv-bindv-forv-model指令修饰符 计算属性watch侦听器(监视器)watch——简写watch——完整写法 Vue生命周期 和 …

c语言输出杨辉三角

#include<stdio.h> int main() {int x 0; //表示杨辉三角的的大小int y 1;printf("请输入x的值: ");scanf("%d", &x);for (int i 0; i < x; i) {for (int j 0; j < i; j) {if (j 0 || i 0) {y 1;}else {y y * (i - j 1) / j;}pri…

[mockjs]-mockjs的使用

Mock主要是用于前后端分离时&#xff0c;模拟交互时的返回数据 接下来介绍一下其它几种Mock的方式 json-server 与 express 之前介绍过json-server,可以启动一个express创建的mock的服务&#xff0c;通过接口获取数据&#xff1b;json-server也可以通过命令直接启动一个json…

【深度学习】大模型卷到机器人上了

当一项变革性技术出现后&#xff0c;以此为基础的技术就会像雨后春笋般蔓延。 就像Transformer出现后&#xff0c;以此为基础的大语言模型ChatGPT&#xff0c;视觉基础模型Segment Anything相继横空出世&#xff0c;并展现出强大的涌现能力。生成式AI可谓百花齐鸣&#xff0c;…

性能测试-性能工程落地的4个阶段(21)

性能工程按照不同的内容和目的划分为4个阶段,分别是线下单系统压测分析阶段、线下全链路压测分析阶段、生产只读业务压测及容量评估阶段、生产读写业务全链路压测及容量评估阶段。(也可以理解为一个企业性能测试体系的发展阶段) 线下单系统压测分析阶段 针对单系统的性能…

那些你不得不知道的CSS知识点

目录 1、CSS的盒子模型1.1 css盒子模型有哪些&#xff1a;1.2 css盒子模型的区别1.3 通过css如何转换css盒子模型 2、css优先级3、line-height和height的区别4、如果用css画一个三角形&#xff1f;5、CSS选择符有哪些&#xff1f;哪些属性可以继承&#xff1f;6、一个盒子不给宽…

《已解决 Go Error: panic: runtime error: index out of range BUG 》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e; 猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f4a1; 后端技术 Backend: 编程语言: &#…

【计算机视觉】Image Data Augmentation算法介绍合集(二)

文章目录 一、Random Grayscale二、GridMask三、Adversarial Color Enhancement四、Population Based Augmentation五、MaxUp六、SuperpixelGridCut, SuperpixelGridMean, SuperpixelGridMix七、InstaBoost八、Random Mix-up九、Sample Redistribution十、Batchboost十一、CutB…

人工智能前景如何?人工智能所对应到企业中是什么样的岗位呢?

目录 分布式计算在硕士阶段主要是在干什么呢&#xff0c;主要修的课程是些什么呢&#xff1f; 分布式计算所对应到企业中是什么样的岗位呢&#xff1f; 分布式计算前景如何&#xff1f; 人工智能在硕士阶段主要是在干什么呢&#xff0c;主要修的课程是些什么呢&#xff1f;…

vue国际化教程

需求背景 项目需求要做国际化&#xff0c;结果网上找了好几篇文章&#xff0c;没有一个可以一次性搞定&#xff0c;现在这里总结一下。首先&#xff0c;我们分为两部分处理&#xff0c;一个是前端页面的静态文字&#xff0c;这个由前端vue.json自行处理。第二部分就是后端的错…

基于springboot漫画管理系统springboot001

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)

目录 1、需求 2.想要的效果就是由图一变成图二 ​编辑 3.组件集成了以下功能 4.参数配置 示例代码 参数说明 5,组件 6.页面使用 1、需求 一般后台管理系统&#xff0c;通常页面都有增删改查&#xff1b;而查不外乎就是渲染新增/修改的数据&#xff08;由输入框变成输…

十四、流式编程(2)

本章概要 中间操作 跟踪和调试流元素排序移除元素应用函数到元素在 map() 中组合流 中间操作 中间操作用于从一个流中获取对象&#xff0c;并将对象作为另一个流从后端输出&#xff0c;以连接到其他操作。 跟踪和调试 peek() 操作的目的是帮助调试。它允许你无修改地查看…

CMU 15-445 Project #3 - Query Execution(Task #1、Task #2)

文章目录 一、题目链接二、准备工作三、SQL 语句执行流程四、BusTub 表结构五、Task #1 - Access Method Executors5.1 顺序扫描执行器5.2 插入执行器5.3 删除执行器5.4 索引扫描执行器 六、Task #2 - Aggregation & Join Executors6.1 聚合执行器6.2 循环连接执行器6.3 索…

设计模式Java实战

文章目录 一、前置1.1 目的1.2 面向对象1.3 接口和抽象类 二、七大设计原则2.1 单一职责2.2 接口隔离原则2.3 依赖倒转原则2.4 里氏替换原则2.5 开闭原则2.6 不要重复原则2.7 迪米特最少知道法则 三、23种设计模式3.1创建型&#xff1a;创建对象3.1.1 单例模式定义最佳实践场景…

【基础篇】ClickHouse 表引擎之集成Kafka

文章目录 0.前言1.集成示例官方教程示例1&#xff1a;示例2&#xff1a;配置Kerberos 支持 虚拟列 参考文档 0.前言 ClickHouse为了方便与Kafka集成&#xff0c;提供了一个名为Kafka引擎的专用表引擎。Kafka引擎允许你在ClickHouse中创建一个表&#xff0c;这个表的数据源来自…

react的状态管理简单钩子方法

1.recoil useProvider文件: import { atom, useRecoilState } from recoil;const initState atom({key: initState,default: {state: [],}, })// 将业务逻辑拆分到一个单独文件中&#xff0c;方便进行状态管理 export interface StateProps {id: number;text: string;isFini…

学习Node js:raw-body模块源码解析

raw-body是什么 raw-body的主要功能是处理HTTP请求体的原始数据。它提供了以下核心功能&#xff1a; 解析请求体&#xff1a;可以从HTTP请求中提取原始数据&#xff0c;包括文本和二进制数据。配置选项&#xff1a;通过配置项&#xff0c;可以设置请求体的大小限制、编码方式…

主题教育活动知识竞赛小程序界面分享

主题教育活动知识竞赛小程序界面分享

Git - Git 工作流程

文章目录 Git WorkFlow图解小结 Git WorkFlow Git Flow是一种基于Git的工作流程&#xff0c;确实利用了Git作为分布式版本控制系统的优势。 本地代码库 (Local Repository): 每个开发者都维护自己的本地代码库&#xff0c;这是Git分布式性质的体现。本地代码库包含了完整的项目…