分布式概述
- 分布式系统是一个硬件或软件组件分布在不同网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统,简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样
- 分布式意味着可以采用更多的普通的计算机组成分布式集群对外提供服务,计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大
- 从分布式系统的概念中我们可以知道,各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区
特征
- 分布性:分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机没有主从之分,意思就是没有控制整个系统的主机,也没有受控的从机
- 透明性:系统资源被所有计算机共享,每台计算机不仅可以使用本机的资源,还可以使用分布式系统中其他计算机的资源(包括CPU、文件、打印机等)
- 同一性:系统中的若干台计算机可以互相协作来完成一个共同的任务,或者说一个程序可以分布在几台计算机上并行的运行
- 通信性:系统中任意两台计算机都可以通过通信来交换信息
常用分布式方案
- 分布式应用和服务
- 将应用和服务进行分层和分割,然后将应用和服务模块进行分布式部署,这样可以提高并发访问能力、减少数据库连接和资源消耗,还能使不同的应用复用共同的服务,让业务易于拓展,比如:分布式服务框架Dubbo
- 分布式静态资源
对网站的静态资源如JS、CSS、图片等资源进行分布式部署可以减轻应用服务器的负载压力,提高访问速度。比如:CDN - 分布式数据和存储
大型网站常常需要处理海量数据,单台计算机往往无法提供足够的内存空间,可以对这些数据进行分布式存储,比如HADOOP HDFS - 分布式计算
随着计算技术的发展,有些应用需要非常巨大的计算能力才能够完成,如果采用集中式计算,需要耗费相当长的时间来完成,分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理,这样可以节约整体计算时间,大大提高计算效率,比如Hadoop MapReduce
分布式和集群的区别
- 分布式是指在多台不同的服务器上部署不同的服务模块,通过远程调用协同工作,对外提供服务,解决高性能高并发的
- 集群是指在堕胎不同的服务器中部署相同的应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务,解决高可用的