简单理解概念以及优缺点
单机: 项目,代码都放在一个服务器上
优点:部署实施简单,易于维护,成本低,共享程度高,一致性好
缺点:处理能力是有限的,当业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式。
集群:集群是一个物理概念,项目复制几份,部署在不同的服务器上,同时在访问前加一个“调度者”的角色(负载均衡服务器,相当于堡垒机,也可能是个堡垒集群),所有请求由他来分配,分配给负载较小的节点
优点:扩展性强,业务需求增大直接增加服务器就行了;架构简单性能稳定;
缺点:当业务发展到一定成度时,你会发现一个问题——无论怎么增加节点,貌似整个集群性能的提升效果并不明显了。这个时候就可以考虑分部署方式。
分布式架构:按照业务功能,拆分成一个个独立的子系统,然后单独部署在各个服务器上,他们之间通过rpc方式进行交互.
优点:
耦合度低:可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
扩展性强:我们可以针对性地扩展某些服务。假设对于在线杀毒功能的需求大,我们可以针对性地提升在线杀毒的节点数量,而对于后台系统,节点数量维持原有水平即可。
复用性更高:比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。
区别和联系:
1、某书上:分布式是指 多个系统协同合作完成一个特定任务的系统。
分布式是解决中心化管理的问题,把所有的任务叠加到一个节点处理,太慢了。分布式的主要工作是分解任务,将职能拆解。
2、集群主要的使用场景是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求。
master 的机器上面,其他 slave 机器无法分担写压力,从而这个时候,也就引出来分布式。
3、集群主要是简单加机器解决问题,对于问题本身不做任何分解;
分布式处理里必然包含任务分解与答案归并。分布式中的某个子任务节点,可能由一个集群来代替;集群中任一节点,都是做一个完整的任务。
集群和分布式都是由多个节点组成,但是集群之间的通信协调基本不需要;而分布式各个节点的通信协调必不可少。
分布式饭店(帮助理解)
小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。而接受客户指令,通知配菜员配菜的服务员,起着负载均衡的作用,相当于堡垒机,多个服务员的关系就是堡垒机集群。