Spring Cloud入门1

0 阅读7分钟

微服务架构与Spring Cloud

认识架构

单体架构

一个典型的单体架构就是将所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。

例如,开发一个进销存的系统,我们可以将项目打包成war包并部署到服务器上。这样的一个war包涵盖了很多模块。

image.png

图中所示就是单体框架,随着业务越来越复杂,应用长须需要增加的功能越来越多,单体架构的代码量越来越大,代码可读性、可维护性和扩展性会下降。同时,使用单体架构带来的隐患会比较多,由于系统过于庞大以及关联较多,应用中的任何一个Bug(漏洞、错误)都有可能导致整个系统宕机。

SOA架构

针对传统的单体架构存在的问题,人们又设计出了一种SOA架构。

SOA架构是一个面向服务的架构,它是一个组件模型。SOA架构将应用程序的不同功能单元(称为服务)进行拆分,这些服务通过定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言。这使构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。

image.png

由图可知,一个完整的项目会分为多个模块,数据库分为主库与从库两种,并且主库与从库是数据同步的。这样SOA架构解决了单体式架构所以留下的问题。

但SOA架构本身也存在一些缺点。SOA架构一般使用某种集中式管理,比如会有审查委员会、主架构师或者架构委员会等部门来严格定义每个系统组件应当做什么、如何执行,相同类型的功能可能会在多个组件中分别定义和记录,每个组件使用的语言或者工具集可以是统一的,也可以不是。在SOA架构中,系统和服务的界定比较模糊,而且服务的接口协议不固定,而且种类繁多,不利于系统维护。

微服务架构

学习了单体架构和SOA架构,我们可以知道,系统中的模块与模块之间直接相互访问或某个没款本身的错误都有可能影响整个系统的使用。在大数据以及高并发的环境下,系统架构面对更加严苛的挑战。为解决这些问题,微服务架构就诞生了。

微服务架构的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和部署。在分散地组件中使用微服务云架构和平台,使部署、管理和服务功能交给胡变得更加简单。

微服务架构是一种将单一应用程序作为一套小型服务开发的方法。每种应用程序都在其自己的进程中运行,并于轻量级机制【通常是HTTP资源的应用程序接口(Application Programming Interface,API)】进行通讯。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。相比单体架构和SOA架构,如何理解微服务架构的集中化管理?因为微服务架构的每个业务功能都是一个独立的项目,各个项目之间的耦合性很低,所以开发人员可以使用不同的编程语言编写程序、使用不同的存储系统计算存储数据。前面提到的进销存系统,如果使用微服务架构来开发,可以使用下图结构。

image.png

从图中可以看出,微服务架构中每个服务都有自己独立的数据库,数据库之间没有任何联系。这样的好处是,随着业务的不断扩张,不同服务与服务之间不需要提供数据库集成,而是提供API相互调用。独立的数据库使系统的维护变得简单,性能明显提高,迁移也比较方便。在微服务架构中,数据的存储不仅可以使用关系型数据库,还可以使用非关系型数据库。一个典型的微服务架构系统,每个服务对应的数据库可能各不相同,建议大家根据业务需求选择河市的数据库。

微服务架构使直接通过HTTP进行通信的,也可以采用消息队列来通信,如采用RabbitMQ、Kafka等进行通信。微服务采用不同的编程语言,使用不同的存储技术,进行自动化部署,减少了人为控制,降低了出错概率。

微服务架构的功能

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。

微服务架构是一种架构风格,一个大型复杂软件应用由多个微服务架构组成。系统中的各个微服务架构可被独立部署,各个微服务架构之间是松耦合的。每个微服务架构仅关注于完成一项任务并很好地完成该任务。在所有情况下,每项任务代表着一个小的业务能力。

微服务架构的功能如下。

  1. 微服务架构的自动化部署

微服务架构中,系统会被拆分成若干个微服务架构,每个微服务架构又是一个独立的应用程序。单体架构中的应用程序只需要部署一次,而微服务架构中有多少服务就需要部署多少次。随着服务数量的增加,部署的难度就会增加。业务的粒度划分得越细,微服务架构的数量就越多。因此就出现了自动化部署技术,例如Docker容器自动化部署技术方便了微服务架构项目下各模块在服务器上的部署。

  1. 服务集中化管理

微服务架构系统是按照业务单元来划分的,服务数量越多,管理起来越复杂。在这里,微服务架构体提供了集中化管理组件Spring Cloud Config,人们可以在Spring Cloud Config配置文件中统一配置服务,这样很大程度上方便了对项目的集中化管理。

  1. 支持熔断机制

微服务架构就是分布式的。在分布式系统中,服务之间是互相依赖的,如果一个服务出现了故障或者网络延迟,在高并发的情况下,就会导致线程阻塞,在很短的时间内该服务的线程资源会消耗殆尽,最终使得服务不可用。

由于服务互相依赖,这样可能会导致整个服务的不可用,这就是“雪崩”效应。熔断机制是应对“雪崩”效应的一种微服务架构保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护;股票交易中,如果股票指数过高,就也会曹勇熔断机制,暂停股票交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当一条链路的某个微服务架构不可用或者响应时间太长时,会进行服务的降级,进而调用熔断该节点的微服务架构,快速返回错误的响应信息;当检测到该节点微服务架构调用响应正常后,恢复调用链路。