Laf Faas 源码学习
Laf Faas 源码学习
一、点击代码保存之后的流程(理解网关)
- 点击代码保存,发请求 POST http://console.127-0-0-1.nip.io:8000/sys-api/apps/3m29e9/function/634e575835ebd39a800ea441/code
- apisix 网关图,所有的请求都会经过网关。所以这个流向如下图所示:
- packages/app-console 是点击开发之后的页面路由,比如 http://console.127-0-0-1.nip.io:8000/app-console/#/app/3m29e9/cloudfunction/functions/634e575835ebd39a800ea441
- packages/system-client 是整个除了 /app-console 以外的 ui 路由,比如 http://console.127-0-0-1.nip.io:8000/#/applications
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 中云函数执行逻辑
- 比如一个 GET 请求 http://3m29e9.127-0-0-1.nip.io:8000/test-fun1 中间经过了什么过程?
- 分配逻辑: http://[应用ID].127-0-0-1.nip-io:8000/[函数名]
- 新建的 app 运行时,app 运行时的逻辑在 packages/app-service
- 新建 app 后容器内的逻辑:
- 依赖在 platform 中添加之后存到数据库里,然后容器启动的时候会去数据库里找这些依赖,然后 npm install 所有依赖
- 然后当一个云函数调用请求过来的时候,比如:http://3m29e9.127-0-0-1.nip.io:8000/test-fun1
- 调用 invoke 逻辑,engine.run()
- 用 vm 沙箱执行
- sandbox
- 感谢你的欣赏!
赞赏名单
因为你的支持,我感受到写文章的价值。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自HDi - 随便记