分布式是一种思想,范围很广,我得先知道它的诞生:
以前是一个数据库一个JSP就可以做一个应用了,后来随着业务复杂,我们开始分层,比如MVC之类的,再后来我们的数据越来越多了,比如有上亿的数据,这个时候我们一个数据库查询太慢了,就开始分库,这也算是分布式的一种。
还有比如我们的系统访问的人多了,比如双11,上千万人同时访问,我们的服务器(网站)支持不住了,这个时候就要部署到很多个服务器,每个服务器分摊请求,这也是分布式
当然随着业务扩大,我们得分业务了,比如注册登录的,物流的,卖东西的等等,不同的系统,但是各个系统之间进行协调,也算分布式一种
以上都算是分布式的来源,主要是解决压力过大,大家协同工作的,那么这就涉及到一些常用的东西,或者像你说的的技术
1你用N个数据库才放数据,至少CRUD方面就麻烦些了,得用cobar,tddl,mysql-proxy等协调
2服务器:你部署了很多服务器,肯定得用个东西来分发请求这些吧,nginx,apache等分发请求。
3你公司有很多系统,想很好的联系在一起,光用接口不满足了,得用一些JMS,像activemq,ons之类的来协调吧
4为了解决io问题,得加缓存吧,那么缓存对应上面的,也得分布式吧,就涉及memcache,redies等等
上面就简单的介绍了下分布式的东西,还有很多啦,这是常用的一些,希望你能慢慢来,不是一下子能理解得
分布式系统是其组件分布在联网计算机上,组件之间通过传递信息进行通信和动作协调的系统。从硬件方面来看,一个分布式系统是一组有网络连接的能够独立工作的计算机;从软件方面来看,分布式系统则是多个进程/线程相互协调工作,并支持特定目标完成的软件系统。实际中存在着多种多样的硬件组织结构,分布式系统软件也根据不同的硬件结构和应用领域展现出多种多样的模型和设计风格,同时,在因特网域的应用非常广泛。当今世界,计算机网络已无处不在,因特网也是其中一个,它是有许多种网络组成的。移动电话网、企业网、校园网、家庭网等等。这些网络既可以单独使用,又可以结合使用,因为它们具有相同的本质特征。为此,人们开始发掘其中的潜力,寻求将网络中的计算机联合为一个整体,协同合作,以达到资源共享,从而发挥更大的计算效力。于是,分布式系统应运而生。
分布式系统发展的背景及推动因素
分时系统产生于7 0年代,不仅作为提高计算机利用率的手段,也使用户离计算机更
近。分时是迈向分布式系统的第一步:用户可以在不同的地点共享并访问资源。8 0年代是个人计算的1 0年:人们有了自己个人专用的计算机PC。到了9 0年代,基于微处理器的系统所提供的出色的性能/价格比和网络技术的稳步提高,分布式系统开始走进历史舞台。
分布式系统发展的主要推动因素有:
1、固有的分布式应用。分布式系统以一种很自然的方式开始存在,例如,在我们的社会中,人群在地理上是分布式的并且分布式地共享信息。一方面,一个分布式数据库系统中的信息产生于不同的分支机构(子数据库),因此本地访问可以很快进行;另一方面,系统也提供了全局视图来支持各种全局 *** 作。2、性能/成本。分布式系统的并行性减少了处理瓶颈,全方位提高了性能,也就是说,分布式系统提供了更好的性能价格比。3、资源共享。分布式系统能有效地支持不同地方的用户对信息和资源(硬件和软件)的共享。4、灵活性和可扩展性。分布式系统可以增量扩展,并能方便地修改或扩展系统以适应变化的环境而无需中断其运行。5、实用性和容错性。依靠存储单元和处理单元的多重性,分布式系统具有在系统出现故障的情况下继续运行的潜力。6、可伸缩性。分布式系统容易扩大规模以包括更多的资源(硬件和软件)。
分布式系统的定义
一个分布式系统是一个看似为普通系统,而又运行在一系列自治处理单元( P E)上的系统,每个P E都有各自的物理存储器空间并且信息传输延迟不能忽略不计。在这些P E间有紧密的合作。系统必须支持任意数量的进程和P E的动态扩展。
分布式系统可以有不同的物理组成:一组通过通信网络互连的个人计算机,一系列不仅共享文件系统和数据库系统而且共享C P U周期的工作站(而且在大部分情况下本地进程比远程进程有更高的优先级,其中一个进程就是一个运行中的程序),一个处理机池(其中终端不隶属于任何一个处理机,而且不论本地进程还是远程进程,所有资源得以真正的共享)。
物理的系统机构和逻辑的系统机构表示了这样一个系统,其属性要求为:
• 任意数目的进程。每个进程也被称做一个逻辑资源。
• 任意数目的P E。每个P E也被称做一个物理资源。
• 通过消息传递的通信。这提供了比主/从方式更合适的合作式消息传递方式。
• 合作式进程。进程间以一种合作的方式交互,或者说多个进程用于解决一个共同的应用而不是几个独立的应用。
• 通信延迟。两个P E间的通信延迟不可忽略。
另外,一个分布式系统还应有以下属性:
• 资源故障独立。没有任何单个逻辑或物理的资源故障会导致整个系统的瘫痪。
• 故障化解( graceful degradation)。系统必须提供在资源故障的情况下重新配置系统拓扑和资源分配的手段。
分布式系统的显著特征
分布式系统的主要目的是使用户方便简捷的访问远程资源,从而达到某种程度的资源共享。资源可以是任何东西:可以是硬件,如磁盘、打印机、处理器(CPU)、存储器、传感器或通信线路;也可以是软件,如进程、文件、视窗、网页、数据库等。基于此,分布式系统的基本特征为:资源共享、透明性、开放性、可调节性(可拓展性)。
资源共享:资源共享可以带来显著的经济效益,且便于协同工作,一般通过“资源管理器程序”模块来实现。不同的资源可能需要不同的管理方法和访问认证策略。资源管理器程序有两种常用的实现模型:1、客户\服务器模型;2、面向对象模型。在实现资源共享是,还必须妥善考虑系统的安全性。
透明性:分布式系统的目的是资源共享,而实现资源共享的目标之一为系统的透明性。我们希望一个系统在用户界面前呈现为一个透明的整体,而不是一组支离的构件。固然,由网络相连的一组相互分离的构件是分布式系统的基本属性,但正是这种相互分离彼此独立的属性才使我们能够进行并发计算、资源共享以及冗余容错。同时,这些内部属性不希望被用户所看见,故通过各种隐蔽技术,使得一个分布式系统像一台功能完备的计算机,而这正是透明性的真正含义所在。ISO RM-ODP所定义的8种透明性形式:访问、位置、迁移、重定位、复制、并发、故障、持续。
开放性:其是分布式系统实现中另一个重要目标。一个系统的开发程度取决于该系统所允许的扩展能力和包容力度。一个理想的开放性系统在接纳新的系统服务时,需要保证不影响不间断用户的使用,保证这些新增的服务于原来存在的服务之间不产生冲突和矛盾。实现开放性的关键在于标准化,目前,为了实现分布式系统的开放性所普遍采用的方法为:针对不同的资源提供相应的一套标准规则,用以描述各种服务的语义和语法。
可调节性:如果一个分布式系统能够自动地适应系统的结构规模,能够接受各种各样静态或动态的规模调整,则这个系统具备可调节性。对分布式系统进行系统调节就是要改善系统的性能,其性能的决定因素主要为两个:网络传输能力和服务器吞吐量。针对此,调节方法主要有3个:隐蔽通信延迟、资源分布和资源复制。
分布式系统的拓扑结构
基于网络的多机系统是分布式系统硬件结构的主流,这类系统价格低廉,组织灵活,结构多样,易于扩充,应用广泛。网络可以用来连接多处理器或者多计算机,而连接计算机的网络同时也呈现着多样性,故而,利用拓扑图可以实现描述这类系统的普遍特征。分布式系统的拓扑结构是一种抽象的示图方法,如下各图中,用结点代表网络中的计算机,边代表网络连接,在此主要给出以下5中典型的分布式系统拓扑结构,依次为:环形,星形,二叉树形,2维圆环形(正则形),全连通形。
在分析一个互连网络的拓扑结构时,通常使用以下度量参数:
1、结点数:网络中结点的个数体现了其规模大小,记作N;
2、结点:构成网络的结点,用Vi标注任意一个结点,1≤ i ≤N;
3、结点距离:两个结点(Vi ,Vj)之间的边的条数,记作Dij;
4、网络直径:网络中任意两结点间的最长的距离,记作Dm;
Dm = MAX(Dij),任意Vi,Vj∈网络
5、结点度:通向一个结点的边的条数,记作degree(Vi)。
根据上述参数的定义,可以得到以下期望的5个分布式系统拓扑结构的网络属性:
1、当网络结点数任意增长时,网络直径增长渐变缓慢,即:
LimN→∞(Dm/N)= 0 ;
2、存在一个与网络无关的常数K,使得:
K ≥ degree(Vi),任意Vi∈网络;
3、网络的路径算法(routing algorithm)易于实现,而且与网络规模增长无关;
4、当网络中某些结点或者某些边出现故障时,网络连通性不受致命的损坏;
5、网络负载在所有结点和边上均匀分布。
我们希望一个基于网络的多机系统具备上述给出的5个网络性质,但在实际中,很难找到一种满足所有这些性质的网络拓扑结构。一般而言,不同的拓扑结构对一些性质表现得不错,而对另一些则表现很差。在此,对上述五种典型的拓扑结构做出如下简单性质平价:
典型的分布式系统拓扑结构及其性质评价
环形 星形 二叉树形 正则形 全连通形
LimN→∞(Dm/N) 否(D=N-1) 是(D=2) 是(D=2logN) 是(D=√N) 是(D=1)
K≥degree(Vi) 是(K=2) 否 是(K=3) 是(K=4) 否
路径算法 易 易 易 易 易
连通性 差 差 较差 较好 好
负载均匀 是 否 否 是 是
当设计一个基于网络的分布式系统时,我们首先要决定选取什么样的网络拓扑结构,影响这个决定的主要因素有:性能、价格、可扩展性以及具体的应用。
分布式系统的设计
在设计一个分布式系统时,除了综合考虑上述的分布式系统的显著特征及其拓扑结构,最重要的一点就是:在设计分布式系统之前,我们必须首先考虑用户或潜在用户的需求。对于一个普通的分布式系统,最基本也是相对重要的用户需求:功能性(Functionality)和服务质量(Quality of Service)。
功能性,主要包括的方面有:用户可以使用什么服务或者开发什么类型是应用,系统可以为用户带来多大的经济利益,同时,系统的性能/价格比是否合理等。
服务质量,要考虑的主导性因素有:性能(performance)、可靠性(reliability)和安全性(security)。度量性能的指标主要是系统对用户请求的反应时间(response time)。可靠性可以衡量一个系统具有的商业价值的大小。一个系统可靠并不代表其安全,当引入网络和分布式概念,安全性则变得极为重要。
分布式系统的应用
开发一个分布式系统的目的在于应用,如今,分布式系统的应用领域极为广泛,从普通意义上的分布式计算机到电子商务(旅游、订票、购物、个人银行等等),分布式系统的应用几乎渗透到计算机应用的每一个角落。在人类探索自然的过程中,我们有太多的问题需要解决,而解决的方法往往需要巨大的计算能力。分布式系统的应用之一就是通过网络技术把被浪费的计算资源充分的利用起来。在此例举一个典型的分布式系统应用实例——搜索外星文明(SEIT,Search for Extraterrestrial Intelligence)。
搜索外星文明是世界上一个规模巨大的分布式计算项目,是美国加州大学伯克利分校进行的搜索地球以外星上可能存在的球文明的科学实验。实验的目的是通过对电磁波信号的分析来寻找其他星球上可能存在的具有文明智慧的生命,从目前的技术水平来看,探索“外星人”是否存在的有效手段是对来自遥远星球的电磁波信号进行研究。然而,即使外星人向我们发出无线信号,当这些电磁波信号经过漫长的路途达到地球时则会变得非常微弱。同时,科学家们所获取的此类信号是一个无比庞大的数据,仅用实验室有限的大型计算机来计算则显得力不从心,而只能选取比较强的并且具有代表性意义的无线信号。如此一来,势必会忽略掉某些真正具有意义的信号。为了能够分析所有的微弱的信号以及不同的信号,SEIT号召分布于世界各地的计算机用户参与这个伟大的实验。参与方式很简单,用户们只需下载一个类似电脑屏幕保护程序那样的特殊软件即可。SEIT专家们还设计了一套程序,将庞大的数据分割成细小的数据段,每个数据段代表一小块天空区域或某个波段的频率。SEIT将这些数据发送到用户的计算机上,而下载安装那个的应用程序便会自动地对这些数据进行分析。这些程序不会抢占参与者的机器时间,当用户工作时,它们停止运行,当用户离开时,它们便出来利用这段空闲时间。
分布式系统已经演化成近代计算机系统的基本组织结构,支持非常广泛的工业、商业应用。分布式系统自身也从学术界走进人们的日常生活,日益丰富完善,日益规范成熟。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)