辛宝的玄酒清谈!
872 words
4 minutes
速通-Laf 云开发平台及其实现原理
2023-11-08

Laf 云开发平台及其实现原理》原文

平台工程线下 Meetup 北京站 2023-09-13

Laf 是我非常喜欢的云平台,这里有一个他们的线下分享,这里简单做个介绍。

产品介绍#

忽略

产品演示#

产品特点总结#

开箱即用的应用资源,包括提供计算资源、数据库资源、日志网络存储等应用所需要的一切资源,不需要准备任何环境,包括电脑环境和物理环境。

目标是尽可能缩短开发流程,降低开发门槛。如果一个应用部署一个环境需要一天,我们可能一天已经做一个 demo 出来,已经上线发给用户或群友测试了。

开源开放的态度,Laf 所有的源代码是开源的,我们用的组件也都是开源的,不包含任何厂商绑定,可以跑在任何云上,没有后顾之忧。

技术实现介绍#

技术选型#

  • node 编程语言
  • 存储选择 minIO,开源和横向拓展能力
  • 数据库选择 mongo
  • 网关 apisix,无缝修改动态路由、丰富的插件、开源开放

开发者使用流程#

  • ide 或者 cli 开发
  • 创建应用,连接到 laf server
  • 通过 k8s 创建一个应用实例,放 node runtime
  • 分配数据库、存储
  • 应用创建、启动

用户流量流程#

  • 调用云函数、调用接口
  • 流量到网关,网关找到 appID 找到 runtime
  • 确定函数名称,执行,响应返回

serverless 实现方案比较

  • 一种方案是每次请求启动一个 pod,进行处理,每次都是全新的环境,扩缩容比较简单,冷启动比较麻烦,而且不支持长链接
  • laf 选择的是长链接内存方案,没有冷启动,容器始终运行,天然支持长链接,扩缩容通过 k8s 的 hpa 实现,扩缩容的技术实现会复杂

还有一些细节,没做过理解不了,就不提了。

开发者角度#

  • 编写云函数,会编译成 js,存储数据库、发布到 runtime
  • 调用 node vm 模块,处理成 script 对象,缓存到内存,调用云函数从内存里获取 vm 的 script 对象并执行
  • 没有编译的过程
  • http 调用时候从内存里获取编译后的结果,处理上下文,并执行代码
  • 云函数直接调用,在 require 时候会识别是否云函数,处理为 node_module

对象存储部分#

通过 MinIO 存储 bucket,配合访问策略,实现多租户隔离

数据库部分#

mongo 本身有用户管理机制,创建 user 权限隔离。

如果流量突发,会不会影响平台?对 mongodb 的流量拆包,判断请求频率限制,可以丢弃,也可以数据库计量计费。

网关部分#

利用 apifix,处理动态路由。

云函数、应用、存储 bucket 都通过他分配二级域名。

laf pilot#

主要是通过 ai 分析问题,理解文档知识点,从而写出代码。

  • 业务代码实现
  • 文档使用问题
  • 其他问题

其他为实现能力展望#

介绍 sealos 实现云资源调用。

其他忽略。

🏠 官网链接 https://laf.run

🐙GitHub 地址 https://github.com/labring/laf

📑 访问 Laf 文档 https://doc.laf.run/guide/

🏘️ 逛逛论坛 https://forum.laf.run/

个人感受#

比较系统介绍了 laf 基本能力,个人是用户了,所以很多知识点理解起来比较容易。

速通-Laf 云开发平台及其实现原理
https://ijust.cc/posts/quick-review-laf-cloud-Implementation-Principles/
Author
辛宝 Otto
Published at
2023-11-08