在SOA网格中共享数据

日期: 2008-01-17 作者:高英飞 来源:TechTarget中国

  企业软件越来越复杂,SOA的解决方案也越来越多。不可否认SOA是个好方法,但是也不是没有疑问。因为对于那些解决当前问题的企业级软件,模式驱动的方法也是需要的。模式驱动的方式可以在业务与IT之间搭起桥梁。它还可以提供灵活性,今天快速变化的市场非常需要这一点。但是,我们忘了大部分SOA还要面临这么一个问题:数据在哪里?

  SOA的基本原则

  关于SOA,有诸多的定义,但归纳起来,都拥有如下基本原则:

  IT设备被描述或表现为服务;
  服务是真实世界业务活动的映射,包括企业业务流程或企业间业务流程;
  服务有标准的协议;
  服务的协议包含了顾客的紧耦合要求,同时也要包括周围环境对他们的松耦合要求;
  服务通过一种理论上的接口来展现他们的功能性;
  服务是可以重用的;
  服务可以被用来组织成更高级的业务流程。
  服务可以以通信活跃的元数据作为补充,这样就可以很快被发现和理解。

  可以看到,所有这些基本原则都集中在服务和他们的功能上。这当然不是坏事情。因为服务的本质就是可复用、可分解、可重构等等。但是,所有的这些服务从哪里获取数据呢?

  以网格的方式共享数据

  建立SOA网格是实现数据共享的一条可行途径。SOA网格相当于建立一个灵活的集群,对于一个SOA环境来说,这个集群是为内存接入、负载均衡和高可用性专门设计的。这种类型的集群能够跨越异构的、低成本的硬件设施工作集群,还能够根据需要在集群中动态地分派一个或多个备份系统。

  利用自我修复管理和前瞻性负载均衡服务,以及在实时服务服务负载的分析基础上,清除最佳高可用架构设计的复杂性,能够建设一个持续可用的架构。当网格上的一个节点不可用,其他的节点可以接着执行任务。当新的节点启动,他们可以分担负载,增强整体的处理能力。简而言之,SOA网格将增强管理员主动控制和反馈运营事件的能力,从而减少对客户服务水平的影响。

  在基于网格建立的SOA环境中,关键的一个部分是一个中间缓存层。这个中间层能够为SOA环境下服务使用的状态数据提供一个遵从开源协议JCache、内置、分布式的网格解决方案。

  这个中间层要清除服务的记忆内存,目的是让其他的系统跨过网格。这将高效地提供一个分布式的共享内存池,以使得它们能够线性地切入一个异构的系统中。

  在一个网格支持的,实时的服务导向的环境中,他们能够利用中间缓存层。应用或者服务放入网格中的所有的数据物体都是可以自动地被网格中所有其他的应用和服务使用和接入的。即使出现了服务器宕机事件,也不会丢掉哪一个数据实体。为了支持这种性能,可以用一组不间断运行的缓存服务器通过实时集群控制的方式来更新,从而共享数据。

  这种方法的关键是保证每个数据总是有一个原始的所有者和增加的后端服务器来管理。这个数据可以是任何事情,从简单的变量到复杂的对象,甚至大型XML文档。从开发者的角度来看,服务通过一个规定的接口出入,简单地运行,就像访问一个Java地图和一个.NET字典一样。

  从图1我们可以清晰地看到这种数据共享的实现过程。SOA网格执行将数据放到地图上的命令并且经过一个高效的网络协议而接触到节点p,该节点拥有原始的实例数据。这个原始节点依次复制更新数值到第二个节点B,作为备份。接下来,一旦相应的确认通知处理完毕,就会从控制回到服务。
  
  反过来,当实例数据需要被服务营用接触的话,SOA网格将自动确定那些含有该实例数据的原始节点,并引导数据回到服务或者对它发出命令的业务目标上。有很大范围的操作都可以支持这些行为。

  所有数据的集中可以放在网格中来进行,就像一个单独的操作行为。通过大量的原始和备份节点,网格可以将这些集中的内容分散到一定的比例。

  还有一个好方案,可以使服务充分利用数据库的持续性。

  内置接口的所有点都是要避免数据库持续性的过度。这被公认为在最大数据处理负载时的瓶颈。为了解决这个问题,一个SOA网格可以利用异步的后写排队,即最后更新成为一个数据库。强调异步和最后,是因为更新数据库的运作不应该打断支撑服务和应用服务的状态数据网格的更新。

  这是一个适用于SOA的非常好的数据处理方式。总之,需要在数据和服务之间设定了一个层。现在,一个不可忽视的问题是,当我们设计这个层的时候应该记住什么?

  服务之间共享数据还可以像B2B的信息共享空间(如图2所示)那样去做,特别是当服务只是在组织内发生时。因为这是服务的本质。服务或者更好的,更多的服务,应该有约定性、特定的接口,和清楚的上下文依据。由于这些特性,从理论上讲,不管服务是发生在组织外,还是组织内,并没有区别。

  当我们试图在服务之间共享数据时,问题出现了:

  有用信息的共享实际效果还待确定;
  不同的服务有各自不同的目的;
  有必要规定一个恰当的数据格式;
  应该有不同团队的投资(如果在不同组织间发生数据共享,这一点就没有关系了。但是,如果是不同的部门,有他们各自的预算,为了完成他们自己的服务而必须共享数据的话,则需要考虑);
  服务变得依赖于数据共享系统的服务水平;
  服务必须保持数据共享所呈现的功能主题的价值;
  涉及到的各方总是在变化之中;

  对于这个问题,从数据方面来考虑,有三个尺度可以考量,即决策控制:谁来做与数据有关的决定;数据存储:数据存放在哪里,谁存储的;数据传递:数据是怎样传递的,谁在传递数据。

  这三个尺度已经显现出来。B2B的电子商务架构给出了最重要的两种解决办法,即共享区间:所有的事情都集中在一起;点对点交易:所有的事情都去中心化。

  值得注意的是,如果在一个SOA的环境中,数据共享得到足够关注的话,它应该不止上述这么一种解决办法。

  图1

  图2

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • Dynatrace APM:关联环境提供数据

    Dynatrace Application Monitoring是一种应用性能管理(APM)工具,它的协作工具包括高层视图和简单的数据挖掘,能够提供可视化和上下文细节。

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。