zoukankan      html  css  js  c++  java
  • [学习记录]从triggerflow源码中学到的简单思想

    Triggerflow是一个基于事件驱动的无服务器工作流编排系统。项目已经在github上开源,但是目前还不够完善,尝试在自己搭建的knative上部署也并没有成功工作,但是其中的一些思路还是不错的,所以本文就简单分享一下它的思路。

    项目地址:http://github.com/triggerflow/triggerflow

    整体把握可以参考github中的图,事件从事件源接收后发送到指定的trigger,trigger对比condition后决定是否运行,运行其实就是调用具体的函数。triggerflow未来发展顺利的话是有可能整合进knative中的。

    由于是一个粗略的把握,所以这里我也就分点粗糙的记录一下一些想法吧。

    ------------------------------------------

    1.一个trigger的核心组件为四个:event,condition,action,context。event是一个json类型的数据,由于triggerflow是用python写的,所以也可以看作一个字典,condition是一个条件判断性质的东西,在knative版的实现中表现为一个函数,trigger通信时传递condition的函数名,但判断时调用condition结合event和context进行判断。action和condition类似,最后也是输入context和event进行运算。context是上下文,包含的信息非常多,包括event、trigger等等环境中的因素,是condition判断条件的依据。

    2.整体采用的大多数都是RESTful式的api,存储用的是redis,目前看起来最后函数运行的结果应该也是保存在context中,我目前认为可以将结果写入数据库并提供一个访问token,用户通过token去提取运算结果。

    3.目前系统中的通信是依靠python中的queue执行的,由于没有完整运行过,不知道改成GRPC会不会好一些。或者kafka也行?

    4.knative中的实现里,triggerflow主要用的是flask作为网络调用的接口,确实serverless的网络间访问应该就是完全依照某种统一的网络接口来访问,例如restful类型,通过传递一个json式的数据传递消息。而平台应该负责保证各个函数的随时启用,

    5.函数之间访问链应该以某种形式存在。triggerflow提供的是工作流形式,这个工作流最后会变成一个个trigger,工作流的编排由开发者设计,最后保存到某个介质中,例如数据库。

    6.访问时元素挺多的,除了id、workspace等工作必须元素外,还应有auth授权信息,允许自定义的参数列表等等

    7.事件源在这里是作为一个事件的发生器,不过在knative版的实现中并没有太多的体现。triggerflow中规定事件源继承自EventSource类,需要实现set_stream,publish_cloudevent,get_json_eventsource三个方法,最重要的就是publish_cloudevent,即向绑定的通道发送消息。我理解里,事件源的事件应该发送到一个类似路由中心的地方,由路由器根据事件中指定的trigger进行分发。

    8.workspace相当于一个域,域里面有共同的workspace名,事件源以及全局context

    9.事件流可以通过状态机的方式展示,通过当前状态以及输入决定下一个目标,可以作为一种serverless模式下的设计模式

    10.trigger就像是要运行的函数带了个头套,方便与其他东西相接,但最终指向一定是函数。

    11.一个更加通用的模板是更好的。各种意义上的模板以及各个场景上的模板

    12.参数放在event中,因为event算是唯一的输入了,context属于运行时产生的状态记录。

    大概就这样吧。

  • 相关阅读:
    移动硬盘插入电脑后检测到却不显示如何解决?
    Js求角度、三角形、弧度计算
    Python之常用模块(一)
    PostgreSQL中的MVCC 事务隔离
    520了,用32做个简单的小程序
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    MySQL 返回未包含在group by中的列
    《Mysql日志备份/恢复》大型详细攻略两万字图解(史上最详细,多图)
    年轻就该多尝试,教你20小时Get一项新技能
    Flutter开发指南之理论篇:Dart语法05(单线程模型,事件循环模型,Isolate)
  • 原文地址:https://www.cnblogs.com/trickofjoker/p/13374859.html
Copyright © 2011-2022 走看看