正是由于传统企业级应用技术的不足,迫使开发者将目光转向了开源社区。Rod Johnson在其编著的Expert One-on-One J2EE Design and Development中,可以说一针见血地指出了当时Java EE架构在实际开发中的种种弊端,并推出了Spring框架来简化企业级应用的开发。
之后,开源社区日益繁荣,Hibernate、Structs等轻量级框架相继推出,以替换Java EE中的“重量级”实现。
本书主要介绍如何从零开始学习市面上优秀的开源框架,来实现属于自己的轻量级框架。笔者称这种框架为“Lite” ,意味着开源、简单、轻量。同时,在本书的后半部分,笔者也会展示如何基于Lite框架,来开发实现一个真实的互联网应用。
那么,Lite框架到底是什么样的呢?
Lite框架是一套轻量级Web框架,基于Lite可以轻松实现企业级应用。Lite具有非侵入性,依赖的东西非常少,占用资源也非常少,部署简单,启动快速,比较容易使用。
Lite底层基于Spring框架来实现bean的管理,因此,只要有Spring的开发经验,上手Lite就非常简单。即便是Spring的新手,通过对本书第3~7章相关实例的学习,也能轻松入门Spring。
Lite旨在通过较少的成本(10%~20%)解决大部分问题(80%~90%)。
Lite专注于解决企业级应用中的场景问题,如对象管理、事务管理、认证与授权、数据存储、负载均衡、缓存等,这些场景基本上涵盖了企业级应用。
通过学习Lite框架,读者能够掌握互联网公司常用的技术,能够解决企业关注的大部分问题,有利于提升技术人员的核心竞争力。
Lite框架吸收了优秀开源框架的技术,取其精华,使自身功能变得更强大,但又简单、易于理解。
Lite框架所使用的开源技术都是目前大型互联网公司所采用的成熟技术,主要包括以下内容。
(1)基于Maven实现模块化开发及项目管理。
(2)基于Jetty提供开箱即用的Servlet容器。
(3)使用Spring实现IoC和AOP机制。
(4)基于Spring TestContext实现开发过程中的单元测试。
(5)使用Spring Web MVC实现RESTful风格的架构。
(6)基于Spring Security实现认证与授权。
(7)使用MySQL实现数据的高效存储。
(8)使用MyBatis实现数据库的操作与对象关系映射。
(9)使用NGINX实现应用的负载均衡与高可用。
(10)使用Redis实现应用的高并发。
(11)使用Spring Boot简化应用的配置。
本书将会在后续章节中继续深入探讨上述开源技术。
在复杂的大型互联网应用架构中,倾向于使用微服务架构来划分不同的微服务。这些微服务面向特定的领域,所实现的功能也更有针对性。
Lite框架支持微服务架构。Lite非常轻量,启动速度很快。同时,Lite倾向于将应用打包成“fat jar” 的形式,因而能够轻易在微服务架构的常用容器等环境中运行。
由于Lite框架支持微服务架构,因此Lite很容易实现自身的横向扩展。
理论上,每个微服务都是独立部署的,且会部署多个实例,以保证可用性和扩展性。同时,独立部署微服务实例,有利于监控每个微服务实例运行的状态,方便在应用达到告警阈值时及时做出调整。
正是由于Lite具有良好的可用性和扩展性,使其非常适用于大型互联网应用。因为大型互联网应用既要部署快、运行快,还要求在运维过程中能够及时处理突发事件。
图1-3所示为微服务实例自动扩展的场景。
图1-3 微服务实例自动扩展
从图中可以清楚地看到,监控程序会对应用进行持续监控,当现有的服务实例CPU超过了预设的阈值(60%)时,监控程序会做出自动扩展的决策,新启动一个“实例3”来加入到原有的系统中。