基于时标的分布式事件处理系统框架
本系统的最大特点是严格按照事件具备的唯一时标进行全程处理,以保证等式y(t) = H(x(t))
是完整正确的。
系统主要由节点、通道和事件等三个基本元素。
基本元素
节点
节点在系统中是事件的处理实体,核心是它内部有一个外挂事件处理程序的插件机制。每个节点都可对应多个输入、输出通道,用于向节点的事件处理程序输入事件,并将处理事件输出。端特性的节点是一个特殊情况,它或许无需定义输入通道,例如对于事件采集节点;或许无需定义输出通道,例如对于事件处理呈现(如报告、展现等)节点。
也可以根据要求,定义具有其它特殊功效的节点,如多通道汇聚节点或事件多通道分配节点等。
通道
事件在系统中的传递是由通道实现。它有两个功能层面,其一是事件管理层面,主要实现按时标顺序组织输入和输出的事件,实现严格按时序传递事件的机制;其二是事件传输层面,用于实现事件实体有效载荷的传输,例如采用消息队列、共享存储或其它网络传输系统等实现事件在不同计算系统间的传递。
事件
事件是系统运行的带有特定时标的载荷,各种可计算的物理实体都可通过事件进行抽象,例如对一个存放在一个共享内存系统中的数据集,或存放在文件系统中的共享文件,或数据库系统中的表等。
注册器
注册器的主要功能是实现节点、通道和事件等实体的命名管理,按名称注册和获取指定类型的对象实体是其基本功能。
注册器包含三个链表,分别与节点、通道和事件对应,允许按某种策略把单个对象实体插入链表中,或转移链表中的对象实体位置。
注册器提供一个外部API用于获取它提供的服务。
系统
系统是一个独立运行机制,是由一组通过通道和同步器相关联的节点组成,构成一个具有特定功能的事件处理机。
复合系统,是指由多个相互关联的系统组成的事件处理机制。
时序
时序是一个系统运行的时标基,是一个连续的正整数序列。
每个系统都拥有自己唯一的时序实体,并由它来驱动系统按时标进行系统中所有事件的步进处理。
时序严格遵守连续性,即(T+1)是(T)的前续时标。
失序,当系统等待某个通道的时标(T)事件时出现了(T+1)事件,则说明出现了事件失序现象,原因可能出在前序节点或在通道传输过程中。系统应对失序情况进行修正处理。
同步器
同步器是系统核心功能单元,是系统实现等时标处理的关键组件,用来保证来自多个通道的具有相同时标事件的完整输出。当其中一个通道没有指定时标事件时,有两种策略选择,其一是等待,直到所有通道都能提供相同时标的事件,其二是处理下一个满足所有通道都能提供相同时标的事件。
实例
数字正弦波发生器
系统结构为:
这个系统最终的输出结果为:
数字耦合振荡器
系统构建为:
系统输出:
源码
本文所述机制由python构建,源代码:https://github.com/shenwei0329/FlowControllerBasedTimeScale