在数据的流水线处理中,我们使用
发电机(S)
中间处理器引擎(聚合操作)
终止子(S)
例如,使用python generator&协同例程,
&安培;
&安培;
可以生成器 - 中级处理器 - 终结者被视为event-driven-architecture的构建块?
答案 0 :(得分:2)
取决于。
您的事件驱动架构缺少的是事件。只要您的所有模块(生成器,终结器等)都可以接收事件并将事件发送给所需的收件人,它就是一个事件驱动的架构。
有时,您会像管道一样非常类似于事件驱动架构,但传递的信息不会被视为事件。例如,Java lambda流传递的是Data,而不是事件。
现在,如果一个人决定将所有数据元素称为“事件”,那么可以认为它是事件驱动的;但是,由于事件通常具有不会在流的处理阶段发生变异的结构(或至少是一种类型),因此该论证会很快死亡。
考虑到这个小想法。是的,所有处理事件的方法都来自一个源(生成器),通过可能完全消耗该事件的处理节点(终结器),或者通过可能生成其他事件的节点(中间处理器)。
但是,此分类是您的,并不是事件处理系统的要求。例如,我可以拥有多个这些角色的节点。单个节点可能会终止已经处理其终止的员工的“员工退出”事件,同时执行某些工作并转发“removeFromPayroll”事件以计算尚未处理其终止的员工。同样,安排每日电子邮件提醒的事件并不完全是“生成器”,而是“生成器”的许多方面。
所以你的分类很好,只要你意识到它是一个分类,你要添加到一个系统来帮助你组织它,而不是一组刚性的“节点类型”。
----示例----
你要谈论的更好的例子是
(origin) -> follow_news_topic -> (story web spider) -> new_news_topic_article -> (archiver)
在这里我们可以清楚地看到有两个事件“follow_news_topic”和“new_news_topic_article”
“事件定位”是对事件的关注。节点是通用元素,但它们不够通用,不能完全适合您的3个分类之一。一个节点可能会在您的分类下拉出双重任务(甚至三重任务)。