1简介
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。
当下我们处在一个互联网飞速发展的信息 社会 ,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化。在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集、数据存储、数据搜索、数据共享、数据传输、数据分析、数据可视化等一系列问题。
传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制、横向扩展受交换设备限制、节点受文件系统限制。
然而分布式存储的出现在一定程度上有效的缓解了这一问题,之所以称之为缓解是因为分布式存储在面对海量数据存储时也并非十全十美毫无压力,依然存在的难点与挑战例如:节点间通信、数据存储、数据空间平衡、容错、文件系统支持等一系列问题仍处在不断摸索和完善中。
2分布式文件系统的一些解决方案
Google Filesystem适合存储海量大个文件,元数据存储与内存中
HDFS(Hadoop Filesystem)GFS的山寨版,适合存储大量大个文件
TFS(Taobao Filesystem)淘宝的文件系统,在名称节点上将元数据存储与关系数据库中,文件数量不在受限于名称节点的内容空间,可以存储海量小文件LustreOracle开发的企业级分布式系统,较重量级MooseFS基于FUSE的格式,可以进行挂载使用MogileFS
擅长存储海量的小数据,元数据存储与关系型数据库中
1简介
MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。
目前使用 MogileFS 的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个
国内所知道的使用 MogileFS 的公司有托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站基本很多网站容量,都超过 30T 以上。
2MogileFS特性
1) 应用层提供服务,不需要使用核心组件
2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)
3)自动复制文件,复制文件的最小单位不是文件,而是class
4)传输中立,无特殊协议,可以通过NFS或>
1选择机架设备
小型企业通过在桌面或架子上堆叠服务器硬件和网络设备来开始运营并不罕见。这样做的成本的确比较低廉,但会存在未来隐患,随着公司业务的发展,这些设备可能会成为一个巨大的混乱。这些设备暴露在外会增加物理篡改的风险,也会埋下一些定时炸d,比如说不小心造成的咖啡溢出,环境灰尘以及员工不小心被暴露的电线绊倒所存在的危险等等。
但是,使用机架式设备能避免这类事故。为什么这样说呢因为这些机架经过专业设计,可以轻松地容纳这种类型的硬件。虽然,与非机架安装等价物相比,它们似乎非常昂贵,但从长远的角度来说,性价比高,你可以使用它们轻松管理你的设备以及其它好处会远远超过其成本。
2要了解服务器机架的基本特征
在购买或安装服务器机架之前,你需要学习并了解服务器机架的基本特征。服务器机架通常以机架单位来衡量,通常表示为“U”或“RU”。机架单元的高度相当于175英寸(445毫米),兼容设备的测量单位为“U”的倍数。通常,服务器的范围从1U到4U,网络交换机在1U到2U之间,而一些刀片服务器在5U到10U之间或甚至更多。
在确定服务器机架之前,你还需要考虑服务器机架的宽度和高度(深度)。通常可接受的宽度为19英寸,深度为600-1,000mm。然而,这些机架中的许多通常具有可调节的后支架,即使大多数机架安装服务器通常包括可调节的安装套件,一旦它们具有足够的深度来容纳服务器就可以使用。
四柱机架是当今市场上最受欢迎的商用服务器机架之一,它设计用于容纳19英寸宽的设备和服务器。
普通机架的高度约为42U,其中一半的机架高度为24U,但有几种其他类型的机架,机架高度从5U到20U不等。这些不是对这些机架外部尺寸的测量,因为该特征高度依赖于机架的设计并且它是变化的。一些机架配有脚轮,有助于缓解运动。
开放式机架和小型壁挂式机柜是在空间有限的地方安装IT服务器的绝佳选择。但是,你需要意识到,如果你决定使用开放式机架,则必须满足特殊要求才能安装服务器,包括将机架固定在地板上。壁挂式机柜不适用于由少数服务器组成或比网络交换机重的任何负载。
3隔离服务器以降低噪音
如果你没有专门放置和存放设备的单独房间,你将不得不考虑内部服务器设备附带的噪音。你需要一个分区的房间,即使它是一个小区域,因为从长远来看,它是值得的。
建立分区以后,能够消除或者减弱那些会影响员工整体工作效率的隐患。另外还有一个好处就是能够防止任何未经授权的人员篡改你的设备,有助于保护设备免受损坏并防止被盗。
在小型企业中,除了将机架放在房间的角落或IT部门内部别无选择外,强烈建议使用具有隔音功能的机架。 由于通风口无法实现完全隔音,因此这些机架通常通过其降噪特性来衡量。它们产生的噪音和机架本身的整体降噪能力的结合通常会决定它们的工作效果。
4想要散发热量则需一个合适的空调机组
IT设备和服务器产生的热量通常很高,可能会缩短设备的使用寿命。它们还可能导致中断和崩溃,这可能很难解释,这就是为什么在构建内部服务器机房时安装冷却装置非常关键的原因。
但是,如果你只需要几个网络交换机,五托架网络连接存储(NAS)系统或服务器,你可能不需要担心冷却系统,除非你需要更大的NAS,多个服务器和一个中型UPS,这样的话热量会迅速增加。
服务器机架的热容量也直接受外部温度的影响。这就是强烈建议你在服务器机房安装空调装置的原因。
只要打开服务器并产生热量,这些空调就必须始终打开。建议使用不同的断路器安装独立的独立装置,以便在需要维修任何一个断路器时可以定期更换它们。
不要想着打开窗户再加上两部风扇来散发热量。
5学会正确处理电缆
只有正确的电缆管理才能确保适当的通风。这就是为什么尝试将42个1U服务器强制进入全高机架是一个非常糟糕的主意,因为它会导致严重的布线限制或限制。许多旧服务器的机箱通常需要彼此之间1U到2U的空间,以确保正确的气流。目前,大多数现代机架式服务器都不需要这些空间。
设置一个装满机架的服务器机房需要的不仅仅是使用一些螺丝来帮助将这些设备固定到位。你需要了解如何管理从这些机架中排列的所有设备及其相应的以太网电缆中出来的电缆。除了机柜内布线外,还需要妥善管理或终止用于IP摄像机,台式计算机和所有其他网络设备的以太网LAN点的电缆。
处理所有这些的最佳方法是使用RJ45配线架终止以太网电缆。安装在1U空间中的普通接线板通常提供多达24个端口,并且通常需要某种形式的手动输入,例如剥离电缆,将其固定到接线板中以及使用线缆测试工具来验证其连接性。根据你的预算,你可以让网络专业人士或专家在一天内为你处理所有这些问题。
除了配线架之外,你还需要使用束线带,因为当你尝试固定杂散电缆时它们会派上用场。你可以获得可以重复使用的标准电缆扎带,当你批量购买时它们非常便宜。
6学会标记,保持简单
在设置服务器时,要学会标记和记录你所使用的流程,这点是非常重要的。这样做,便于任何新员工或者供应商在需要了解服务器机房时,能够高效并系统的了解到服务器的整体系统情况。并且还可以防止可能发生的任何灾难性错误,包括重新启动或拔出系统而不发出任何形式的警告。
正确标记基础设施的最简单和最好的方法之一是使用标签打印机。该打印机可以从任何硬件商店购买。你必须使用正确描述它们的唯一名称或其IP地址来标记网络和服务器设备。你还应该为键盘,鼠标和视频开关,路由器,NAS设备,冗余硬件和数据备份设备等其他IT设备执行相同的 *** 作。
这些注意事项应打印出来并妥善详细,以便轻松解释与你的内部硬件相关的重要程序。这些打印件应贴在冰箱磁铁或服务器机柜上。为了获得最佳结果,它们应包括与数据备份,联网,启动或关闭这些设备相关的 *** 作说明,以防断电。
除了以上几点,还有一些需要你去了解和注意的地方:
a空间要求
b地板和柜子类型
c设备尺寸
d加热和冷却系统
e电气设置
f防火
g紧急电气备份
h安全和警报
最重要的一点是,以上所有内容都要花钱,所以要规划好你的预算,不要让设置服务器机房花掉了你整个IT预算。
CDN集群主机是速腾网络独家推出的新型虚拟主机,CDN集群主机将传统虚拟主机和CDN(Content Delivery Network)有机结合并优化,CDN集群主机比传统虚拟主机访问更快、数据更安全、故障率更低,CDN集群主机必将引领虚拟主机发展潮流!CDN集群虚拟主机的优势:
更高:8 核最高配置服务器、更高等级的数据中心
更快:电信、网通、移动、海外等多个CDN镜像节点,东北网通用户将自动访问东北网通镜像,华南电信用户将自动访问华南电信镜像,海外用户将自动访问海外的镜像。镜像节点与数据中心之间采用BGP高速线路传输,不论客户端是什么网络,均可以全网高速访问。
更强:分布式集群架构,避免单点故障,在线率99999% 。CDN镜像节点智能容错功能,3分钟内自动切换到备用节点,即使原节点死机或机房被封,也毫不影响!
更优:人工审核,只接受正规企业网站,杜绝垃圾网站对您带来的影响; 专用服务器,不与普通网站放在一起。专业团队,优先人工服务。个人用户请选择我司其他产品。
更省:以往此类分布式解决方案价格动辄数万,速腾网络让新浪、网易等门户网站采用的高端技术不再遥不可及,让您以略高于传统虚拟主机的价格即可享受远高于传统虚拟主机的VIP服务。梦幻西游2020服务器浪淘沙有两种方式:
一、个人浪淘沙:在《梦幻西游2020》里可以通过血战本溪,开金莲藕,安句子公主等游戏模块自行浪淘沙;
二、系统浪淘沙:在《梦幻西游2020》的结婚、浪淘沙等游戏模式里,玩家可以通过进行币币兑换获得相应的道具,并可以通过金币购买道具。只要浪淘沙单次消耗40金币,即可凭空获得道具,带来过足功夫打个折扣的购物体验!随着信息技术的发展,网络阅卷系统在各类考试中逐渐得到应用,减少了人工阅卷方式在试卷处理、试卷评阅及成绩处理等环节的工作量。高考改卷采用网络阅卷系统较早,由于受电脑数量、评卷教师人数等因素限制,高考改卷一般采用分科集中阅卷的方式,每个学科由300人至400人分组单独阅卷,后期通过人工合成各科成绩。由于集中式网络阅卷在人员安排、电脑配置上的局限性,因此,需要研究在教育城域网内如何实现分布式网络阅卷,解决更大规模人数的阅卷问题。下面以我市为例介绍解决方式。
台州市9个县区的学校有高中阶段每个年级各约2万考生,参加10个科目的统考。自2008年实施分布式网络阅卷系统(以下简称本系统)以来,台州市教育系统经过对本系统的多次调整优化,目前可以实现2400人同时评阅高中段6万考生的试卷,在2天内完成所有阅卷工作,并自动生成相应的学生成绩表及分析报表。本系统由网络系统、硬件系统及软件系统三部分组成。
一、网络系统设计
网络系统是实施分布式阅卷的基础,用于各个分布式阅卷点的网络接入。因为各个学校网络接入形式不一致,既有通过县区教育城域网统一出口的学校,也有直接接入互联网的学校。另外,各类考试的保密要求不同,如中考阅卷具有保密性要求,而高中期末考试则无相应要求。因此,本系统应考虑多种网络接入方式,无保密性要求的网络阅卷可通过互联网接入,具有保密要求的网络阅卷则可以通过专网接入,可采用MPLS 或SDH等方式通过光纤组网,确保系统运行时与其他网络物理隔离。
首先,需要考虑本系统网络的稳定性问题。由于SDH方式组网后对广播风暴抑制能力较弱,台州市中考阅卷采用MPLS 网络接入,每个县区设置一个接入点,用于当地阅卷客户端的接入及扫描数据上传。高中期末联考则采用MPLS 网络与互联网接入混合的方式。
其次,需要考虑本系统互联网出口带宽及MPLS 汇聚带宽的问题。经多次网络阅卷运行测试,每个评卷客户端在阅卷时主要传送试卷切分,所需平均带宽为40Kbps至50Kbps。台州市高中段一个年级2万考生所有学科评阅卷所需带宽约为72Mbps至80Mbps,按这样的带宽考虑本系统扩充问题,以及后期教育资源共享等应用业务的开展,互联网出口采用100Mbps专线,MPLS 网络采用1000Mbps专线。
二、硬件系统设计
1服务器系统
服务器系统包括数据库服务器、评卷服务器、图像服务器,是分布式阅卷软件运行的基础平台。数据库服务器为数据库系统的稳定运行提供保障,对CPU资源要求较高。本系统采用ORACLE 9i作为后台数据库。经实际测试,在2×2CPU+4G内存配置的单台服务器平台上同时进行高中段10个科目,每个科目单个年级段有2万条记录的网络评卷,系统运行稳定。评卷服务器实现网络阅卷界面的登录,主要负责>Dryad:MapReduce之外的新思路 目前各大软件巨头都搭建了自己的分布式平台解决方案,主要包括Dryad,DynamoSDMapReduce等框架。2010年12月21日,微软发布了Dryad的测试版本,成为谷歌MapReduce分布式并行计算平台的竞争对手。Dryad是微软构建云计算基础设施的重要核心技术之一,它可以让开发人员在Windows或者,NET平台上编写大规模的并行应用程序模型,并能够让在单机上编写的程序运行在分布式并行计算平台上。工程师可以利用数据中心的服务器集群对数据进行并行处理,当工程师在 *** 作数千台计算机时,无需关心分布式并行计算系统方面的细节。
DryadgDDryadLINO是微软硅谷研究院创建的研究项目,主要用来提供一个分布式并行计算平台。DryadLINO是分布式计算语言,能够将LINQ编写的程序转变为能够在Dryad上运行的程序,使普通程序员也可以轻易进行大规模的分布式计算。它结合了微软Dryad和LINO两种关键技术,被用于在该平台上构建应用。Dryad构建在Cluster Service(集群服务)和分布式文件系统之上,可以处理任务的创建和管理、资源管理,任务监控和可视化、容错,重新执行和调度等工作。
Dryad同MapReduce样,它不仅仅是种编程模型,同时也是一种高效的任务调度模型。Dryad这种编程模型不仅适用于云计算,在多核和多处理器以及异构机群上同样有良好的性能。在VisualStudio 2010 C++有一套并行计算编程框架,支持常用的协同任务调度和硬件资源(例如CPU和内存等)管理,通过WorkStealing算法可以充分利用细颗粒度并行的优势,来保证空闲的线程依照一定的策略建模,从所有线程队列中“偷取”任务执行,所以能够让任务和数据粒度并行。Dryad与上述并行框架相似,同样可以对计算机和它们的CPU进行调度,不同的是Dryad被设计为伸缩于各种规模的集群计算平台,无论是单台多核计算机还是由多台计算机组成的集群,甚至拥有数千台计算机的数据中心,都能以从任务队列中创建的策略建模来实现分布式并行计算的编程框架。
Dryad系统架构
Dryad系统主要用来构建支持有向无环图(Directed Acycline Graph,DAG)类型数据流的并行程序,然后根据程序的要求进行任务调度,自动完成任务在各个节点上的运行。在Dryad平台上,每个任务或并行计算过程都可以被表示为一个有向无环图,图中的每个节点表示一个要执行的程序,节点之间的边表示数据通道中数据的传输方式,其可能是文件、TCPPipe、共享内存
用Dryad平台时,首先需要在任务管理(JM)节点上建立自己的任务,每一个任务由一些处理过程以及在这些处理过程问的数据传递组成。任务管理器(JM)获取无环图之后,便会在程序的输入通道准备,当有可用机器的时候便对它进行调度。JM从命名服务器(NS)那里获得一个可用的计算机列表,并通过一个维护进程(PD)来调度这个程序。
Dryad的执行过程可以看做是一个二维管道流的处理过程,其中每个节点可以具有多个程序的执行,通过这种算法可以同时处理大规模数据。在每个节点进程(VerticesProcesses)上都有一个处理程序在运行,并且通过数据管道(Channels)的方式在它们之间传送数据。二维的Dryad管道模型定义了一系列的 *** 作,可以用来动态地建立并且改变这个有向无环图。这些 *** 作包括建立新的节点,在节点之间加入边,合并两个图以及对任务的输入和输出进行处理等。
Dryad模型算法应用
DryadLINQ可以根据工程师给出的LINQ查询生成可以在Dryad引擎上执行的分布式策略算法建模(运算规则),并负责任务的自动并行处理及数据传递时所需要的序列化等 *** 作。此外,它还提供了一系列易于使用的高级特性,如强类型数据、Visual Studio集成调试以及丰富的任务优化策略(规则)算法等。这种模型策略开发框架也比较适合采用领域驱动开发设计(DDD)来构建“云”平台应用,并能够较容易地做到自动化分布式计算。
我们经常会遇到网站或系统无法承载大规模用户并发访问的问题,解决该问题的传统方法是使用数据库,通过数据库所提供的访问 *** 作接口来保证处理复杂查询的能力。当访问量增大,单数据库处理不过来时便增加数据库服务器。如果增加了三台服务器,再把用户分成了三类A(学生)、B(老师),C(工程师)。每次访问时先查看用户属于哪一类,然后直接访问存储那类用户数据的数据库,则可将处理能力增加三倍,这时我们已经实现了一个分布式的存储引擎过程。
我们可以通过Dryad分布式平台来解决云存储扩容困难的问题。如果这三台服务器也承载不了更大的数据要求,需要增加到五台服务器,那必须更改分类方法把用户分成五类,然后重新迁移已经存在的数据,这时候就需要非常大的迁移工作,这种方法显然不可取。另外,当群集服务器进行分布式计算时,每个资源节点处理能力可能有所不同(例如采用不同硬件配置的服务器),如果只是简单地把机器直接分布上去,性能高的机器得不到充分利用,性能低的机器处理不过来。
Dryad解决此问题的方法是采用虚节点,把上面的A、B、C三类用户都想象成一个逻辑上的节点。一台真实的物理节点可能会包含一个或者几个虚节点(逻辑节点),看机器的性能而定。我们可以把那任务程序分成Q等份(每一个等份就是一个虚节点),这个Q要远大于我们的资源数。现在假设我们有S个资源,那么每个资源就承担Q/S个等份。当一个资源节点离开系统时,它所负责的等份要重新均分到其他资源节点上;当一个新节点加入时,要从其他的节点1偷取2一定数额的等份。
在这个策略建模算法下,当一个节点离开系统时,虽然需要影响到很多节点,但是迁移的数据总量只是离开那个节点的数据量。同样,~个新节点的加入,迁移的数据总量也只是一个新节点的数据量。之所以有这个效果是因为Q的存在,使得增加和减少节点的时候不需要对已有的数据做重新哈希(D)。这个策略的要求是Q>>s(存储备份上,假设每个数据存储N个备份则要满足Q>>SN)。如果业务快速发展,使得不断地增加主机,从而导致Q不再满足Q>>S,那么这个策略将重新变化。
Dryad算法模型就是一种简化并行计算的编程模型,它向上层用户提供接口,屏蔽了并行计算特别是分布式处理的诸多细节问题,让那些没有多少并行计算经验的开发 人员也可以很方便地开发并行应用,避免了很多重复工作。这也就是Dryad算法模型的价值所在,通过简化编程模型,降低了开发并行应用的入门门槛,并且能大大减轻了工程师在开发大规模数据应用时的负担。
通过上述的论述,我们可以看到Dryad通过一个有向无环图的策略建模算法,提供给用户一个比较清晰的编程框架。在这个编程框架下,用户需要将自己的应用程序表达为有向无环图的形式,节点程序则编写为串行程序的形式,而后用Dryad方法将程序组织起来。用户不需要考虑分布式系统中关于节点的选择,节点与通信的出错处理手段都简单明确,内建在Dryad框架内部,满足了分布式程序的可扩展性、可靠性和对性能的要求。
使用Drvad LINO
通过使用DryadLINQ编程,使工程师编写大型数据并行程序能够轻易地运行在大型计算机集群里。DryadLINO开发的程序是一组顺序的L_NQ代码,它们可以针对数据集做任何无副作用的 *** 作,编译器会自动将其中数据并行的部分翻译成并行执行的计划,并交由底层的Dryad平台完成计算,从而生成每个节点要执行的代码和静态数据,并为所需要传输的数据类型生成序列化代码;
LINQ本身是,NET引入的组编程结构,它用于像 *** 作数据库中的表一样来 *** 作内存中的数据集合。DryadLINQ提供的是一种通用的开发/运行支持,而不包含任何与实际业务,算法相关的逻辑,Dryad和DryadLINQ都提供有API。DryadLINQ使用和LINQ相同的编程模型,并扩展了少量 *** 作符和数据类型以适用于数据并行的分布式计算。并从两方面扩展了以前的计算模型(SQL,MapReduce,Dryad等)它是基于,NET强类型对象的,表达力更强的数据模型和支持通用的命令式和声明式编程(混合编程),从而延续了LINQ代码即数据(treat codeas data)的特性。
DryadLINQ使用动态的代码生成器,将DryadLINQ表达式编译成,NET字节码。这些编译后的字节码会根据调度执行的需要,被传输到执行它的机器上去。字节码中包含两类代码完成某个子表达式计算的代码和完成输入输出序列化的代码。这种表达式并不会被立刻计算,而是等到需要其结果的时候才进行计算。DryadLINQ设计的核心是在分布式执行层采用了一种完全函数式的,声明式的表述,用于表达数据并行计算中的计算。这种设计使得我们可以对计算进行复杂的重写和优化,类似于传统的并行数据库。从而解决了传统分布式数据库SQL语句功能受限与类型系统受限问题,以及MapReduce模型中的计算模型受限和没有系统级的自动优化等问题。
在Dryad编程模式中,应用程序的大规模数据处理被分解为多个步骤,并构成有向无环图形式的任务组织,由执行引擎去执行。这两种模式都提供了简单明了的编程方式,使得工程师能够很好地驾驭云计算处理平台,对大规模数据进行处理。Dryad的编程方式可适应的应用也更加广泛,通过DryadLINQ所提供的高级语言接口,使工程师可以快速进行大规模的分布式计算应用程序的编写。
Dryad技术的应用
云计算最重要的概念之~就是可伸缩性,实现它的关键是虚拟化。通过虚拟化可以在一台共享计算机上聚集多个 *** 作系统和应用程序,以便更好地利用服务器。当一个服务器负载超荷时,可以将其中一个 *** 作系统的一个实例(以及它的应用程序)迁移到一个新的,相对闲置的服务器上。虚拟化(Virtualization)是云计算的基石,企业实现私有云的第一步就是服务器基础架构进行虚拟化。基础设施虚拟化之后。接下来就是要将现有应用迁移到虚拟环境中。
Dryad结合Hyper-V(Windows Server 2008的一个关键组成部分)虚拟化技术。可以实现TB级别数据的在线迁移。中小型企业也可以针对企业内部小型集群服务器进行分布式应用系统编程,以及制定私有云开发与应用解决方案等设计。Windows Azure是微软的公有云解决方案,但是目前要大规模应用还为时过早。使用现有Windows第三方产品实现私有云,花费成本却很大。然而Dryad技术给我们带来了不错的折中选择,当我们基于Windows Server台运行应用系统或者网站时,便可以基于Dryad分布式架构来开发与设计实现。当公有云时机成熟和各种条件完备时,系统可以很轻易地升级到公有云,企业而无需花费太多成本。
写在最后
云计算可以看成是网络计算与虚拟化技术的结合,利用网络的分布式计算能力将各种IT资源筑成一个资源池,然后结合成熟的存储虚拟化和服务虚拟化技术,让用户实时透明地监控和调配资源。Dryad是实现构建微软云计算基础设施的重要核心技术之一,其具有诸多优点,如DryadLINQ具有声明式编程并将 *** 作的对象封装为,NET类数据,方便数据 *** 作,自动并行化、VisualStudio IDE和,NET类库集成,自动序列化和任务图的优化(静态和动态(主要通过DryadAPI实现)),对J0in进行了优化,得到了比BigTable+MapReduee更快的Join速率和更易用的数据 *** 作方式等。
不过,Dryad和DryadLINQ也同样具有局限性。其一,它更适用于批处理任务,而不适用于需要快速响应的任务;这个数据模型更适用于处理流式访问,而不是随机访问。其二,DryadLINQ使用的是,NET的LINO查询语言模型,针对运行Windows HPC Server的计算机集群设计,而目前高性能计算市场被Einux所占领。此外,和MapReduce的应用时间和实践相比,Dryad的可靠性还明显不足,据了解除了微软AdCenter中的数据分析和Trident项目之外,其它应用Dryad的地方还很少。不过总的来看,Dryad平台在将来仍具有很广泛的发展前景,尤其对NET开发人员来说是―次很重要的技术革新机遇。
名词解释
任务管理器(Job Manager,JM):每个Job的执行被一个Job Manager控制,该组件负责实例化这个Job的工作图,在计算机群上调度节点的执行;监控各个节点的执行情况并收集一些信息,通过重新执行来提供容错:根据用户配置的策略动态地调整工作图。
计算机群(Cluster):用于执行工作图中的节点。
命名服务器(Name Server,Ns):负责维护cluster中各个机器的信息。
维护进程(PDaemon,PD):进程监管与调度工作。分布式架构的演进
系统架构演化历程-初始阶段架构
初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP
特征:
应用程序、数据库、文件等所有的资源都在一台服务器上。
描述:
通常服务器 *** 作系统使用Linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用MySQL,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。
系统架构演化历程-应用服务和数据服务分离
好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver
特征:
应用程序、数据库、文件分别部署在独立的资源上。
描述:
数据量增加,单台服务器性能及存储空间不足,需要将应用和数据分离,并发处理能力和数据存储空间得到了很大改善。
系统架构演化历程-使用缓存改善性能
特征:
数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力。
描述:
系统访问特点遵循二八定律,即80%的业务访问集中在20%的数据上。
缓存分为本地缓存和远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况。
系统架构演化历程-使用应用服务器集群
在做完分库分表这些工作后,数据库上的压力已经降到比较低了,又开始过着每天看着访问量暴增的幸福生活了,突然有一天,发现系统的访问又开始有变慢的趋势了,这个时候首先查看数据库,压力一切正常,之后查看webserver,发现apache阻塞了很多的请求,而应用服务器对每个请求也是比较快的,看来 是请求数太高导致需要排队等待,响应速度变慢
特征:
多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
描述:
使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈。
系统架构演化历程-数据库读写分离
享受了一段时间的系统访问量高速增长的幸福后,发现系统又开始变慢了,这次又是什么状况呢,经过查找,发现数据库写入、更新的这些 *** 作的部分数据库连接的资源竞争非常激烈,导致了系统变慢
特征:
多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
描述:
使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,使得服务器的负载压力不在成为整个系统的瓶颈。
系统架构演化历程-反向代理和CDN加速
特征:
采用CDN和反向代理加快系统的 访问速度。
描述:
为了应付复杂的网络环境和不同地区用户的访问,通过CDN和反向代理加快用户访问的速度,同时减轻后端服务器的负载压力。CDN与反向代理的基本原理都是缓存。
系统架构演化历程-分布式文件系统和分布式数据库
随着系统的不断运行,数据量开始大幅度增长,这个时候发现分库后查询仍然会有些慢,于是按照分库的思想开始做分表的工作
特征:
数据库采用分布式数据库,文件系统采用分布式文件系统。
描述:
任何强大的单一服务器都满足不了大型系统持续增长的业务需求,数据库读写分离随着业务的发展最终也将无法满足需求,需要使用分布式数据库及分布式文件系统来支撑。
分布式数据库是系统数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用,更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上。
系统架构演化历程-使用NoSQL和搜索引擎
特征:
系统引入NoSQL数据库及搜索引擎。
描述:
随着业务越来越复杂,对数据存储和检索的需求也越来越复杂,系统需要采用一些非关系型数据库如NoSQL和分数据库查询技术如搜索引擎。应用服务器通过统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
系统架构演化历程-业务拆分
特征:
系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署。
描述:
为了应对日益复杂的业务场景,通常使用分而治之的手段将整个系统业务分成不同的产品线,应用之间通过超链接建立关系,也可以通过消息队列进行数据分发,当然更多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。
纵向拆分:
将一个大应用拆分为多个小应用,如果新业务较为独立,那么就直接将其设计部署为一个独立的Web应用系统
纵向拆分相对较为简单,通过梳理业务,将较少相关的业务剥离即可。
横向拆分:将复用的业务拆分出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务
横向拆分需要识别可复用的业务,设计服务接口,规范服务依赖关系。
系统架构演化历程-分布式服务
特征:
公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用。
描述:
随着业务越拆越小,应用系统整体复杂程度呈指数级上升,由于所有应用要和所有数据库系统连接,最终导致数据库连接资源不足,拒绝服务。
Q:分布式服务应用会面临哪些问题?
A:
(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
(2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
(3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
(4) 服务多了,沟通成本也开始上升,调某个服务失败该找谁?服务的参数都有什么约定?
(5) 一个服务有多个业务消费者,如何确保服务质量?
(6) 随着服务的不停升级,总有些意想不到的事发生,比如cache写错了导致内存溢出,故障不可避免,每次核心服务一挂,影响一大片,人心慌慌,如何控制故障的影响面?服务是否可以功能降级?或者资源劣化?
Java分布式应用技术基础
分布式服务下的关键技术:消息队列架构
消息对列通过消息对象分解系统耦合性,不同子系统处理同一个消息
分布式服务下的关键技术:消息队列原理
分布式服务下的关键技术:服务框架架构
服务框架通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务启用
服务框架是一个点对点模型
服务框架面向同构系统
适合:移动应用、互联网应用、外部系统
分布式服务下的关键技术:服务框架原理
分布式服务下的关键技术:服务总线架构
服务总线同服务框架一样,均是通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务启用
服务总线是一个总线式的模型
服务总线面向同构、异构系统
适合:内部系统
分布式服务下的关键技术:服务总线原理
分布式架构下系统间交互的5种通信模式
request/response模式(同步模式):客户端发起请求一直阻塞到服务端返回请求为止。
Callback(异步模式):客户端发送一个RPC请求给服务器,服务端处理后再发送一个消息给消息发送端提供的callback端点,此类情况非常合适以下场景:A组件发送RPC请求给B,B处理完成后,需要通知A组件做后续处理。
Future模式:客户端发送完请求后,继续做自己的事情,返回一个包含消息结果的Future对象。客户端需要使用返回结果时,使用Future对象的get(),如果此时没有结果返回的话,会一直阻塞到有结果返回为止。
Oneway模式:客户端调用完继续执行,不管接收端是否成功。
Reliable模式:为保证通信可靠,将借助于消息中心来实现消息的可靠送达,请求将做持久化存储,在接收方在线时做送达,并由消息中心保证异常重试。
五种通信模式的实现方式-同步点对点服务模式
五种通信模式的实现方式-异步点对点消息模式1
五种通信模式的实现方式-异步点对点消息模式2
五种通信模式的实现方式-异步广播消息模式
分布式架构下的服务治理
服务治理是服务框架/服务总线的核心功能。所谓服务治理,是指服务的提供方和消费方达成一致的约定,保证服务的高质量。服务治理功能可以解决将某些特定流量引入某一批机器,以及限制某些非法消费者的恶意访问,并在提供者处理量达到一定程度是,拒绝接受新的访问。
基于服务框架Dubbo的服务治理-服务管理
可以知道你的系统,对外提供了多少服务,可以对服务进行升级、降级、停用、权重调整等 *** 作
可以知道你提供的服务,谁在使用,因业务需求,可以对该消费者实施屏蔽、停用等 *** 作
基于服务框架Dubbo的服务治理-服务监控
可以统计服务的每秒请求数、平均响应时间、调用量、峰值时间等,作为服务集群规划、性能调优的参考指标。
基于服务框架Dubbo的服务治理-服务路由
基于服务框架Dubbo的服务治理-服务保护
基于服务总线OSB的服务治理-功能介绍
基于服务总线OSB的服务治理
Q:Dubbo到底是神马?
A:
淘宝开源的高性能和透明化的RPC远程调用服务框架
SOA服务治理方案
Q:Dubbo原理是?
A:
-结束-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)