最新文章

可编程网关 Pipy 第三弹:事件模型设计

可编程网关 Pipy 第三弹:事件模型设计

自从参加了 Flomesh 的 workshop,了解了可编程网关 Pipy。对这个“小东西”充满了好奇,前后写了两篇文章,看了部分源码解开了其部分面纱。但始终未见其全貌,没有触及其核心设计。 不是有句话,“好奇害死猫”。其实应该还有后半句,“满足了就没事”(见维基百科)。 所有就有了今天的这一篇,对前两篇感兴趣的可以跳转翻看。 初探可编程网关 Pipy 可编程网关 Pipy 第二弹:编程实现 Metrics 及源码解读 言归正传。 事件模型 上篇写了 Pipy 基于事件的信息流转,其实还未深入触及其核心的事件模型。既然是事件模型,先看事件。 src/event.hpp:41 中定义了 Pipy 的四种事件: Data MessageStart MessageEnd SessionEnd 翻看源码可知(必须吐槽文档太少)这几种事件其实是有顺序的:MessageStart -> Data -> MessageEnd -> SessionEnd。 这种面向事件模型,必然有生产者和消费者。又是翻看源码可知,生产者和消费者都是 pipy::Filter。我们在上篇文章中讲过:每个 Pipeline 都有一个过滤器链,类似单向链表的数据结构。 那是不是按照上面说的,事件是从一个 Filter 流向下一个 Filter?也对,也不对。