范东臣
根据我所知道的回答一下这个问题。
负载均衡和分布式还真的不是一个意思。下面就分别说一说。
分布式计算
分布式计算是相对于集中式计算而言的,将应用分解成许多小的问题,分配给多台计算机进行处理,各个计算机之间通过高速网络交换数据,实现进程间的通信。可以大大提高计算效率。
一个分布式系统需要若干个网络互连的计算机,这些计算机相互协作完成一个共同的目标。
具体的过程就是:将需要大量计算的项目数据分割成小块,多台计算机分别计算,再将运算的结果统一后得到数据结论。
如下图所示:
负载均衡
负载均衡主要建立在现有的网络结构基础之上,通过一种廉价的方法增加网络设备或者服务器的带宽,是为了提高数据的吞吐量,提高冗余度、存在设备或者系统的备份能力,增强网络的灵活性和可用性。
主要的负载均衡技术有二层负载均衡、三层负载均衡、高层负载均衡。
二层负载均衡
二层负载均衡是指网络设备通过链路聚合的方式实现负载均衡,如下图所示,多条物理的链路聚合成一条逻辑链路,根据特定的算法和协议(LCAP协议)在两条物理链路中实现负载均衡,同时具有备份链路的功能,一条中断,并不影响网络数据的传输。
三层负载均衡
三层负载均衡最常用的技术就是VRRP(网关冗余协议)通过将不同的网关放在不同的三层设备中,实现负载均衡。还有通过RIP协议、OSPF协议实现等价路由协议的负载均衡。
如下图所示就是一个OPSF协议实现的等价路由协议负载均衡,R1到R2存在6条物理线路,可以模拟成一条逻辑线路,根据特定的算法实现数据包的负载均衡,断了某一条线路不影响数据的传输。
高层负载均衡
高层负载均衡是指三层以上的负载均衡技术,比如通过软件技术实现的负载均衡、http服务的负载均衡、DNS实现的负载均衡等。
其中DNS负载均衡是通过DNS服务器实现的,将用户的请求均匀的分不到web服务器上,可以根据地域区分请求。
nginx负载均衡是通过反向代理服务器实现的负载均衡,将请求均匀的分担到应用服务器上,有5种均衡策略可以选择。
负载均衡和和分布式的区别
数据处理方面
负载均衡提高数据的吞吐量
分布提高数据的并发处理能力
实现机制方面
负载均衡是一种网络设备或者服务器的冗余机制,存在备份链路
分布式为了完成同一个计算服务,将任务分担到各个单元执行,各个单元的进程通过网络互传数据。
对于负载均衡和分布式,大家有什么看法呢,可以在评论区留言讨论。
若需更多帮助,请私信关注。系诶些
网络通信兵
不是一个意思,下面按照我的理解说一下什么是分布式,什么是集群,如果有理解错误的地方,请大家留言指正。
集群
同一个业务系统,部署在多台服务器上,这个就叫做集群。
集群里面,每一台服务器实现的功能没有差别,代码都是一样的。
比如我有一个系统A,提供一个很简单的接口,根据员工编号查询员工姓名和他的考勤记录。
当有一个系统调用这个接口的时候,我部署一台服务器就够用了。
当有一百个系统调用这个接口的时候,我就部署十台服务器,前面挂一个负载均衡。
这就是集群部署,当一台服务器挂了以后,不影响功能使用。
我接触过的负载均衡软件有Nginx、LB、HAProxy,也有硬件诸如F5。
分布式
一个业务被拆成多个子业务,部署在多台服务器上,这个就叫做分布式。
分布式里面,每一台服务器实现的功能是有差别的,代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。
还是这个业务场景,我有一个系统A,提供一个很简单的接口,根据员工编号查询员工姓名和他的考勤记录。
我拆开两个系统:人员管理系统B和考勤系统C,分别部署在两台服务器上。
这个就是分布式。
好处是什么呢?如果有系统D也需要使用人员信息,传统的方式系统A和D都要有人员信息管理功能,意味着两个系统各自维护人员信息,那新入职一个员工,可能要在系统A和D里面都维护;如果是有EFGHI系统都需要人员信息呢?
而分布式解决了这个问题,人员信息单独拎出来是一个系统,维护人员信息,同时对外提供查询服务。
分布式+集群
很多时候要结合起来一起用。
还是这个业务场景,我有一个系统A,提供一个很简单的接口,根据员工编号查询员工姓名和他的考勤记录。
我拆开两个系统:人员管理系统B和考勤系统C。
那么系统B部署在十台服务器上,系统C部署在十台服务器上;前面分别挂负载均衡;这样保证了每个子业务功能的高可用。
希望我的回答,能够帮助到你!
我会持续分享Java程序开发、架构设计、职业发展等方面的知识和见解,希望能得到你的关注今日头条【会点代码的大叔】,转载请注明出处。
会点代码的大叔
负载均衡,很明显,可以分担流量,而做到流量均衡,可以指技术,用在网络和服务器上,增加带宽,分担压力,做到流量均衡,也可以指负载均衡设备,有的设备如防火墙也有负载均衡,主要是流量分担。而分布式,这个就很难去定义你到底指的是什么,针对服务器的话,一般是指部署方式,分布式部署,将一部分的功能或组件放到其他地方,从而实现功能上的分担。还有集中式部署,等,很明显,他们有相同点,但是区别还是很大的。
万物基于互联
一家餐厅,本来厨房只有一位师傅,由师傅负责洗菜、择菜、切菜、炒菜,后来顾客增多了;就请了个帮厨负责洗菜、择菜和切菜,之前的师傅只负责炒菜了;后来顾客更多了,就又请了一位师傅炒菜,这样就有一个帮厨负责洗菜、择菜还有切菜,有两位师傅负责炒菜。以上就是分布式和集群[灵光一闪]