并行Observer模式在实时系统中的应用

来源 :计算机时代 | 被引量 : 0次 | 上传用户:lovesici
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 为了使实时系统中大量数据更新能够及时反馈到相应的模块中,设计了多个主题更新数据的Observer改进模式。该模式使用并行的方式通知相关注册的观察者模块,通过为每个通知方开启独立线程的方式,使得主线程和各模块线程都不被阻塞,并且保证数据更新及时有效。将该设计运用到温室环境监测系统中后,传感数据基本能够及时更新到仪表面板及相应的监测点中,满足一定的实时性。
  关键词: Observer; 设计模式; 线程; 实时系统
  中图分类号:TP309 文献标志码:A 文章编号:1006-8228(2018)06-64-03
  The application of parallel Observer pattern in real time system
  Sun Yu, Guo Xindong
  (College of Information and Engineering, Shanxi Agricultural University, Jinzhong, Shanxi 030800, China)
  Abstract: In order to timely feedback a large number of data updates to the corresponding modules in the real-time system, the improved Observer pattern with multiple theme updating data is designed. This pattern uses a parallel way to notify the related registered observer module by opening an independent thread for each notification party, making the main thread and the module threads not blocked, and ensuring that the data updates are timely and effective. When this design is applied to the greenhouse environmental monitoring system, the sensing data can be updated to the panel and the corresponding monitoring points in time, which meets the need for real time.
  Key words: Observer; pattern design; thread; real time system
  0 引言
  实时性系统通常对数据更新的实时性有一定的要求,如温室环境监测实验平台需要使大量传感设备发送来的原始数据持久化,同时还要对原始数据进行清洗处理,去除异常数据后执行必要运算,然后以可视化的形式呈现在各仪表面板上。传感设备的平均数据发送频率为每秒数次,一个温室中数百个传感器同时回传至服务器上的数据量则达到近千次,若考虑在大型试验田中部署传感网络,回传的数据量将更加庞大,若服务器程序处理不当,则可能发生数据丢失而导致数据不完整[1]。
  设计模式中的Observer模式(观察者)定义了主题和观察者两种角色,在同一问题域中,主题和观察者之间实现了一对多的关系。当主题中的状态发生变化时,多个观察者会得到通知,并执行相应的更新动作。Observer模式中的订阅/通知方式可以运用到温室环境监测平台中以解决传感器数据不能及时更新到仪表面板的问题。为多个相互之间具有联系的传感器建立一个复合主题,当主题中的数据更新时,通知已订阅该主题的观察者,即将数据处理后反馈到相应的仪表面板上。由于数据较多且数据的更新频率较高,加之通知观察者所需处理数据的流程各不相同而导致各仪表观察者的更新过程所需执行时间长短不一。若各观察者执行更新的时间总和过长则会导致下一次数据到达时不能得到及时处理而丢失数据[2]。对此,采用并行方法为每个观察者的更新方法启动一个独立的线程,从而使主题的更新时间大大缩短,不影响下一次数据到达时的更新。
  1 Observer模式
  1.1 传统Observer模式
  Observer模式是Gof经典设计模式中行为模式的一种,定义了一种对象间的一对多的關系,即一个主题对应多个观察者。当主题状态发生改变时,所有注册在该主题上的观察者都会被通知。
  传统的Observer模式实现关键在于主题(Subject)对象和观察者(Observer)对象,理论上一个主题对象可以有任意数目的观察者对象。当主题对象上发生某些事件触发状态变化时,所有依赖于它的观察者都将被依次通知,然后观察者执行自身更新动作。传统Observer模式结构如图1所示。
  1.2 存在的问题
  虽然理论上Observer模式可以注册任意数目观察者,但实际环境中往往受限于设备性能、主题状态更新频率及观察者自身更新动作复杂度,主题注册的观察者数目往往需要视具体环境而定,且不能过多。具体体现出的问题如下:
  ⑴ 如果主题状态的更新频率偏高,且需要更新的数据量较大时,则可能出现上一次更新未完成而下一次要更新的数据已到达的情况。此种情况则需要设置缓存队列对未能及时更新出去的数据进行缓冲,增加了系统的复杂性,且对系统的性能会造成一定影响。如果缓存机制设置不当,则可能出现缓存区溢出的问题,导致数据丢失。
  ⑵ 如果观察者的更新动作比较耗时,则以传统的串行方式顺序执行所有观察者的动作就可能阻塞整个系统进程。   ⑶ 传统的Observer模式在数据更新时有“PUSH”和“PULL”两种方式,采用“PUSH”方式,主题需要了解观察者需要的数据格式,在观察者更新动作不同的情况下过于复杂。若采用“PULL”方式,则要求主题向观察者传递引用,需处理数据并行访问的问题。
  2 改进的Observer模式
  针对上述问题,设计出一种基于多线程的并行Observer模式,可以解决主题数据过于庞大及注册观察者过多而导致的数据更新不及时的问题。通过在主题中设置线程接口,以观察的引用作为接口参数,为每个观察者的更新动作分配一个独立的线程,即使在主题数据更新频率过高的时候也能在很大程度上保证主线程不被阻塞[3]。
  2.1 基于多线程的状态更新
  针对传统Observer模式中以串行方式执行观察者更新动作可能导致的阻塞,在改进的Observer模式中为每一个观察者的动作执行都启动一个新的线程,而执行遍历观察者的主线程则可以及时返回[4]。使用该设计主线程在为观察者执行更新动作期间所需等待的时间只有启动线程所需的时间,而使用成熟的线程框架这部分时间几乎可以忽略,因此,主线程可以在两次状态更新之间完成对所有注册观察者的动作更新。其流程如图2所示。
  2.2 基于“PULL”方式的数据更新
  观察者对主题状态变化所引起的数据更新兴趣不一,使得主题将数据统一推送到观察者的动作方法中变得难以实现[5]。在主题需要更新大量数据的情况下,使用“PULL”的方式更加行之有效。
  为了避免数据格式重复定义,在以“PULL”的方式进行数据更新时不以特定的数据格式作为数据传输的载体。在更新数据的时候统一为观察者传递注册主题的引用,观察者需要使用特定的数据则都可以从主题对象中获取。如图3所示。
  由于观察者对数据的需求仅为读操作,因此不存在同步问题,在一定程序上避免了并行编程中数据同步的时间代价。若需求中涉及需要对主题中的数据做修改的操作,则必须在主题中为观察者提供同步的接口,以保证数据的正确性。
  3 在温室监测平台中的应用
  在大型温室环境中,存在大量的传感器或传感设备需要不断的采集现场数据并及时的传送至服务器。这些传感器之间并不一定存在关联关系,收集的数据则需要和收集时间绑定。数据的使用者通常是各类温室管理系统,需要使用这些即时数据对温室环境进行控制,及时的将环境数据反馈到数据使用者。
  由于各数据使用者对数据的兴趣点并不会一致,所以可将传感数据按需分组,并归入对应的主题,各系统模块则根据自身兴趣点注册主题。一旦主题中数据更新,则使用并行的方式为每个观察者模块开启独立的线程进行通知。在此过程中,主线程并不会被通知操作阻塞,也不会影响传感数据的接收。经测试,使用该改进模式开发的温室监测平台可以在保证数据实时性的前提下稳定运行。
  4 结束语
  使用基于并行的Observer模式可以有效解决主题状态更新频率过高和观察者更新动作较为复杂的问题。将该模式应用于温室监测实验平台中,系统可以及时的将大量传感设备发送来的数据更新至相关仪表面板上,且不会发生阻塞现象。然而,线程的启动仍是相对耗时的操作,后续的研究将在于提高线程资源的复用率,则可以进一步提高主题状态更新频率和扩展注册观察者的数目。
  参考文献(References):
  [1] 宋善德,陳辉,桂行东.基于Observer模式的异步Web服务技
  术架构的构建及应用[J].计算机工程与科学,2004.26(4):1-3
  [2] 杨斌,张卫冬,张利欣等.基于Ajax的Observer模式客户端研
  究[J].计算机工程,2010.36(24):4-5
  [3] 郭丽丽,王清心,胡建华等.应用AOP技术实现Observer模式[J].
  计算机技术与发展,2007.17(6):70-73
  [4] 刘健,董倩兰.Observer模式在.NET多线程并行计算中的应
  用[J].计算机时代,2010.11:13-16
  [5] 吴清寿.基于事件机制的观察者模式及应用[J].重庆理工大
  学学报,2012.26(9):100-104
其他文献
经济违纪缘何屡查屡犯华万富近年来,经济领域里的违规违纪、乃至违法犯罪事件时有发生,并呈逐年上升趋势。报载,1995年度全国税收、财务、物价大检查共查出各种违纪金额226.93亿元,其中应上
目的建立单管多重PCR鉴定低危和高危乳突瘤病毒(HPV)的方法以及用临床标本对该方法进行评价。方法设计HPV基因型特异的引物,在一个PCR反应管中PCR扩增来自上皮细胞提取的DNA,然后
【正】 大藏省的一个顾问委员会建议取消在向外国公司发放中长期欧洲日元贷款方面的限制。设立在香港的主要几家日资银行的经理们说这一建议将会被采纳,从对亚洲的各国公司提
耐药菌株较难用单一的药敏方法检测。我们现介绍一种简易快速地检测超广谱β-内酰胺酶法的药敏试验法。
做好对非公有制经济的引导实践证明,非公有制经济一是为公有制经济的主体地位提供日益增长的补充作用。二是为国家提供日益增长的税收。三是为社会提供日益增长的产品和服务。
甲型血友病是先天性凝血障碍中最常见的一种出血性疾病,为性连锁隐性遗传,是血浆中因子Ⅷ(抗血友病球蛋白AHG)的活性部分Ⅷ:C减少或缺失所致,患者全身各部位一旦出血难止住。现将我
通城县人民医院位于湘鄂三省交界的鄂东南通城县隽水城区,是一所集医疗、科研、教学、预防保健于一体的二级优秀综合医院。先后被世界卫生组织及卫生部授予“爱婴医院”、国际
分税制后地方财源发展的基本取向许召主以明确划分税种、中央集中增量为主要特征的分税制改革已于近期在全国推开。这次改革对地方财政经济的冲击是相当强劲的,需要地方政府和
摘 要: 高水平师资队伍的建设是一所学校综合实力及品质的主要标志,而基于数据挖掘的决策支持系统为管理者提供信息分析和决策方案,减轻管理者从事低层次信息处理、分析的负担,提高决策质量和效率。通过对高职院校师资队伍管理现状的分析,结合决策支持系统的特点和功能,提出构建高校师资管理系统的方法,重点完成高职院校对师资队伍建设的预测管理研究,制定相应的师资队伍建设计划。  关键词: 数据挖掘; 决策支持;
摘 要: “互联网+教育”发展迅速,针对开放教育的教学实践现状中存在的不足,阐述了校企合作的优势,构建良好的人才培养模式,创新课程体系,打造“双师型”教学团队,建立“三层递进”实践教学体系,丰富实践教学内容,改革实践教学模式,实施多元化的校企合作,健全质量评价系统,教学科研协同创新,提升学生的综合实践能力。  关键词: 互联网+; 开放教育; 校企合作; 三层递进; 教学; 实践  中图分类号:G