微服务

微服务对应的是单体应用。

单体应用

一个工程对应一个归档包(war),这个war包 包含了该工程的所有功 能。我们成为这种应用为单体应用,也就是我们常说的单体架构(一个 war包打天下)。 具体描述: 就是在我们的一个war包种,聚集了各种功能以及资源,比 如JSP JS,CSS等。而业务种包含了我们的用户模块,订单模块,支付模块等 。
简单来说就是我们以前开发的系统是将前后端都放在一个服务器上的应用。

优点:

  1. 架构简单。
  2. 开发,测试,部署起来很方便

缺点:

  1. 当程序很大时拓展会越来越难。
  2. 部署的速度会很慢。
微服务

就是把传统的单机应用,根据业务将单机应用拆分为一个一个的服务,彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。
比如我们开发一个电商系统,电商里有用户管理、订单管理,支付管理等,在单体应用中我们通常是将他们放在一个服务器上,通俗来说就是访问的时候只有一个端口,而在微服务中我们可以将用户管理,订单管理分离出来为他们独立部署一个服务器。
好处是,当有一块功能除了问题之后不会导致整个服务宕机。提高了系统的健壮性。

集群&分布式

集群是一种物理形态,简单来说就是一堆机器集中在一起实现同一业务。
分布式是一种工作方式,是指将不同的业务分布在不同的地方。每一个业务可以由许多服务器一起实现,所以分布式中的每一个节点都可以做集群。

反过来,集群不一定是分布式,因为有可能多台机器一起完成的可能就是一项业务,而不一定是整个系统所有的业务。

所以总结一句话,分布式中的节点可以做集群,而集群不一定就是分布式。

总结

微服务是指在服务的角度将一个系统的业务划分为多个服务,如电商系统中的支付服务,订单服务,而分布式则是实现这种服务的方式,集群则是物理上的实现。