Laf Faas 源码学习

一、点击代码保存之后的流程(理解网关)

  • apisix 网关图,所有的请求都会经过网关。所以这个流向如下图所示:

docker compose 启动的 gateway-controller,里面定义的 ENV


  • APISIX 增加路由
    • 会把host:console.127-0-0-1.nip.io ,url 匹配到 /sys-api/* 的请求
    • 转发到 system-server:9000 上


  • 然后 packages/system-server 的 dockerfile
  • 执行 npm run start 启动,端口 9000

  • system-server 的这个路由


  • ts 编译成 js


向 db 中存函数内容,和 hash 比较函数的更新时间

到这里,这个存函数的流程就结束了。

二、创建 app 的逻辑

  • app名字 存数据库
  • 给这个 app 新创建一个数据库
  • 给 apisix 中创建路由

  • 下图就是在 apisix 中创建的路由

然后执行云函数的时候,就会被 apisix 打到这里处理

三、laf 中云函数执行逻辑

  • 新建的 app 运行时,app 运行时的逻辑在 packages/app-service

  • 新建 app 后容器内的逻辑:
    • 依赖在 platform 中添加之后存到数据库里,然后容器启动的时候会去数据库里找这些依赖,然后 npm install 所有依赖


  • 调用 invoke 逻辑,engine.run()

  • 用 vm 沙箱执行

  • sandbox