微服务分布式架构基础与实战:基于Spring Boot + Spring Cloud
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 Java Web应用程序的发展历史

Java Web应用程序的发展历史经历了以下几个过程。

1.Servlet类项目

在web.xml中对Servlet容器方式的项目架构进行配置。截至目前依然还有部分老项目用Servlet方式进行运行。

2.EJB类项目

EJB将业务逻辑从客户端软件中抽取出来,封装在一个组件中。EJB组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能是只负责发送调用请求和显示处理结果。在Java中,能够实现远程对象调用的技术是RMI,而EJB技术的基础正是RMI。通过RMI技术,J2EE将EJB组件创建为远程对象,客户端可以通过网络调用EJB对象。

3.REST+JBoss平台类项目

REST+JBoss的设计风格很独特。JBoss提供了一个编程平台,以及一系列拦截器和Web类工具,在编写代码时拦截并过滤模块、向外提供服务,构建REST轻量级开发,只需编写很少的配置文件即可引用相关拦截器。在REST+JBoss平台时期,国内很多公司也在研发自己的Java平台,平台中会集成多种框架和工具,如线程池、持久化、缓存、异步、数据模型等,方便公司内部员工编程。

4.SSM类项目(Spring+Struts/Struts2+Hibernate/MyBatis)

Java逐渐开始研发更完善的轻量级开发架构,减少配置文件等压力,将程序专注于业务本身。在EJB时期每个项目至少都有几十个配置文件,相比较下SSM减轻了依赖很多配置文件的压力,因为SSM类项目的架构快速便捷,大部分功能由Spring进行集中管理。由于SSM架构具备此优点,所以国内部分公司开始减少重复开发的行为,小规模公司则很少再开发公司内部的编程平台。

5.SOA类项目

在单个SSM无法解决大批量高并发需求时,人们开始将一些大型程序分成多个独立运行的模块进行处理,将每个模块部署在不同的服务器上,模块之间用WebService协议进行通信。虽然在SOA初期便逐渐有了微服务分布式的苗头,但在SOA阶段如果大型Java项目写得精细一些,每个WebService下就都会有相关的管理工具、调度页面、性能监控、业务监控、前置系统和黑白名单,整个大型项目的代码十分复杂且数量庞大。在SOA模式下写出来的项目十分安全、稳定、性能优良。因此,时至今日安防类、金融类项目仍然会采取SOA架构模式来架构系统,并且在不同的公司之间通信通常也会采用WebService协议。

6.Dubbo+Zookeeper类项目

Dubbo+Zookeeper分布式服务架构的项目也流行了一段时间,Dubbo是阿里巴巴公司于2011年末开源的一个高性能服务框架,使用高性能RPC实现服务的输入和输出,属于分布式项目。在分布式的思想上与Spring Cloud+Spring Boot并无任何区别,只是因为Dubbo还没有推广起来,阿里巴巴公司就在2013年停止了Dubbo的更新维护,所以这个服务框架渐渐地被埋没了,虽然现在阿里巴巴公司正在重启Dubbo项目,但目前Spring Cloud过于火热,Dubbo一直处于不温不火的状态。

7.Spring Cloud+Spring Boot类项目

微服务的分布式架构利用Eureka或Consul平台进行注册,将每个业务分成一个个小的Spring Boot微服务包,让每个微服务包独立运行后在注册平台进行注册,通过Spring Cloud Feign进行相互通信,也是目前主流的架构。