分布式资源管理

分布式资源管理

中国科大软件学院 熊莉 原创文章转载请注明出处

一:互联网的起源

1969年,美国国防部研究计划管理局开始建立一个命名为ARPANET的网络,当时建立这个网络的目的只是为了将美国的几个军事及研究用电脑主机连接起来,以应对未来有可能爆发的核危机,人们普通认为这就是Internet的雏形。

1985年,美国国家科学基金会(NFS)建立NSFNET。发展互联网时沿用了ARPANET的技术和协议,而在互联网正式形成之前,已经建立了以ARPANET为主的国际网,这种网络之间的连接模式也是随后互联网所用的模式。NSF规划建立15个超级计算中心及国家教育科研网,用于支持科研和教育的全国性规模的计算机网络NFSNET,并以此作为基础,实现同其他网络的连接。NSFNET成为Internet上主要用于科研和教育的主干部分,代替了ARPANET的骨干地位。

1989年,由ARPANET分离出来的MILNET实现了和NSFNET连接后,就开始采用Internet这个名称。从此以后,其他部门的计算机网相继并入互联网,ARPANET宣告解散。

90年代初,商业机构开始进入互联网,使互联网开始了商业化的新进程,也成为互联网大发展的强大推动力。

1995年,NSFNET停止动作,互联网已彻底商业化了。随着商业网络和大量商业公司进入互联网,网上商业应用取得调整的发展,同时也使互联网能为用户提供更多的服务,使互联网迅速普及和发展起来。

 

二:计算机网络技术

 

硬件设备:网卡是接入局域网或因特网,进行数据的转换与通信;通信电缆是连接计算机与网络设备;集线器或交换机是连接网络中的各台计算机,帮助数据信息在不同机器上进行传输。

网络设备:集线器和中继器是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上;交换机为接入交换机的任意两个网络节点提供独享的电信号通路;路由器是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号;网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来。

协议:一套规则和协定的正式描述,它们管理设备在网络中通信的某一特定方面。协议规定了数据通信中的格式、定时、顺序和差错控制。没有协议,计算机就无法把从另一台计算机传过来的比我流组合成为原始的数据。协议控制数据通信的所有方面,它们决定物理网络如何构建,计算机如何连接到网络,数据在传输中采用怎样的格式,以及数据如何发送。

单播、组播、广播:单播在发送者和接收者之间实现一对一的网络连接;组播在发送者和每一个接收者之间实现一对多的网络连接;广播在发送者发送给网络上所有节点的数据分组,通过广播地址进行识别。

CSMA/CD:以太网使用载波监听多址与冲突检测和处理冲突,并管理通信的恢复。由于所有共享逻辑总线的设备在同样的介质上发送报文,CSMA用于
检测电缆上的电信号活动。当设备检测到没有其他计算机在传送帧或载波信号时,就会发送信息。

 

三:互联网架构的演变

 

(1)物理分离webserver和数据库:由开始直接在互联网上搭建一个网站,随着访问人的数量增大,服务器响应的速度也越来越慢,而此时因为应用与数据库的互相影响太大,于是将应用和数据库从物理上分享,变成了两台机器。

(2)增加前端页面缓存:随着访问的人数越来越多,访问数据库的操作太多,导致数据连接竞争激烈,但数据库连接又不能开太多,会造成数据库机器压力增加,反而得不偿失,于是提出了对相对静态的页面缓存,保存在机器上,这样用户第二再访问的时候不必再去访问数据库。

(3)增加页面片段缓存:为了更进一步的提高性能,尝试将动态页面的相对静态部分也缓存起来,这样可以大大提高访问速度。

(4)数据缓存:由于用户在进行操作时需要获取数据信息,对同一用户不需重复操作,如此可以将用户的数据信息缓存到本地内存。

(5)增加webserver:如果想要更进一步的提高服务器的访问性能,采用多台服务器为更多的用户服务,这样用户访问的时候可以让更多的服务器服务。

(6)分库:由于数据库中连接,修改等操作太多,竞争过于激烈,数据库机器不能一下子为这么多的程序服务,因此选择将数据库集群和分库策略。

(7)分表、DAL和分布式缓存:随着系统的不断运行,数据量开始大幅度增长,按照分库的思想开始做分表的工作,而此时应用就要开始关心分库分表的规则等,所以增加一个通用的框架来实现分库分表的数据访问,此时发现之前的缓存同步方案也出现了问题,因为数据量太大,导致现在不太可能将缓存存在本地,然后同步的方式,需要采用分布式缓存方案了,于是将大量的数据缓存转移到分布式缓存上。

(8)增加更多的webserver:用户的请求需要排队而服务器的处理速度来不及处理数量太大的请求,响应速度变慢,于是添加一些webserver服务器。

(9)数据读写分离和廉价存储方案:由于添加的webserver太多了,导致数据库连接的资源不够用,而这个时候又已经分库分表了,开始分析数据库的压力状况,可能会发现数据库的读写比很高,这个时候通常会想到数据读写分离的方案,因此这个阶段可能会形成的架构演变是实现数据读写分离,同时编写一些更为廉价的存储方案,例如Big Table

(10)进入大型分布式应用时代和廉价服务器群:不断的增加webserver就可以支撑越来越高的访问量,对于大型网站而言,各种和样的功能需求也开始爆发性的增长,这个时候突然发现,原来部署在webserver上的那个web应用已经非常庞大了,当多个团队都开始对其进行改动时,可真是相当的不方便,复用性也相当糟糕,基本是每个团队都做了或多或少重复的事情,而且部署和维护也是相当的麻烦, 因为庞大的应用包在N台机器上复制、启动都需要耗费不少的时间,出问题的时候也不是很好查,另外一个更糟糕的状况是很有可能会出现某个应用上的bug就导致了全站都不可用,还有其他的像调优不好操作(因为机器上部署的应用什么都要做,根本就无法进行针对性的调优)等因素,根据这样的分析,开始痛下决心,将系统根据职责进行拆分,于是一个大型的分布式应用就诞生了,通常,这个步骤需要耗费相当长的时间,因为会碰到很多的挑战。

从上面可以看出为了使信息能够在不同的用户之间通信使用了一系列的技术来支持,并实现资源的共享。与随后出现的web网页技术,数据与应用程序的共享的需求也越来越大,P2P等技术也就应运而生了,据研究表明,网络上的P2P流量在白天占有60%流量,而到了晚上就升到了90%,但是却没有更好的工具可以管理网上的资源,虽然有相关的协议如SNMP简单网络管理协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。但是这远远是不够,大型网络由于一些资源使用的限制,各种各样的网络设备的增多对原本成功的资源分布式管理方式带来了更大的挑战。

整个网站架构的经典演变过程都和上面比较的类似,当然,每步采取的方案,演变的步骤有可能有不同,另外,由于网站的业务不同,会有不同的专业技术的需求,像数据库集群、数据挖掘、搜索等,但在真实的演变过程中还会借助像提升硬件配置、网络环境、改造操作系统、CDN镜像等来支撑更大的流量,因此在真实的发展过程中还会有很多的不同,另外一个大型网站要做到的远远不仅仅上面这些,还有像安全、运维、运营、服务、存储等。

 

四:SDN的诞生

 

传统的架构已经不适应新的业务需求了,需要太多的手动操作,网络变得更困难了,网络操作需要跟其他的IT操作的集成与协作,由于忙于维护很难快速部署新业务,部署网络设备很麻烦,使用原始的工具来手动管理IP地址,由于跟其他的IT团队缺乏合作,难以应用新技术。因此SDN诞生了,SDN不是一种具体的技术,而是一种思想,一种理念,SDN的核心诉求是让软件应用参与到网络控制中并起到主导作用,而不是让各种固定模式的协议来控制网络,是基于流消息的控制。

从路由器的设计上看,它是由软件控制和硬件数据通道组成。软件控制包括管理以及路由协议等,数据通道包括针对每个包的查询、交换和缓存。如果将网络中所有的网络设备视为被管理的资源,可以抽象也一个网络操作系统的概念,这个网络操作系统一方面底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。这样基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。Openflow仅仅是一个转发表管理协议,SDN提出控制层面的抽象,目前的MAC层和IP层能做到很好的抽象但是对于控制接口来说并没有作用。我们以处理高复杂度(因为有太多的复杂功能加入到了体系结构当中,比如OSPFBGP,组播,区分服务,流量工程,NAT,防火墙,MPLS,冗余层等等)的网络拓扑、协议、算法和控制来让网络工作,我们完全可以对控制层进行简单、正确的抽象。SDN给网络设计规划与管理提供了极大的灵活性,我们可以选择集中式或是分布式的控制,对微量流(如校园网的流)或是聚合流(如主干网的流)进行转发时的流表项匹配,可以选择虚拟实现或是物理实现。

openflow协议的四个规范 

1openflow的端口 

a) 物理端口,即设备上物理可见的端口; 

b) 逻辑端口,在物理端口基础上由Switch设备抽象出来的逻辑端口,如为tunnel或者聚合等功能而实现的逻辑端口; 

c) OpenFlow定义的端口。OpenFlow目前总共定义了ALLCONTROLLERTABLEIN_PORTANYLOCALNORMALFLOOD8种端口,其中后3种为非必需的端口,只在混合型的OpenFlow Switch中存在。

2)流表 

OpenFlow通过用户定义的或者预设的规则来匹配和处理网络包。一条OpenFlow的规则由匹配域(Match Fields)、优先级(Priority)、处理指令(Instructions)和统计数据(如Counters)等字段组成,如下图所示。 

  

在一条规则中,可以根据网络包在L2L3或者L4等网络报文头的任意字段进行匹配,比如以太网帧的源MAC地址,IP包的协议类型和IP地址,或者TCP/UDP的端口号等。目前OpenFlow的规范中还规定了Switch设备厂商可以选择性地支持通配符进行匹配。 

  3)通信通道 

OpenFlow规范定义了一个OpenFlow Switch如何与Controller建立连接、通讯以及相关消息类型等。 

OpenFlow规范中定义了三种消息类型: 

a Controller/Switch消息,是指由Controller发起、Switch接收并处理的消息,主要包括FeaturesConfigurationModify-StateRead-StatePacket-outBarrierRole-Request等消息。这些消息主要由Controller用来对Switch进行状态查询和修改配置等操作。 

b 异步(Asynchronous)消息,是由Switch发送给Controller、用来通知Switch上发

生的某些异步事件的消息,主要包括Packet-inFlow-RemovedPort-statusError等。例如,当某一条规则因为超时而被删除时,Switch将自动发送一条Flow-Removed消息通知Controller,以方便Controller作出相应的操作,如重新设置相关规则等。 

c 对称(Symmetric)消息,顾名思义,这些都是双向对称的消息,主要用来建立连接、检测对方是否在线等,包括HelloEchoExperimenter三种消息。

Openflow的应用 

随着OpenFlow/SDN概念的发展和推广,其研究和应用领域也得到了不断拓展。目前,关于OpenFlow/SDN的研究领域主要包括网络虚拟化、安全和访问控制、负载均衡、聚合网络和绿色节能等方面。另外,还有关于OpenFlow和传统网络设备交互和整合等方面的研究。 

  a) Flowvisor 

网络虚拟化的本质是要能够抽象底层网络的物理拓扑,能够在逻辑上对网络资源进行分片或者整合,从而满足各种应用对于网络的不同需求。为了达到网络分片的目的,FlowVisor实现了一种特殊的OpenFlow Controller,可以看作其他不同用户或应用的Controllers与网络设备之间的一层代理。因此,不同用户或应用可以使用自己的Controllers来定义不同的网络拓扑,同时FlowVisor又可以保证这些Controllers之间能够互相隔离而互不影响 

  b) 负载均衡 

传统的负载均衡方案一般需要在服务器集群的入口处,通过一个gateway或者router来监测、统计服务器工作负载,并据此动态分配用户请求到负载相对较轻的服务器上。既然网络中所有的网络设备都可以通过OpenFlow进行集中式的控制和管理,同时应用服务器的负载可以及时地反馈到OpenFlowController那里,那么OpenFlow就非常适合做负载均衡的工作。Aster*x通过Host ManagerNet Manager来分别监测服务器和网络的工作负载,然后将这些信息反馈给FlowManager,这样Flow Manager就可以根据这些实时的负载信息,重新定义网络设备上的OpenFlow规则,从而将用户请求(即网络包)按照服务器的能力进行调整和分发。  

c) 绿色节能的网络服务ElasticTree 

在数据中心和云计算环境中,如何降低运营成本是一个重要的研究课题。能够根据工作负荷按需分配、动态规划资源,不仅可以提高资源的利用率,还可以达到节能环保的目的。ElasticTree创新性地使用OpenFlow,在不影响性能的前提下,根据网络负载动态规划路由,从而可以在网络负载不高的情况下选择性地关闭或者挂起部分网络设备,使其进入节电模式达到节能环保、降低运营成本的目的。Elastic tree逻辑上分成三个功能模块——优化、寻址、能量控制。优化器的输入时当前网络的拓扑、流量矩阵和每个交换机的能量模型、和希望得到的保证正常包交换的冗余流量和端口。优化器的输出是用于能量控制盒路由寻址的一组活动组件。寻址模块为所有流来寻址并在网络中转发,同时,能量控制模块来切换各端口、线卡和整个交换机的能耗状态。

 

五:镜像网站技术和CDN内容分发网络

        镜像网站是指将一个完全相同的站点放到几个服务器上,分别有自己的URL,这些服务器上的网站互相称为镜像网站。镜像网站和主站并没有太大差别,或者可以视为主站的拷贝。镜像网站的好处是:如果不能对主站作正常访问(如服务器故障,网络故障或者网速太慢等),仍能通过镜像服务器获得服务。不便之处是:更新网站内容的时候,需要同时更新多个服务器;需要用户记忆超过一个网址,或需要用户选择访问多个镜像网站中的一个,而用户选择的,不一定是最优的。在用户选择的过程中,缺乏必要的可控性。

在互联网发展的初期,互联网上的网站内容很少,而且大都是静态内容,更新频率底。但因为服务器运算能力低,带宽小,网速慢,热门网站的访问压力还是很大。镜像网站技术在这种情况下作为一种有效解决方案,被广泛采用。随着互联网的发展,越来越多的网站使用服务器端脚本动态生成内容,同步更新越来越困难,对可控性要求越来越高,镜像技术因为不能满足这类网站的需要,渐渐的淡出了人们的视线。但有一些大型的软件下载站,因为符合镜像网站的条件——下载的内容是静态的,更新频率较低,对带宽,速度要求又比较高,如国外的SourceForge http://www.SourceForge.net,著名开源软件托管网站),Fedorahttp://fedoraproject.orgRedHat赞助的Linux发行版),国内的华军软件园(http://www.onlinedown.net),天空软件站(http://www.skycn.com)等,还在使用这项技术

         CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的互联网中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,分散服务器的压力,解决互联网拥挤的状况,提高用户访问网站的响应速度。从而解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

CDN与镜像网站技术的不同之处在于网站代替用户去选择最优的内容服务器,增强了可控制性。CDN其实是夹在网页浏览者和被访问的服务器中间的一层镜像或者说缓存,浏览者访问时点击的还是服务器原来的URL地址,但是看到的内容其实是对浏览者来说最优的一台镜像服务器上的页面缓存内容。这是通过调整服务器的域名解析来实现的。使用CDN技术的域名解析服务器需要维护一个镜像服务器列表和一份来访IP到镜像服务器的对应表。当一个用户的请求到来的时候,根据用户的IP,查询对应表,得到最优的镜像服务器的IP地址,返回给用户。这里的最优,需要综合考虑服务器的处理能力带宽,离访问者的距离远近等因素。当某个地方的镜像网站流量过大,带宽消耗过快,或者出现服务器,网络等故障的时候,可以很方便的设置将用户的访问转到另外一个地方。这样就增强了可控制性。

        CDN网络加速技术也有它的局限性。首先,因为内容更新的时候,需要同步更新多台镜像服务器,所以它也只适用于内容更新不太频繁,或者对实时性要求不是很高的网站;其次,DNS解析有缓存,当某一个镜像网站的访问需要转移时,主DNS服务器更改了IP解析结果,但各地的DNS服务器缓存更新会滞后一段时间,这段时间内用户的访问仍然会指向该服务器,可控制性依然有不足。

  目前,国内访问量较高的大型网站如新浪、网易等的资讯频道,均使用CDN网络加速技术,虽然网站的访问量巨大,但无论在什么地方访问,速度都会很快。但论坛,邮箱等更新频繁,实时性要求高的频道,则不适合使用这种技术。

 

 

 

 



 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值