不妨我们先从一个例子说起:
你的超市开业了,起初客流量较小,你自己承担了进货、物品归类、卖货全部任务;但是由于你人美心善动不动就抹零去梢儿,你的超市很快有了名气,随着客流量的不断增长,你自己忙不过来了;
于是你找了狗蛋做帮手,跟你一起承担进货、物品归类、以及卖货的任务,这时候你跟狗蛋的关系就是集群。
后来你为了能更专心的算账以避免出现财务损失,你让狗蛋只去负责进货和物品归类,卖货只由你自己负责,这时候你们的任务不一样了,你跟狗蛋的关系变成了分布式。
再后来由于你能力特别牛批,超市规模又扩大了,狗蛋自己干不动了,那咋整,你又找来了铁柱帮忙与狗蛋一起负责进货和物品归类,这时铁柱和狗蛋的关系是集群。
七夕节到了,铁柱这小子请假出去约会了(没办法 谁让狗蛋是单身汪),进货和物品归类的重担都落在了狗蛋一人身上,狗蛋比平时更累了,但是他的任务职责是不变的(狗蛋心里苦啊),这就是集群。
下面稍微专业那么一丢丢再解释下:
1、啥是分布式啊
就是将一个完整的项目系统按照不同的业务拆分成多个子系统,分别部署到不同的服务器上,每一个子系统也可以称为是一个“服务”,这些子系统通过消息传递互相通信,但展现给用户的是一个统一整体,就像还是只有一个完整系统一样。
2、它有啥特点啊
优点:
耦合度低:可独立开发、部署和测试,边界明确,开发效率得到提升;
扩展性好:由于每个服务相对独立,因此可以对具体服务进行针对性的扩展,而其他服务不做变动;
复用性强:根据不同的业务需求,你可以单独拿出一个子系统作为一种产品依赖的单独服务,省去了重复开发过程;
缺点:
架构设计变得复杂,学习难度加大;
服务的增多使服务的管理和部署变得困难;
运维复杂度增加;
系统吞吐量增大,但响应时间变长。
1、啥是集群啊
可以理解为单机应用的多个实例部署在多个服务器上,每一个服务器上的服务都是相同的,而每个服务相当于一个节点,通常来讲,部署 N 个节点,业务处理能力就会提高约 N 倍,这些节点的集合就构成了集群。
2、它又有啥特点啊
优点:
可用性高:假设有一台服务器在运行中出现了故障,那么在这台服务器上运行的应用就会切换到其它的服务器上运行;
可扩展性强:原来的集群系统不能满足当下的业务需求,那么可以通过增加节点的方法进行优化,在这个优化的过程中可能都不用停机,依然能保持正常服务。反之,当然也可以减少多余的节点,所以十分灵活;
性能好:通过服务器集群来处理一个共同的用户需求,相对于单个机器而言性能更优秀;
缺点:某个应用在集群中的某台服务器上运行时可能会发生不可预知的故障,此时别的服务器就会接管该应用的数据区并重启它,而这个接管、重启的过程是需要时间的,小应用还好,应用较大的话可能会导致时间的延误。
啥?你说你还没记住它们是啥玩意儿?
那你往这儿看呐:
分布式:不同子业务部署在多个服务器。
集群:同一个业务部署在多个服务器 。
明没明白?明白了吧。