在学习Spring Cloud之前呢,先了解什么是微服务架构,以及和之前的单体架构的区别。
什么是微服务架构?
简单说,微服务是一种系统架构的设计风格。是将原来的一个独立的系统拆分成多个小服务,每个小服务能够单独运行,各个服务之间通过基于HTTP的RESTful API进行通讯协作。被拆分成的小服务在各自进程中都围绕着系统中的一个或一些耦合度较高的业务功能进行构建,并且每个服务都有自己的业务功能、数据存储、自动化测试案例以及独立部署机制。由于有了轻量级的通讯协作基础,所以这些微服务可以使用不同语言编写。
于单体系统的区别
单体架构:通常针对一个复杂的业务需求(使用对象或业务类型)来构建一个单体项目。在项目中,通常将需求分为三个主要部分:数据库、服务端处理、前端展示。随着需求的变化、功能的拓展,单体系统会越来越臃肿。由于单体系统部署在一个进程内,当我们改一个功能在部署上线的时候会影响在用功能的使用。并且,单体应用中所有的功能模块都在一起,功能模块的使用场景、并发量、消耗的资源类型都各有不同,对于资源的利用又相互影响,对于评估各业务模块的系统容量的评估不准确。并且随着系统功能的拓展,维护成本及复杂度直线上升。
特点:
- 一个工程包含所有的业务,随着需求变化工程越来越臃肿。
- 维护困难,维护成本高。
- 业务功能耦合性高。
微服务:将系统中的不同功能模块拆分成多个不同的服务,这些服务有自己的业务,能够单独部署和扩展。每个服务的更新都不影响其他服务功能的使用。同时,由于是独立部署的,我们可以更准确的为每个服务评估性能容量,通过配合服务间的协作流程也可以更容易的发现系统的瓶颈位置,以及给出较为准确地系统级性能容量评估。
特点:
- 拓展性高、耦合低。
- 服务独立。