将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式),然后部署多个相同的子系统在不同的服务器上(这叫集群),部署在不同服务器上的同一个子系统应做负载均衡。
分布式是并联工作的,集群是串联工作的。
分布式:需要按照功能点把大系统拆分成各个独立的子系统,每个子系统对应每个独功能,对每个子系统(专业名词叫节点)进行集群,需要系统之间配合才能完成整个业务逻辑。
集群:是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性和可用性的服务平台。分类:高可用集群、负载均衡集群、科学计算集群
负载均衡:把任务比较均衡的分配到集群环境下的计算和网络资源。
集群的可扩展和高可用:
可扩展性:集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群中
高可用性:同样的服务可以由多个服务实体提供,如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。
分布式和集群的区别(关系)?
分布式架构:(将不同的业务分布在不同的地方)把一个系统拆分成多个子系统,各个子系统进行tomcat集群。一个任务分给多台机器去做,减少单个任务的执行时间。
集群:同一个项目部署到多台服务器上(将几台服务器集中在一起,实现同一业务)。提高单位时间内执行任务数。
分布式中每个节点,都可以做集群。
而集群不一定是分布式的。
集群能保证系统的并发量和高可用。保证集群高可用,必须要有三台或三台以上的服务器。Redis集群,五台服务器间采用自动选举机制选出主从服务器,采用乒乓机制连接,当有其中一台机器挂掉,超过半数以上机器乒乓机制连不上一台机器时,我们就可以发现这个问题,并拿坏掉的服务器去修理。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度(降低它们的依赖程度和关联性)。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目(对于团队来说可以更好地分配任务)。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。
缺点:
1、系统之间交互需要使用远程通信,接口开发增加工作量。
2、各个模块有一些通用的业务逻辑无法共用。(基于SOA架构通过Dubbo提供服务解决这一问题)
3、沟通成本很高。