传统单体框架 --> 服务化架构发展历程
[title]1.1.1 JEE架构[/title]
- JEE是以面向对象的Java编程语言为基础,还扩展了Java平台的标准,是Java平台企业版的简称。
- JEE时代的典型架构
- 架构的三个层级 : Web层、业务逻辑层、数据存取层
- 二八原则:将80%通用的与业务无关的逻辑和流程封装在应用服务器的模块化组件里,通过配置的模式提供给应用程序访问,应用程序实现220%的专用逻辑,并通过配置的形式来访问应用程序服务器提供的模块化组件。
- JEE机构下典型的职能团队划分
[title]1.1.2 SSH架构[/title]
- SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装。
- MVC(Model View Controller),结构示意图
- 瘦客户:b/s结构即浏览器/服务器(brower/server),因为客户端部分只需要有浏览器就可以,不需要安装任何软件,所以被称为瘦客户。
- Spring框架有两个核心思想:IOC和AOP
- IOC(Inversion of Control):控制反转,详细资料:http://blog.csdn.net/qq_22654611/article/details/52606960
- AOP(Aspect Oriented Programming):面向切面编程,相关资料:http://blog.csdn.net/yanquan345/article/details/19760027,在Java世界里,AOP的实现方式有如下三种
- 对Java字节码进行重新编译,将切面插入字节码的某些点和面上,可以使用cglib库实现。
- 定制类加载器,在加载时对字节码进行补充,在字节码中加入切面,增加了除业务逻辑外的功能,JVM自身提供的Java Agent机制就是在加载类的字节码时,通过增加切面来实现AOP的。
- JVM本身提供了动态代理组件,可以通过它实现任意对象的代理模式,在代理过程中可以插入切面逻辑。可以使用Java提供的APIProxy.newProxyInstance()和InvocationHandler来实现。
另外,AspectJ是实现AOP的专业框架和平台,通过AspectJ可以实现任意方式的字节码切面,Spring框架完全支持AspectJ。
(以上的三种方式我还不是非常明白,但我觉得实在JVM类加载机制的过程中起作用,后续好好研究一下,欢迎大家指教) - SSH时代的架构:
- SOA(Service Oriented Architecture)代表面向服务的架构,俗称服务化.
- 解决的问题:
随着时代的发展,传统JEE和SSH无法满足对海量用户发起的高并发请求进行处理的需求,无法突破耦合在一起的模块化组件的性能瓶颈,单一进程已经无法满足需求,并且水平的能力扩展也是有限的。
- SOA架构得的特点:
- SOA定义了良好的对外接口。
- 改变服务内部的实现机制对外部来说可以是透明的。
- SOA在这一时代的数据通信格式通常为XML,后被JSON取代。
- 通过标准的对外接口,可以让底层通用服务进行下沉,增加了服务的可重用性。
- SOA可以让企业最大化地使用内部和外部的公共服务,避免重复造轮子。
- SOA的两个主流实现方式:Web Service 和 ESB
- Web Service的工作原理图,图一;
- ESB的工作原理图,图二;
文章评论