微服务的概念源于2014年3月Martin Fowler(马丁·福勒)所写的一篇文章“Mieroservices”(微服务)。文中表达了一种观念,微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
微服务架构是一种架构风格,一个大型复杂软件应用由多个微服务架构组成。系统中的各个微服务架构可被独立部署,各个微服务架构之间是松耦合的。每个微服务架构仅关注于完成一项任务并很好地完成该任务。在所有情况下,每项任务代表着一个小的业务能力。微服务架构的功能如下。
1.微服务架构的自动化部署
微服务架构中,系统会被拆分为若干个微服务架构,每个微服务架构又是一个独立的应用程序。单体架构中的应用程序只需要部署一次,而微服务架构中有多少服务就需要部署多少次。随着服务数量的增加,部署的难度就会增加。业务的粒度划分得越细,微服务架构的数量就越多。因此就出现了自动化部署技术,例如Docker容器自动化部署技术方便了微服务架构项目下各模块在服务器上的部署。
2.服务集中化管理
微服务架构系统是按照业务单元来划分的,服务数量越多,管理起来越复杂。在这里,微服务架构提供了集中化管理组件Spring Cloud Config,人们可以在Spring Cloud Config配置文件中统一配置服务,这样很大程度上方便了对项目的集中化管理。
3.支持熔断机制
微服务架构就是分布式的。在分布式系统中,服务之间是相互依赖的,如果一个服务出现了故障或者网络延迟,在高并发的情况下,就会导致线程阻塞,在很短的时间内该服务的线程资源会消耗殆尽,最终使得该服务不可用。
由于服务相互依赖,这样可能会导致整个服务的不可用,这就是“雪崩”效应。熔断机制是应对“雪崩”效应的一种微服务架构链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护;股票交易中,如果股票指数过高,就也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当一条链路的某个微服务架构不可用或者响应时间太长时,会进行服务的降级,进而调用熔断该节点的微服务架构,快速返回错误的响应信息;当检测到该节点微服务架构调用响应正常后,恢复调用链路。