单体 分布式 微服务

单体 分布式 微服务

单体

在软件技术发展早期,软件设计者一般讲所有功能模块打包到一起并放在一个应用中运行,所用的模块使用同一数据库
优点: 架构简单,前期开发效率高,成本低,易部署,易测试,适合个人或者小型团队开发。
缺点: 代码耦合度高,可用性差,单点容错率低,可扩展性差,不适合团队模式协同开发。

分布式

根据实际业务,把系统拆分成合适的,独立部署的模块,模块之间相互独立(通过Webservice/Dubbo)等中间件进行通信。可以理解为拆分出来的每个系统都是一个个的组件,组件与组件之间都是通过服务进行调用。

分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

优点:
1. 分布式
2. 松耦合
3. 扩展灵活
4. 可重用
缺点
1. 服务抽取粒度较大(相对于微服务而言)
2. 服务调用方和提供方耦合度较高(借口耦合度)

微服务

简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。
微服务架构:它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。 服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,各服务可以由不同语言编写,数据存储在不同的数据库,并且能够被独立地部署到生产环境、类生产环境等。
微服务特点:
单一职责: 每一个服务都对应唯一的业务能力,遵循单一职责。微服务的拆分粒度可以很小,例如一个用户管理就可以作为一个服务。
面向服务: 服务间调用Restful等轻量级协议定义的API,而无需关心服务的技术实现,做到与平台和语言无关。
自治:服务间互相独立,互不干扰;独立部署,服务间虽然有调用,但要做到服务重启不影响其他服务。
敏捷开发:每个服务都是独立的组件,可复用,可替换,降低耦合,易维护和容器化部署服务。

分布式微服务的区别

分布式属于微服务,分布式必须部署到部署到多台服务器上,微服务可以部署到一台服务器。
微服务拆分粒度更小。
如:分布式: 起床,洗衣,做饭
微服务: 睁眼,坐起,穿衣,叠被, 把衣服放入洗衣机,倒洗衣液,开启洗衣机,等
微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难

集群 分布式的区别

集群的特点:多个服务器实现同一个功能,当访问量更大的时候,也会涉及到负载均衡等问题。

分布式和集群并不单独区分,因为分布式中往往包含集群。

你可能感兴趣的:(分布式)