科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道构建弹性 SOA 基础架构之一

构建弹性 SOA 基础架构之一

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

弹性 定义为服务的持续可用性和性能,而不受其环境的负面更改的影响,它对面向服务的体系结构(Service-Oriented Architecture,SOA)至关重要。

作者:Snehal Antani 来源:论坛整理 2007年12月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

问题场景示例

  某个特殊的客户遇到了以下问题,导致一切变得异常糟糕:

  •   某个网络路由器出现了问题,导致 WebSphere Application Server 服务区域的很多工作线程阻塞。
  •   工作请求进入队列,等待工作线程。
  •   工作负载管理系统判断 the WebSphere Application Server 服务区域已挂起,发出了 EC3 abend 来终止服务进程。
  •   EC3 abend 导致正在处理的事务回滚。
  •   服务器服务速率缓慢再加上事务回滚的影响,导致其他 WebSphere Application Server 服务区域回滚。
  •   此影响将对很多其他服务和子系统重复,从而导致停机。

  图 7. 阻塞线程的连锁效应

  

  阻塞工作线程和不当的服务部署与分配可能会极大地降低中间件基础架构的总体性能。这可通过从 J2EE 和 CORBA 领域获得的最佳实践予以解决。这些最佳实践包括并列配置相互连接的应用程序模块,并尽可能减少有些分布式域中的远程调用数量。实际上,相同进程(例如 Java Virtual Machine [JVM] 或寻址空间)中并列执行的服务可以通过优化加以改进,例如按引用传递值、在当前执行线程上执行,以及避免对网络堆栈进行遍历。远程访问服务可能至少会导致随后发生过载。

  服务使用者必须:

  •   对请求参数进行序列化。
  •   遍历网络堆栈,以寻找出站调用。
  •   如果安全策略要求,则对请求进行加密。
  •   阻塞工作线程并等待响应。
  •   遍历网络堆栈,以处理返回值。
  •   如果安全策略要求,则对请求进行解密。
  •   对返回值进行反序列化。
  •   恢复阻塞工作线程。

  服务提供者必须:

  •   遍历网络堆栈,以接受入站请求。
  •   如果安全策略要求,则对请求进行解密。
  •   对请求参数进行反序列化。
  •   将请求分配给新工作线程。
  •   对返回值进行序列化。
  •   如果安全策略要求,则对请求进行加密。
  •   遍历网络堆栈,以发送返回值。

  图 8 给出了基于实际客户部署的场景。对于此客户,多个组件在单个全局事务范围内进行大量的交互。在此场景中,系统不仅可能会在任意时间存在大量阻塞工作线程,而且还表现出性能低效,且会产生较高的每秒百万条指令(Mmillions-of-Instructions-Per-Second,MIPS)成本。

  让我们对图 8 进行一下详细分析,以便您了解应该如何解释此图:

  •   组件 1 通过 Remote Method Invocation over Internet InterORB Protocol (RMI/IIOP) 调用组件 2。组件 1 阻塞并等待组件 2 响应。
  •   组件 2 然后通过 RMI/IIOP 调用组件 3。组件 2 等待组件 3 响应。组件 2 和组件 1 现在都被阻塞。
  •   组件 3 响应组件 2。
  •   组件 2 响应组件 1,事务完成。

  最终两个工作线程(服务器 1 和服务器 2 上分别一个)在此事务期间都被阻塞。另外,还进行了两次 RMI。这些都会带来开销,减少服务器处理容量。

  图 8. 客户事务示例

  

  从性能而言,开销最大的操作通常是数据和返回值的序列化和反序列化以及请求和响应的加密与解密。这些开销可以在服务并行配置时加以避免。此外,在 z/OS 之类按照执行指令收取费用(可以作为 MIPS 的示例)的平台上,出现这种以事务为单位的开销的费用将会极大地增加部署成本。

  SOA 与队列模型

  队列模型可以帮助确保 SOA 的稳定性和生产可用性。通过队列模型,不仅可以可视地对系统和各种参数加以表示(如超时和平均响应时间),而且还能够了解其对系统的影响。图 9 显示了队列模型的一个示例。 共享本文……

  图 9. 队列模型示例

  

  其中的关键是能够改变超时概率和超时值。然后可以进行计算,以确定每个线程的服务速率(并据此得到整个服务器的服务速率)。代表客户的系统队列模型能够在实际发生前三十秒内预测 EC3 abend。

  队列模型能够帮助标识 SOA 中阻塞工作线程的影响。但要定义队列模型,必须了解组件及子系统间的相互依赖关系。此类模型的构造是本系列后续文章的重点。

  总结

  本文说明了细微(但仍然重要)设计问题会如何对 SOA 的稳定性造成巨大的影响。文中提出了几个特定的、具有潜在问题的设计领域,如果在实现时未对这些进行恰当考虑,可能会增加 SOA 基础架构的脆弱性,从而降低 SOA 部署的总体稳定性。

  本文的目的是向 SOA 设计者介绍对 SOA 弹性造成影响(正面和负面)的重要因素。本系列的后续文章将讨论此处所述问题的解决方案,包括可帮助促进问题 SOA 的稳定性的短期直接解决方案和用于构建弹性 SOA 的长期的全面性解决方案。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章