微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 实时SOA从消息总线开始

实时SOA从消息总线开始

时间:12-15 来源:互联网 点击:


表2

过滤功能是系统扩展性与表现性能的关键。支持过滤的中间件可以只为各组件传送最重要的内容,这可以节省大量网络带宽和CPU资源,使系统可以处理更多的信息。比如,事件处理引擎可能会查找关系到某些计算机或网络单元,或者属于某种协议的网络活动。中间件并不会将所有网络事件都传送到引擎,并让引擎过滤掉不相关数据,而是先进行过滤处理,然后再发送相关数据,这样可为事件处理引擎节省网络带宽与CPU资源。
主要有两种过滤器:一种是基于时间的,另一种是基于内容的。基于时间的过滤器会限制信息频率,比如每秒最多允许发送10次更新信息。基于时间的过滤器对应用程序非常有用,例如以人为本的仪表板,只需要获得走向与概要信息即可。
基于内容的过滤器从内容上对信息进行简化处理。举例来说,一个显示程序可能只关心接近机场的飞机位置。基于内容的过滤器就会筛选出所有离机场很远的飞机。

3. 性能提升技术
一辆无论构造多么合理的汽车,如果没有强力的引擎就不可能发挥出优良的性能。同样,消息中间件也需要一些特征与技术以获得最佳性能。其中以下方面最为重要:组播技术、消息批处理功能、消息分段技术、异步远程拷贝和传送过程中的零拷贝访问。

4. 实时判定机制
实时并不是简单的速度快而已。为实现稳定的实时,系统必须同时稳定而高速。实时判定机制决定了每次系统运算时的稳定性。一个实时判定系统必须在每个运算上花费同样的时间。
然而,并不是你做的那些事决定实时操作能力,而是你不做的那些事决定了实时操作能力。因此,实时的满足需要处理器、资源定位和管理上的稳定性与一致性。内存分配、等待周期、关闭中断或者其它的任何程序操作都会引发无法预料的行为。为保证稳定性,每个操作必须以同样的方式同样的时间进行。对于一个包含多个步骤的操作,每一步都必须是可靠的,因为其中可能包含不可靠的信息。如果某一步是不可靠的,那整个操作链都会变为不可靠的。
因为基础硬件设施一般都是非常稳定的,因此系统的不确定因素源一般在操作系统、中间件或应用逻辑/代码中。实时操作系统是一项大受好评的技术。应用程序必须本着传送稳定结果的理念进行设计。然而,在许多系统中,中间件是实时运算的关键。
这意味着在实际应用中消息中间件必须:

  • 使用异步操作技术而非阻塞操作。多线程技术为并发和多核架构提供了机会。
    使用多线程技术并发处理紧急任务。仔细挑选架构与优先技术以避免线程冲突,并使用看门狗(watchdogs)和延时设定(timeouts)监控和维持应用程序正常运行。
    在稳定的基础设施上执行(实时操作系统、实时Java虚拟机,实时中间件组件)。
    谨慎地控制资源。控制动态内存的使用,限制关键路径外的内存分配。
    进行任何存储访问时尽量使用内存缓存而非直接进行磁盘操作。
    为中间件的可编程应用扩展提供“进程内(in-process)”机制,比如加载DLL文件或Java类。

5. 度量指标
可以认为,优秀的度量指标是决定中间件最终性能的唯一条件。然而,定义消息中间件的特征远比看起来复杂得多。
大多厂商只提供一些关于消息处理能力的信息,类似每秒处理多少消息或字节等。还有少数厂商提供关于延迟的测试数据(从发送方到接收方的端对端延迟)。几乎没有厂商会提供关于可扩展性和不稳定同步的度量指标,包括随着系统发展性能的变化、负载增加,或者消息之间的变更。并且,这些结果很大程度上依赖于计算机和网络硬件设施,以及测试方案。
比如,厂商可能会提供关于执行时间和处理能力的数据,声称他们的产品可以以低于0.5毫秒的时间完成一条消息的传送,并可以每秒传送1000000条消息,但并不会指出是否可以用一个应用程序同时完成这两项任务。甚至,都不会指明这个执行时间是否代表理想情况下的最佳性能,是平均时间还是可以保证大部分消息(比如99.99%)在这个时间内传送等。消息容量和内容类型(不透明的字节、字符串或复合类型)都有极大的影响。比如,如果指的是没有实际意义的四个字节的消息,“条/秒”也就没多少参考价值。如果不考虑类型转换(marshaling,一种称为列集转换方式),每秒多少字节的数据也没有意义。比如,传送raw XML字符串的低效率数据转换方式可以每秒传送许多字节。然而,使用经过压缩处理的XML语言或二进制格式的高效转换方式在传送实际消息时要快得多。这种例子数不胜数。
既然不存在标准的实时中间件性能的测试程序,我们就只有以下选择:依靠厂商给的数据,开发自己的度量标准,以及通过使用中间件的应用程序来进行判断。第一个过于模糊,第二个费时且成本高,而第三个是主观判断。
通过上面的说明,了解以下指标可能会有助于评估中间件的性能,并可最低限度地从提供实时SOA系统的厂商处获得如下信息:基于消息容量的处理能力、基于CPU使用情况的处理能力、消息批处理能力和基于稳定性的最佳表现;基于消息内容的执行时间、基于处理能力的执行时间等。
比如,图3到图7显示了两种不同中间件架构处理能力与执行时间的比较图:一个星型构架(JMS)和一个对等结构的网络(DDS)。
可以参考由RTI Data Distribution Service(运行环境数据分发服务)提供的更多详细的数据。运行平台是使用2GHz双核AMD皓龙的计算机,操作系统是红帽Linux4.0企业版。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top