辛宝Otto

辛宝Otto 的玄酒清谈

北漂前端程序员儿 / 探索新事物 / Web Worker 主播之一/内向话痨
xiaoyuzhou
email

速通-Laf 云开发平台及其实现原理

image

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 基本能力,个人是用户了,所以很多知识点理解起来比较容易。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。