以前提过一个问题,但还是没是太能明白,网友说的答案也不太一样,我更迷糊了,我想两个例子这样我想能更清楚一点
1.mysql的主从数据库,这种工作方式算是集群还是分布式,还是哪个都不算?
2.lvs这种工作方式算是集群还是分布式,还是哪个都不算?
谢谢大神。
你之前的那个问题我看过,但当时我没有回答。既然你又问了一次,那我这次就来说说吧,如果有错误请多多包涵。
最重要的一点:分布式是逻辑上的,集群是物理上的。
怎么理解这句话?
分布式:
把一个程序或系统拆分开来,分别跑在不同的计算机上,然后这些部分的结果汇总起来就是整个程序的目标结果时,这种方式就是分布式了。例如分布式存储、分布式计算。
集群:
按照某种方式将一批计算机以某种“紧密”的方式连接在一起,使得它们可以对外表现的像一个功能更强的计算机一样,那么这种方式就是计算机集群了。比如云计算机房、数据中心机房、超级计算机中心等等,这些地方的计算机都可以看作是一个集群。
主从数据库是不是集群?当然不是。主从数据库是一种逻辑结构,和服务器的物理布局无关:你可以用集群搭建,也能用几台独立的计算机搭建,甚至可以在一台计算机上跑几个虚拟机搭建,甚至可以在同一台计算机中通过多进程来搭建。
那它是不是分布式的?我的观点是不是。因为主从数据库两者是备份关系,一般不同时工作,只有当一个坏了另一个才会顶上。
为什么分布式存储算分布式的,而主从数据库却不算呢?因为分布式存储(例如CDN)各个节点的地位是平等的,而且同时工作。整个CDN中的节点将所有用户的请求分散开来了,所有CDN节点提供的服务构成了该CDN网络所提供服务的总和。比如某个CDN网络在北京、广州、上海和青海共有4个节点,那么全国用户对该CDN网络的请求将分散到这4个节点上去完成,这4个节点所提供的服务合起来就是该CDN网络所提供的服务。
而主从数据库则不是这样,假如某一个时间点上有N个数据库请求发到该网站上,那么在同一时间,这N个请求要么全是主数据库处理,要么全是某个从数据库处理,这些主从数据库并没有分散这些请求。
再来说说LVS,我的理解是它是一个采用分布式方式实现的集群。从名字里的Virtual也能看出来,它并不是传统的集群,传统意义上的集群是一群物理上紧密联系的计算机系统,通常位于同一个机房中,通过机架和复杂的布线连接。而LVS则更强调的是逻辑上的:这些服务器物理上不需要放在一起,甚至可以间隔任意远(比如一部分在北京一部分在广州),然后通过网络将它们连接起来,连接后的效果与集群一样——在逻辑上,它们是一个真正的集群,具有集群的一切性质。仅仅有一点,那就是效率可能不如真正的物理集群那么高。
最后,通过上面LVS的分析可以看出来,分布式和集群是不同的两个概念,而且相互之间并不冲突。你可以用集群来搭载分布式系统,也可以用分布式技术来实现一个集群(比如LVS)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。