HelloStranger

每个人都是初学者

1.1 从传统单体架构到服务化架构

传统单体框架 –> 服务化架构发展历程

1.1.1 JEE架构

  • JEE是以面向对象的Java编程语言为基础,还扩展了Java平台的标准,是Java平台企业版的简称。
  • JEE时代的典型架构

《1.1 从传统单体架构到服务化架构》

  • 架构的三个层级 :  Web层、业务逻辑层、数据存取层
  • 二八原则:将80%通用的与业务无关的逻辑和流程封装在应用服务器的模块化组件里,通过配置的模式提供给应用程序访问,应用程序实现220%的专用逻辑,并通过配置的形式来访问应用程序服务器提供的模块化组件。
  • JEE机构下典型的职能团队划分

《1.1 从传统单体架构到服务化架构》

 

 

1.1.2  SSH架构

  • SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装。
  • MVC(Model View Controller),结构示意图

《1.1 从传统单体架构到服务化架构》

  • 瘦客户: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时代的架构:

《1.1 从传统单体架构到服务化架构》

1.1.3  服务化架构

  • SOA(Service Oriented Architecture)代表面向服务的架构,俗称服务化.
  • 解决的问题:

随着时代的发展,传统JEE和SSH无法满足对海量用户发起的高并发请求进行处理的需求,无法突破耦合在一起的模块化组件的性能瓶颈,单一进程已经无法满足需求,并且水平的能力扩展也是有限的。

  • SOA架构得的特点:
    • SOA定义了良好的对外接口。
    • 改变服务内部的实现机制对外部来说可以是透明的。
    • SOA在这一时代的数据通信格式通常为XML,后被JSON取代。
    • 通过标准的对外接口,可以让底层通用服务进行下沉,增加了服务的可重用性。
    • SOA可以让企业最大化地使用内部和外部的公共服务,避免重复造轮子。
  • SOA的两个主流实现方式:Web Service 和 ESB
    • Web Service的工作原理图,图一;
    • ESB的工作原理图,图二;

 

《1.1 从传统单体架构到服务化架构》

图1

《1.1 从传统单体架构到服务化架构》

图2

点赞

发表评论