1.1 微服务介绍
当前,微服务比较热门,很多企业都开始从传统开发模式转向微服务模式开发。微服务可理解为将一些需要实现的较小功能集采用独立应用模式,以避免代码量过大和耦合度过高等问题,也即分而自治。传统开发模式,开发人员比较熟悉的是MVC开发模式,为了实现一个较小功能,需要整合一个很大的代码库,给后期维护同样带来很大不便。
在这样一种情况下,业界提出了微服务概念。微服务重在轻,能实现快速开发、测试和部署。这样,一个业务系统可以实现快速迭代,缩短周期。一般认为,微服务具有以下优点:
· 缩短生产时间;
· 较小配置;
· 易于部署;
· 简单的可扩展性;
· 与容器兼容。
下面是一个介绍微服务和传统开发架构的对比案例,一个打车软件的功能模块划分简单描述如图1.1所示。
这样的功能划分对于开发人员来说不难理解,但是不管怎样,比如采用SOA架构、MVC模式等进行开发,最终该软件将打包成一个单体应用系统并被部署,那么,开发单体应用系统,这种模式比较适合于小项目,其优点是:
图1.1 打车软件功能模块
· 集中式开发与管理;
· 代码复杂度不高;
· 模块间耦合度高;
· 部署简单。
这种开发模式比较适合于传统经典、小项目,业务模块能提前确定,开发周期较长,那么其缺点为:
· 开发维护难:由于代码耦合度较高,新入职员工学习成本高;
· 部署灵活差:由于是单体应用,每次更改哪怕一小段代码都需要重构,给部署带来一定复杂性,并且这个过程会比较长;
· 稳定性较差:单体应用系统可能会由于一个小的问题而崩溃;
· 开发协作差:如果由一个团队来进行开发,团队成员间改动代码,会造成沟通复杂,代码产生冲突可能性更高。
如果采用微服务架构,以上打车软件功能模块描述如图1.2所示。
可以将打车业务进一步细分为各个更小的微服务,服务间采用REST通信,其优点在此不再赘述。
本书介绍的Spring Boot就是微服务架构的一种实现,其可以大大简化开发模式,集成很多常用框架。为了对比Spring Boot开发快捷性,将和Spring开发进行简单对比,然后在后面各章节详细介绍Spring Boot实现。
图1.2 微服务架构示例