RFID中间件基于集群技术的研究与开发

时间:2010-01-11来源:网络

3.3 组件类型

 在确定组件协同工作机制之前, 首先需要定义一下组件的类型:有状态组件和无状态组件。

 有状态组件:输出结果的产生不只依赖当前的输入数据,还依赖于之前的输入数据。每一次输入数据都会对后续结果的产生有影响。设备管理层的device 组件就是一个有状态组件,因为device 组件中维护着与读写器之间的连接, 该连接是有状态的,所以device 组件也是有状态的。数据处理层的冗余过滤器也是有状态的组件, 因为每次输出结果时都要判断指定时间内是否存在相同的数据。应用程序级接口层的EventCycle 组件CommandCycle组件也是有状态的组件, 因为产生的报告与指定时间段内的所有数据有关。

 无状态组件:输出结果的产生只与当前的输入数据有关。在输入数据确定的情况下,输出数据也是确定的。数据处理层中的位过滤器是无状态组件, 因为它只需要根据当前数据数据的EPC 码来判断是否符合过滤条件,与之前状态无关。应用程序级接口层的Dispatcher 组件, 负责将产生的报告分发至指定URI,也是一个无状态组件。

 3.4 负载均衡

 根据组件分类, 有状态组件和无状态组件我们将采用不同的策略。

 对于无状态组件,由于不涉及之前输入数据的状态,数据即时产生即时处理。因此,我们在集群每一个节点处都创建出所有的无状态组件, 每个节点的无状态组件将通过一定负载均衡策略来获得数据的处理权, 从而将数据计算处理的工作量分散到各个节点。

 可以采用的负载均衡策略目前有2 种:

 轮询调度算法(Round-Robin Scheduling):针对每一个层次,把来自数据缓存总线的数据轮流分配给集群中各个节点, 从1开始,直到N(集群内节点数),然后重新开始循环。由于无状态组件不会占用高消耗的系统资源, 如数据库连结、Socket 连接等(如果拥有连接,该组件应属于有状态组件),因此轮询调度算法基本可以实现无状态组件在各个节点上处理能力的负载均衡。

 就近调度算法:在各个层次中,无状态组件一般要与有状态组件相结合,共同完成该层次所提供的功能。就近调度算法就是根据有状态组件所处节点位置,来决定无状态组件所处位置,使该层次中所有无状态组件与有状态组件处于同一个节点。这种算法的优点就是当一个层次中所有串行操作的组件都处于同一个节点时, 数据在每一个组件处理完成时不必在不同的节点间迁移, 大大减少了数据迁移时的时间延迟。该算法的缺点就是,负载均衡的效果很大程度上取决于有状态组件的分布情况对于有状态组件,参见后面的组件调度策略。

1 2 3 4

关键词: 研究 开发 技术 集群 中间件 基于 RFID

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版