什么是微服务,SpringBoot和SpringCloud的关系和区别?
在上一篇文章中已经介绍了,那这个架构是如何演变过程的呢?那就先从几个架构开始。
1、单体架构
单体架构简单来说,就是所有的功能(模块)都在一个项目,不同模块之间的调用只是类与类之前的引用而已;整个项目集成了前端与后端,并且部署运行在同一个tomcat下。目前有很多的项目都是单体项目,它的架构就如下图所示。
大型单体架构的缺点:
- 开发困难,系统业务庞大,代码量及技术复杂,熟悉起来就耗时;
- 部署时间长,部署时通常需要整个项目打包,停掉所有服务;
- 稳定性差,一个小问题导致整个应用崩溃;
- 扩展性差,对系统不能进行针对性的扩展;
2、SOA-面向服务架构
由于单体架构不能适合更复杂的业务,相对银行业务系统而言。它们的系统会根据业务不同分为很多个子系统,并且将通用的功能开发成接口服务,供不同的子系统调用,如下图所示。
但是不同的子系统开发平台有可能不一样,使用的技术会不一样,传输协议和数据格式也不一样。像这种需要解决不同的子系统之间互相调用,就可以利用ESB数据总线。ESB能实现不同协议报文之间的转换,各子系统接口先接入到ESB总线,由ESB进行路由选择,调用到指定的接口服务。
SOA面向服务的框架,解决了代码重用问题,提高了开发效率;解决了异构系统集成问题(标准化封装ESB);适合企业系统集成。
3、微服务架构
微服务架构,则将应用系统的子模块单独划分为一个服务,划分的更明确;服务与服务之间的调用不再像以前一个靠类与类之间的引用,直接通过rest接口;服务的管理,通过注册中心统一维护;
微服务架构的优点:
- 开发简单,业务划分明确,边界清楚,开发人员上手快;
- 技术选择灵活,根据业务不同可以选择不同的技术平台进行开发;
- 松耦合性,可用性强;
- 可以根据需求进行及时扩展;