集群的可扩展性及其分布式体系结构(3)--上
分层模型
首先,我们先来看一下组成集群计算机系统主要部件有哪些:
- 多个高性能的计算机(PC、工作站或者SMP服务器)
- 优秀的操作系统(分层结构或者基于微内核)
- 高性能网络开关(千兆位以太网或者类似Myrinet的专有开关网络)
- 网络接口卡NIC
- 快速通讯协议和服务(如活动消息和快速消息)
- 集群中间件(单一系统映象和可用性支持)
- 硬件,如DEC的内存通道、硬件DSM和SMP技术
- 操作系统内核或者粘合层,如MC和GLUnix
- 应用程序和子系统
- 应用程序,系统管理工具和电子表格
- 实时系统,软件DSM和并行文件系统
- 资源管理器和调度软件,如LSF负载均衡和CODINE分布式网络环境的计算
- 并行编程环境和工具,编译器、PVM、MPI
- 应用程序:串行和并行
这些组成部件并非在每一类集群系统中都是必须的,多数系统往往只实现其中的几种,主要是根据具体的需求来定。但如果以参考模型的角度来看,对于理解各个部件所处的位置及其作用来说,建立层次结构描述有助于从整体了解集群。
这里我们发现,集群的组成涵盖了软件到硬件的几乎每一个方面。如果把集群想象成类似OSI互联参考模型一样具有层次结构的话,那么从底层到顶层,覆盖了现有的硬件构造、网络设计、操作系统、中间件以及应用环境等所有层次的技术面。那么,在每一层选择什么样的技术就异显重要。采用现有的成熟的产品技术,可以大大降低构造集群的技术和资金风险,而选择适当的层次和技术点作为突破,又往往是解决性能、安全或者其他特殊需求的关键。
关于集群的设计目的,好处我们在前面已经详尽叙述过,这里不再讨论。简单的说,相对于较低的费用,集群要具备以下的特点:
- 高性能
- 可扩展性
- 高吞吐量
- 易用性
- 高可用性
回页首
集群的分类方式
其实,往往现实中的产品会是某几个特性的综合。对于这些特性,从不同的参考因素来考虑,集群可以有以下的集中分类方式:
集群的分类
应用目的
我在集群的研究分类时,根据集群的用途通常把集群分为三种:
- 强调计算能力的高性能计算(HP)集群,大名鼎鼎的Beawulf集群就是极好的例子。
- 强调可用性的HA商用集群,开放源码社区中的Mon项目和REDHAT的PIRANAHA都是价廉物美的HA集群方案。当然,也别忘了SP2、Trucluster、Solaris MC这些老字号。
- 既有HA的能力,又可以实现HP的集群,强调高吞吐量的综合型集群,比如MOSIX,LVS。
应用总是在变化的。最早集群只为解决计算问题而诞生,随着需求的发展才出现HA商用机群,以及后来的综合性质较强的高吞吐系统,而将来也一定会有更新种类的集群出现。
节点归属
如果从节点的归属情况看,可以分为:专用集群 和"兼职"集群(也有叫做独用型和企业型)。
专用型集群往往用于超级计算任务或者用廉价PC组合成大型工作站,具有以下特点:
- 一般安装在机房的机架上
- 多数由同类型结点同构地组合而成
- 一般通过一个前端进行访问
该集群主要是为了取代传统的主机或者超级计算机。可以把专用型集群当作单个计算机那样来安装、使用和管理。允许多用户登录到集群上进行交互式作业或批作业。可以大大提高吞吐量,以及缩短响应时间。
构造"兼职"集群主要是为了节省成本并充分利用结点的空闲资源,特点如下:
- 结点必须是完整的SMP、工作站或者PC,连接着所有必须的外围设备
- 地理上结点是分布的,不必处在同一个空间内
- 结点可以有多个"属主"(也就是拥有者)。集群管理者对结点的管理权限是有限的。而且,所有者的本地任务优先级往往高于集群的任务
- 集群大多是异构的,互联方式以标准通信网络为基础。
从上面的比较我们不难发现,使用节点资源的方式导致了两种不同归属集群的出现。专有集群中,特定个体并不拥有一个工作站,或者是一个节点,资源是集群范围内共享的,并行计算可以在整个集群上执行。"兼职"集群中个人拥有工作站,应用程序靠"窃取"CPU时间来进行运算。导致这种情况得主要原因是,大多数的工作站的CPU时间都是闲置,即使在高峰期也很少超过50%。我们也把在这种非专用的动态变化的集群上运行的并行程序叫做自适应并行计算。有些文章中的高吞吐集群也属于这一类。
组装方式
组装方式主要取决于互联技术和计算机空间技术。在松耦合的集群中,节点一般是相对独立的PC或者工作站,拥有完整的外围设备:键盘、鼠标、显示器。彼此通过LAN连接,距离上可以是在一个机房,也可以跨楼宇,甚至可以扩展到一个园区(比如校园网)的范围。随着带宽技术的发展,现在的松耦合集群已经可以跨地域范围进行资源整合。例如在网络负载均衡的集群环境中,就有不少解决方案是跨越几个城市进行集群流量平衡的,像网易的站点服务器,263的邮件服务器,可以在不同的城市之间做负载均衡。而对外却能表现出严格的"一致"性,形成统一的资源。
紧耦合集群往往从空间利用率、有效带宽等角度考虑集群的互联。大家都知道,某种程度上,网路的距离和带宽是成反比的。越是短距离的技术越能实现更高的带宽。因此,就有专用集群往往采用了高带宽、低延时的通信网络,并将节点不必要的外围设备去掉,仅仅保留必要的主机(CPU、内存、硬盘),安置在一个或者彼此靠近的机架中。这样,不仅可以充分利用短距离通讯的有效带宽,例如千兆位以太网,甚至是万兆位以太网;还可以大大节省节点占用的空间,同时也方便集中管理。在紧耦合技术发展中,甚至出现了在一个机箱内作集群的产品――Blade Cluster Server 又称 刀片服务器。
刀片服务器是一种HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,是专门为特殊应用行业和高密度计算机环境设计的。其中每一块"刀片"实际上就是一块增强的系统主板。它们可以通过本地硬盘启动自己的操作系统,如Windows NT/2000、Linux、Solaris等等,类似于一个个独立的服务器节点。在这种模式下,每一个主板运行自己的系统,服务于指定的不同用户群,相互之间没有关联。不过可以用SSI软件将这些主板集合成一个单一的集群映像。
在集群模式下,所有的主板可以连接起来提供高速的背板带宽,可以共享资源,为相同的用户群服务。在集群中插入新的"刀片",可以提高整体性能。而由于每块"刀片"都是热插拔的,就像拔插显卡一样方便,所以系统可以轻松地进行替换,并且将维护时间减少到最小。这种集群在方便管理的同时,也节约了机房机架的宝贵空间,还能充分利用短距离的高性能通信技术,可谓一举多得。
这是两种典型的集群组装方式。左边的松耦合集群安装在一个局域网范围内,通常由一个GB级以太网覆盖;右边的属于紧耦合集群,安装在一个机架中,能够使用更高带宽的通信技术,而且有很高的电气结合度,至于刀片服务器恐怕就要更紧凑一些了。另外我们可以看出,这两个集群应该都是专用型集群。
控制方式
控制分为集中控制和分散控制两种。采用集中控制的集群大多是紧耦合集群,出于空间和管理便利的考虑,允许管理员集中控制所有的结点,其控制界面可以是字符终端也可以是图形GUI。用于并行计算的Beowulf集群采用的就是集中控制的方式,管理员通过shell工具或者X接口操纵主服务器,而具体的计算结点是不可直接访问的。
对于松耦合的集群,采用分散和集中控制混合的方法。由于在松耦合结构上集中控制需要特殊的系统中间层支持,因此实现的难度较大。而成熟的管理协议如SNMP等就可用于改环境下的资源分配和调度。另外,在松耦合的非专用集群("兼职"集群)中,日常的控制仍由各自的"属主"进行,而闲余的计算时间则交给控制器。
同构性
同构是相对的,完全的同构只是理论模型的理想。上一章节我们提到,各类分布式系统中,SMP的同构性最好,直接反映在单一系统映像这个重要的指标上。大多数情况是,集群结点采用相同的操作系统或者兼容的硬件平台,以尽可能保证二进制代码的可移植性。比如Beowulf集群中,集群结点和服务器采用的都是Linux核心操作系统,配合标准的PVM和MPI2接口,使得计算任务能够跨越各结点的地址空间,代码和数据表达的一致使之在结点之间能够平滑迁移。
异构特性在集群的发展中日益重要。通过增强的OS扩展API或者中间件层软件,任务可以在异构的结点之间自由移动,实现某种层次上的SSI能力。在负载均衡环境和可用性支持中,一定程度的SSI是必须的。但是,由于无法对二进制的代码和数据结构兼容,必然采用性能更低的中间代码、解释程序或者是扩展动态链接库来实现异构上的"同构",JAVA语言,PVM并行库都在这一领域有着很好的应用。随着WebService和XML技术的发展,将来还有可能在多种不同的编程语言、运行环境中实现令人满意的SSI能力。
安全性
安全性取决于集群结点与外界的互联程度。如果集群的结点不论是物理连接还是IP地址,都是暴露在外的,集群内部的通信完全没有经过保护,我们认为这样的集群系统不具备安全性。黑客或者恶意用户的破坏都会造成集群的不可用。不过这样的集群由于在规划上不需考虑过多,比较容易实施。
如果将集群结点通过防火墙等保护技术隐蔽起来,使集群内部的结点无法从外部非法访问,或者加强结点操作系统本身的安全能力,那么集群系统就具备一定的安全性。因为要考虑安全环境的诸多因素,也必然要增加构造系统的难度。目前,大多数商业集群产品要么使用专有的内部通信协议来实现高效性和安全性,要么与现有的安全产品进行集成,在系统或者网络协议一层扩展安全功能。
集群的可扩展性及其分布式体系结构(3)--上相关推荐
- 集群的可扩展性及其分布式体系结构(2)-下
本文内容包括: 可扩展的并行计算体系结构 可扩展与单一系统映象 集群的重要指标 结束语 参考资料 这篇文章是<集群的可扩展性及其分布式体系结构>第二篇的下半部分,将继续介绍常见的几类并行计 ...
- 集群的可扩展性及其分布式体系结构(1)
前言 "话说天下大势,分久必合,合久必分"高端计算的体系结构发展正是遵循着这样一个规律.从金融.电信等大行业的数据集中处理到分布计算处理,再到二次集中和海量计算,趋势和应用显然是在 ...
- 集群的可扩展性及其分布式体系结构(2)-上
体系结构的发展 过去的几十年里,计算机的发展经历了几代变更.从第一代的真空电子管和继电器存储器计算机到近年以ULSI(超大规模集成电路)为代表的第五代计算机.计算机系统的速度在不断提高,造价和体积却不 ...
- java双机和集群的区别,java 分布式与集群的区别和联系
一.先说区别: 一句话:分布式是并联工作的,集群是串联工作的. 1.分布式是指将不同的业务分布在不同的地方. 而集群指的是将几台服务器集中在一起,实现同一业务. 分布式中的每一个节点,都可以做集群. ...
- hadoop集群的搭建(分布式安装)
集群 计算机集群是一种计算机系统,他通过一组松散集成的计算机软件和硬件连接起来高度紧密地协同完成计算工作. 集群系统中的单个计算机通常称为节点,通常通过局域网连接. 集群技术的特点: 1.通过多台计算 ...
- 分布式面试 - 集群部署时的分布式 session 如何实现?
面试题 集群部署时的分布式 session 如何实现? 面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一 ...
- 集群部署时的分布式 Session 如何实现?
面试题 集群部署时的分布式 session 如何实现? 面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一 ...
- Hadoop集群之HDFS伪分布式安装 HA(二)
1.首先看看HA的对象是谁? 主要解决的是NameNode的HA 2.Datanode不需要HA吗? DataNode的HA是NameNode的checksize机制(主动复制)来解决的 3.Name ...
- Kubernetes 部署一套高可用集群(二进制,v1.18)上
生产环境K8S平台规划 服务器硬件配置推荐 官方提供三种部署方式 为Etcd和APISever自签SSL证书 Etcd数据库集群署 部署Master组件 部署Node组件 部署K8S集群网络 部署集群 ...
最新文章
- HDU - 2181-哈密顿绕行世界问题
- 哀悼日使站点变灰色调的方法
- EL与OGNL以及值栈的理解
- EF Load之详讲
- alertmanager 告警恢复_Prometheus配置企业微信告警
- Python3 使用requests请求,解码时出错:'utf8' codec can't decode byte 0x8b in position 1: invalid start byte...
- linux下gdb调试程序
- github入门到上传本地项目(转)
- linux忘记开机密码解决方案
- 随笔-546 评论-829 文章-21 读书笔记2013第11本:《别逗了,费曼先生》
- 探秘中国网购的数据迷城
- sas导出数据串行解决方案
- 软件测试用例编写方法
- shellcode样本—弹出计算器
- setCookie时遇到的问题
- 计算机 取得高级权限,win10获取system权限,win7获取最高权限
- ffmpeg mov 转 mp4
- 大数据的兴起,数据科学家的崛起
- 学神的“诞生”-2014清华大学本科生特等奖学金答辩观后感
- 解决PHP报错No input file specified
热门文章
- python获取命令行参数,使用getopt获取命令行执行时指定的参数
- sklearn网格搜索GridSearchCV得到各个评价指标的均值与方差
- java5分钟项目讲解_5分钟快速创建spring boot项目的完整步骤
- macos支持exfat吗_在Windows上使用VMware Workstation虚拟机安装macOS
- 台式计算机的拆解与安装实验报告,计算机组成实验的实验报告
- java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合
- kubernetes 磁盘、PV、PVC
- javaScript从入门到精通3.md
- HMM_概率计算——forwar_algorithm实现
- 20150204--JS巩固与加强2-01