Knative最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6.2 事件模块

第二部分是事件模块,这是Knative中关注度较低的部分。事件模块提供了不同软件之间通过事件进行交互的机制。实际上描述不同软件之间的连接关系比描述单个软件要复杂,涉及的原理也更广,涉及的Kubernetes资源也更多。

本章开始的部分已经介绍了事件模块中的代理和触发器。代理用于管理基于触发器的事件流。触发器用于将事件过滤并转发到事件接收方。

上面只是对其工作原理的概览说明。实际上还有很多的细节并未展开讨论,比如CloudEvent是如何进入代理的,事实上有很多可能性。这里最重要的是事件源。事件源中包含的配置包括事件发出者配置信息,以及将要发送给代理的配置信息。事件源很广泛,可以是GitHub的Webhook、HTTP请求,或者你自己指定的任何源。只要能发出CloudEvent并将CloudEvent发送给代理,就可以作为事件源。

现在你可能已经构思好了业务的事件处理流程,但是在触发器上写触发器实在是太复杂了,估计你很快就会放弃。但是如果能够按照顺序处理事件,那么流程就会变得很简洁。Knative的顺序事件(Sequence)就是为按顺序执行事件流而设计的,比如A要在B之前运行。另外,可以利用Knative的并行事件(Parallel)来一次做多个事情,比如同时独立运行A和B。

与服务模块提供的Service资源类似,序列和并行也是根据其他现有的资源概念抽象出来的。这两个概念是可选的,并不是必需的,使用它们比手动配置相同功能的触发器方便。