SpringCloud微服务架构实战mobi电子书下载

计算机与互联网 周喜平 主编
简介: 本书以实战化训练为宗旨,用详尽的案例讲述SpringCloud的项目搭建方法和常用技术。

第1章

认识微服务

微服务架构是近两年在软件架构领域出现的一个新名词。虽然诞生时间不长,但其在各种演讲、文章、图书中出现的频率已经让很多人意识到它给软件领域所带来的影响。

到底什么是微服务架构呢?当我们谈论微服务时,它代表一种什么样的含义?它与传统的面向服务的体系结构(或称架构)(Service-OrientedArchitecture,SOA)有什么异同点?本章,我们将揭开微服务的神秘面纱。

本章的主要内容如下。

1.系统架构的发展历史。

2.常见的微服务架构。

3.Spring Boot和Spring Cloud的关系。

1.1

系统架构的发展历史

随着互联网的发展、网站应用规模的不断扩大、上网需求的激增,互联网技术上的压力不断增加,系统架构也因此不断地演进、升级、迭代,从单体架构,到垂直架构,到分布式架构,再到SOA,以及现在火热的微服务架构。

很多软件都是基于最新架构开发的,很少有人会去了解以前的系统架构,但对于想往架构师方向发展的开发者来说,了解系统架构的发展历史和每个阶段的系统架构,是很有必要的,这同样能够帮助开发者更好地设计以及演进系统架构。

1.1.1

单体架构

早期,一般的公司在开发Java Web程序时,大都使用Struts 2、Spring和Hibernate等技术框架,每一个项目都会发布一个单体应用。例如开发一个进销存系统,会开发一个WAR包部署到Tomcat中,每次需要开发新的模块或添加新的功能时,都会在原来的基础上不断地添加。若干次后,这个WAR包会不断地膨胀,程序员在进行调试时,服务器可能需要很长时间才能启动,维护这个系统的效率极为低下。图1-1所示为电商系统的单体架构,涵盖了商品管理、订单管理、用户管理等模块。

图1-1 单体架构

单体架构的优点和缺点如下。

优点:开发速度快,维护成本低,适用于并发要求较低的系统。

缺点:代码耦合度高,后期维护困难,无法根据不同模块进行针对性优化,无法水平扩展,单点容错

率低,并发能力差。

1.1.2

垂直架构

当访问量逐渐增大,单体架构应用无法满足需求时,为了满足更高的并发和业务需求可以根据业务功能对系统进行拆分,以提高访问效率。电商系统的垂直架构如图1-2所示。

图1-2 垂直架构

垂直架构的优点和缺点如下。

优点:对系统进行拆分,实现了流量分担,解决了并发问题,可以针对不同模块进行优化,方便水平

扩展、负载均衡,容错率提高。

缺点:系统间相互独立,会有很多重复的开发工作,影响开发效率。

1.1.3

分布式架构

当垂直应用越来越多时,应用之间的交互不可避免,可将核心业务抽取出来作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速地响应多变的市场需求。电商系统的分布式架构如图1-3所示。

图1-3 分布式架构

分布式架构的优点和缺点如下。

优点:将基础服务进行了抽取,系统间相互调用,提高了代码复用率和开发效率。

缺点:系统间耦合度变高,调用关系错综复杂,难以维护。

1.1.4

面向服务的架构

面向服务的架构(SOA)是一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在于操作系统进程中,各个服务之间通过网络调用。SOA示例如图1-4所示。

图1-4 SOA示例

企业服务总线(Enterprise Service Bus,ESB)简单来说就是管道,用来连接各个服务节点。为了集成不同系统、不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通。

SOA的优点和缺点如下。

优点:抽取公共的功能为服务,提高了开发效率;对不同的服务进行集群化部署,缓解了系统压力;减少了系统耦合。

缺点:每个供应商提供的ESB产品有差异,自身实现较为复杂,应用服务粒度较大;ESB整合了所有

版权:人民邮电出版社