川哥教你Spring Boot 2实战
上QQ阅读APP看书,第一时间看更新

1.1 微服务介绍

当前,微服务比较热门,很多企业都开始从传统开发模式转向微服务模式开发。微服务可理解为将一些需要实现的较小功能集采用独立应用模式,以避免代码量过大和耦合度过高等问题,也即分而自治。传统开发模式,开发人员比较熟悉的是MVC开发模式,为了实现一个较小功能,需要整合一个很大的代码库,给后期维护同样带来很大不便。

在这样一种情况下,业界提出了微服务概念。微服务重在轻,能实现快速开发、测试和部署。这样,一个业务系统可以实现快速迭代,缩短周期。一般认为,微服务具有以下优点:

· 缩短生产时间;

· 较小配置;

· 易于部署;

· 简单的可扩展性;

· 与容器兼容。

下面是一个介绍微服务和传统开发架构的对比案例,一个打车软件的功能模块划分简单描述如图1.1所示。

这样的功能划分对于开发人员来说不难理解,但是不管怎样,比如采用SOA架构、MVC模式等进行开发,最终该软件将打包成一个单体应用系统并被部署,那么,开发单体应用系统,这种模式比较适合于小项目,其优点是:

图1.1 打车软件功能模块

· 集中式开发与管理;

· 代码复杂度不高;

· 模块间耦合度高;

· 部署简单。

这种开发模式比较适合于传统经典、小项目,业务模块能提前确定,开发周期较长,那么其缺点为:

· 开发维护难:由于代码耦合度较高,新入职员工学习成本高;

· 部署灵活差:由于是单体应用,每次更改哪怕一小段代码都需要重构,给部署带来一定复杂性,并且这个过程会比较长;

· 稳定性较差:单体应用系统可能会由于一个小的问题而崩溃;

· 开发协作差:如果由一个团队来进行开发,团队成员间改动代码,会造成沟通复杂,代码产生冲突可能性更高。

如果采用微服务架构,以上打车软件功能模块描述如图1.2所示。

可以将打车业务进一步细分为各个更小的微服务,服务间采用REST通信,其优点在此不再赘述。

本书介绍的Spring Boot就是微服务架构的一种实现,其可以大大简化开发模式,集成很多常用框架。为了对比Spring Boot开发快捷性,将和Spring开发进行简单对比,然后在后面各章节详细介绍Spring Boot实现。

图1.2 微服务架构示例