分布式与微服务的区别

分布式与微服务的区别

  要说分布式,我们先从单机架构说起。

  单机:我们一开始学习编程的时候,往往就是一个项目,部署在一个机器上面。例如我们开发一个商城项目,直接部署在本地的一个tomcat上,这样子就是一个单机架构模式。单机的缺点很明显,一点我们的项目运行期间出现故障(比如jvm内存溢出导致挂了),整个项目就访问不了,无法提供服务了。由此,集群部署就很有必要了。

  集群:集群就是将同一个项目,分别部署在多个节点上,通过负载均衡统一对外提供服务。比如我们的商城项目,分别部署在4个tomcat(也可以是同一个tomcat容器;可以是同一台机器,也可以不同,只要ip和端口不一样就可以了)上。如果其中一个节点故障了,其他3个节点还能正常提供服务。集群部署,除了能增强系统的吞吐量和效率外,还提高了可用性。

集群是通过复制节点的方式实现的,即把整个项目都复制了。一个项目,肯定会有使用很频繁的功能和使用量比较少的功能;比如商城功能的商品管理功能等比较少使用,而下单功能相对被频繁使用。假如我们集群部署100个节点,显然每个节点都包含了整个项目的完整功能。但是其实我们的商品管理功能可能实际只需要部署几个几点即可。所以这种无差别复制,会造成一定程度上的资源浪费。由此,分布式架构就出现了。

分布式:分布式架构,就是将单体应用,拆分成多个模块,每个模块部署在不同的机器上,每个模块统一由网关进行协调管理。个人对分布式的理解是,分布式的目的在于拆分系统解耦,从而达到分而治之的目的。拆了之后,我们的系统就不会出现牵一发而动全身的现象,而且还能对不同的模块分别不一样的资源。比如刚刚说商城项目,将项目拆分成商品管理模块和订单模块后。因为商品模块使用频率不高,从而我们可以给商品模块分配相对少的资源即可,比如只集群部署商品管理模块4个节点。而订单模块部署100个节点。

微服务:微服务与分布式很相似,很多的观点是,可以把微服务看出是比较特殊的分布式。微服务的理念也是将项目进行拆分,但是区别是,微服务的拆分力度比分布式的要更小,而且微服务的拆分基本是垂直拆分,而分布式可以是水平拆分和垂直拆分。在部署上,两者的部署方式也存在一些不同;分布式强调将不同的模块部署到不同的机器,而微服务则没有强调是不同的机器;而且实际实践中,也会将不同的服务部署在同一机器上或者不同机器上。

你可能感兴趣的:(分布式,微服务)