为应对传统单体架构的缺陷,微服务架构被企业广泛应用。Spring Cloud 为开发人员提供了快速构建微服务的系列工具,但是并没有进行相关整合, vole 是在其基础上搭建的一套可以快速实现微服务的基础脚手架工具。
1、传统单体架构的缺陷
传统单体应用将所有功能的表示层、业务逻辑层、数据访问层、包括静态资源等全部糅合在一个工程内,编译 打包 部署在单台服务器上线,比如打成 war 包放在 Tomcat 的 webapp 目录中部署。这样的开发部署流程适合小型项目,系统功能不复杂,访问量不大的情况下有绝对的优势,开发速度快且运维方便。但是,当业务越来越复杂,功能越来越多,参与的开发人员越来越多,该流程就暴露出如下问题:
-
业务复杂,代码量增大,代码可读性、可维护性、可扩展性下降。一旦要新同事接手代码,需要花很多时间理解 ;
-
测试难度增大 ;
-
单体应用并发能力有限,访问量高,用户体验差 ;
-
单体应用容错率低,一旦出错,可能导致整个项目崩亏 ;
-
将单体应用做集群部署,添加负载均衡服务器(例如 Nginx 反向代理转发请求)可略微缓解以上两条条缺点,但不能完美解决问题。
2、微服务是什么?
微服务架构:就是将原来的单体应用按义务范围来,划分为多个小 model,每个微服务运行在自己的进程中,相互不产生影响,完全自动化独立部署,并使用轻量级机制通信,通常是 HTTP RESTUFUL API,可对各微服务进行集中管理。这些小 model 可以使用不同的编程语言及存储技术,微服务架构是分布式架构。
2.1、微服务架构的优点:
-
按业务划分的微服务单元独立部署,运行在独立的进程中,服务之间没有任何耦合,具备良好的扩展性和复用性;
-
服务之间通常采用 HTTP 通信,该通信机制与平台和语言无关,可以使用不同的编程语言和存储方法。也可以采用轻量级消息总线通信,如 RabbitMQ、Kafaka 消息队列等,数据格式一般采用 JSON;
-
每个微服务都有自己的数据库,服务间数据库相互是独立;
-
微服务一般采用自动化工具部署。Docker 容器技术是微服务最佳部署容器;
-
服务集中化管理(服务注册与发现:Eureka、Zookeeper、Consul),监控(服务运行状况监控:Spring-Boot-Admin-Server);
-
微服务架构是分布式架构。
3、微服务脚手架工具:vole
Spring Cloud 为开发人员提供了快速构建微服务系统的系列工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、分布式会话等相关功能,但是并没有进行相关整合, vole 是在 Spring Cloud 基础上搭建的一套可以快速实现微服务架构的基础脚手架工具,vole 基于 Spring Cloud Finchley 版本 的框架搭建,可以快速帮助项目组完成老系统微服务改造。苏宁新广告平台原来大单体应用的基础上使用 vole 对原来单体应用进行了快速改造,帮助业务系统快速搭建微服务化。
架构模型图如下所示: