软件体系架构阅读笔记(十二)

1 主要概念
     SOA :英文全称是 Service-oriented architecture ,如今概念比较的不统一,主要由如下几种定义java

  1.W3C :能够调用的一系列组件,其接口描述能够发布和发现。 
     2.CBDI :一组策略,实践和框架,支持将应用程序功能做为一组服务在与可以调用,发布和发现的服务使用者相关的粒度发布; 这组服务是使用接口的单一标准形式从实现抽象出来的。 
     3.Gartner: 面向服务的体系结构是一种客房机/ 服务器软件设计方法,其中的应用程序由软件服务和软件服务的使用者(也称为客户机或服务请求方)组成。SOA 与更为通用的客户机/ 服务器模型不一样,其定义强调软件组件间的松散偶合及对独立接口的使用。 
     4.IBM :面向服务的体系架构(Service Oriented Architecture,SOA )是一个建设企业IT 架构的架构风格。采用面向服务的原则,达到业务与支持业务的信息系统的紧密结合。 
     5.BEA :面向服务的体系架构是一个IT 战略,将企业应用中分散的功能组织成为支持互操做、基于标准的服务。这些服务能够被组合及快速重用以知足业务需求。
ESB : 全称为 Enterprise Service Bus ,即企业服务总线跨域

  BPM : Business Process Management 业务流程管理缓存

  2 概述 
     ESB 的存在主要是为了整合企业内部的应用,使一个企业能的应用能合为一体,而不是成为一个个独立的应用。能够说 ESB 企业内全部的服务的中心点,其余的系统间的交互都要通来 ESB 来完成。为此他的质量属性的重要性依次是这样的,可用性、性能、可修改性、可测试性、易用性。它门描述能够参看下面的 2.1 章节 为了完成这些属性,咱们能够从企业域, 部门 域, ESB 内部视角三个层次来进行说明。由于 ESB 除了高可用性和性能以外,高可伸缩性也很重要,在实际的应用过程当中,你能够进行对整个结构进行裁减,在开始时,你可能只要一个部门域,一个部门域内支持水平扩展,当到了瓶颈后,你可能会部署多个部门域,这样作到这时你能够把他当作一个垂直扩展。服务器

  2.1 ESB 的质量属性 
     第一位:可用性架构

  ESB 是企业内应用之间及对外第三方系统之间交互的集中点,他集中的管理了交互的全部服务。他还有服务查找,管理,审计,监控,分析,等功能。当一个 ESB 服务出现了故障,它就将会影响企业内的全部应用的正常运行。因此,可用被性放在了第一位。框架

  第二位:性能运维

  随着企业内部整合的推动,ESB 内部的服务交易量应该不会是个小数,高性能对于一个ESB 的应用也是很是重要的。性能

  第三位:可修改性测试

  由于 SOA 的企业治理是一个按部就班的过程,在ESB 部署的开始之初,很难对交易的量上有一个准确的估计,对性能的扩展性有比较高的要求。在实际的生产运维过程当中,咱们仍是会经常发现,服务可能会出现这样或那样的问题。为了让使用这个服务的应用能正常的使用,快速的修改和部署,是一个很重要的问题。ESB 的项目是随着SOA 的企业治理而进行一次次的迭代过程,这也就意味这可修改性在ESB 中的重要性。设计

  第四位:可测试性

  ESB 的上线既然是一个迭代的过程,服务会根据SOA 理念的深刻而增长。在迭代的过程当中,要保证之前的服务能顺利的经过,可测试性是一个很重要的保障。企业内应用的交易,应该只面向ESB ,它们要交互并不须要知道这个服务在哪里或是给谁使用。这时,ESB 的测试就是一个很大的问题,由于这支交易在开始的时候,你可能并不知道他会在哪里被使用,但咱们至少要保证这支交易基本上是正确的,这样才能便于使用。

  第五位:易用性

  易用性,这固然是要提升一个服务的开发效率,能快速的开发和部署一个服务。由于他对生产上的活动没有影响,在这里它只能放在第五位

  3 企业域视图 
     在大多数据状况下,若是你的交易量不大,你大能够只使用一个部门域来支撑整个企业内的服务。但若是只是一个 ESB 的部门域的话,是没有办法支撑后来交易量的年年增加的。虽然咱们的每个部门域,均可以自行进行水平的扩展,但这仍是有一个度,若是超过这个度后,你就只能使用垂直扩展,这种扩展方式固然没有水平扩展来得廉价,但他能支撑更大的交易量。 在企业域中,最大的特色就是有多个部门子域,每一个部门子域都是高度自治的。他们能够独立的处理域内各个系统的整合,只有当须要别的域的服务时,他才会请求其余的域。为了防止部门域之间变成一个蜘蛛网,这里咱们引入了企业域管理器,来统一管理域内的服务与及对这些部门域进行必要的监控。

  在企业域管理器中主要有如下的几个组件:

  l 企业服务查找注册组件:这个组件通常状况下是独立部署的,并且应该有很高的可用性,在理想状态下,应该能够查找到全部部门域中的全部交易。跨域的交易都须要经过这个组件来查找到对应域的服务。

  2监控组件:这个组件能够查看各个部门域内的运行状况。

  3 元素 
     3.1. 企业域管理器 
     3.1..1 企业服务查找注册组件 
     这个是企业域管理器的核心组件,使用他来管理整个企业内的全部服务,这个组件应该有如下几个功能。

  服务注册:注册服务的地址,服务的说明。

  服务版本管理:能够管理个服务的版本。

  服务客户端代码的生成,根根服务的地址和说明生成服务的客户端,通常是 java 版本。

  服务路由表的查找:主要是为了查找对应的服务的地址,并且能够对服务路由进行推送。

  服务的使用方注册:你要请求其余的域的服务,你就须要告诉服务查找注册组件,这样就能够经过此组件找到此服务的使用路径,从而当服务进行更改后,能够有效的通告相对应的交系域。

  3.1..2 监控组件 
     这个组件能够查看各个部门域内的运行状况,并在部门域的运行超过伐值时进行相应的预警,必要时,操做域内流控来操做交易。具体的功能以下:

  查看各个部门域内的运行状况。如硬件资源,交易信息,流控信息,配置信息。

  对资源使用状况进行预警

  根据状况操做部门域内的配置参数,好比流控的配置参数。

  定时收集各个域内的信息,保存后,为报表、决策分析等提供信息支持。

  3.1.2 部门域 
     部门域是整个企业域内的一个个的 ESB 结点,每一个部门的域内会根据项目群,或者根据部门来进行划分,在各个部门域内都有一个 ESB 的应用,经过这个 ESB 来整合整个部门内的服务和应用。这个元素咱们将会在部门域的视角中祥细进行阐述。

  3.2 场景 
     3.2.1 子域间交互 
     全部的服务都会被注册到企业管理器的服务查找组件中,这个组件拥这些服务的描述和服务的地址信息。一个具体的流程能够查看序列图(图表 3:2 ),部门域 A 若是要发起一个跨域的服务请求,那就必需要使用企业域管理器的服务查找组件,经过这个组件的路由表来获取此服务的服务方的部门域 B 的服务的地址后,才能请求对应的部门域 B 。 为了提升性能,在这个场景里,咱们也能够在启动的时候就去取对应的路由表信息,而后缓存起来,经过缓存来找到部门域 B 的地址,但这样有一个注意点,那就是当部门域的改变了服务的地址后的通知部门域 A 的策略问题,咱们能够有下以几种策略

  服务查找组件进行推送

  若是服务请求地址出错,从新请求服务查找组件

  定时清空路由缓存

相关文章
相关标签/搜索