Giter Site home page Giter Site logo

labring / laf Goto Github PK

View Code? Open in Web Editor NEW
6.8K 61.0 629.0 82.79 MB

Laf is a cloud development platform offering ready-to-use resources like cloud functions, databases, and storage. It empowers developers to quickly unleash their creativity.

Home Page: https://laf.dev

License: Apache License 2.0

TypeScript 88.93% JavaScript 6.01% Shell 0.97% Dockerfile 0.08% SCSS 0.52% Smarty 1.89% CSS 0.16% Mustache 1.42% HTML 0.01%
serverless firebase faas kubernetes minio mongodb supabase cloudbase typescript

laf's People

Contributors

0fatal avatar aflybird0 avatar bingtsingw avatar cuisongliu avatar dingzhenznen avatar fanux avatar genie88 avatar hankeke avatar huahuai23 avatar imyuanx avatar kkangert avatar kongwy229 avatar laf-yun avatar leezq avatar licsdasheng avatar lingdie avatar maslow avatar moonrailgun avatar newfish-cmyk avatar nightwhite avatar nmtuan avatar object-kaz avatar seewhy163 avatar skyoct avatar sulnong avatar walle233 avatar yangchuansheng avatar yinzhidong avatar yuedanlabs avatar zuofeng59556 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

laf's Issues

app-console: 云存储支持 service account 管理

laf 提供完整的 minio 能力,可将 laf oss bucket 用于其它 minio/s3 兼容的场景,
所以需要提供 app oss 的 Service Account 能力;

  • 一个应用仅支持生成一个 SA
  • SA 只在生成时显示一次,不可重复查看
  • 重新生成 SA 即为重置,会删除之前存在的 SA

只需要提供一个「获取SA」 按钮和接口即可,即重置。

同时增加显示 endpoint;

feat: 考虑多应用管理平台设计(laf-platform)

当前 laf 为单应用版,对于开发公司来说,每部署一个应用,还是需要手动在服务器上部署的。
多应用管理平台,即一次性部署了多应用管理平台统后,便可直接在 Web 页面快捷的创建和管理应用,无需登陆服务器。

主要有以下内容:

  • 基于 docker-compose 部署 laf-platform 单机版
  • 基于 k8s 部署 laf-platform 集群版
  • 管理应用:创建应用、分配数据库、分配 appid、分配域名 或 url、启停应用、监控应用资源负载等
  • 支持多租户;

Redesign the cloud function scheduler to support distributed multi-instances.

Is your feature request related to a problem? Please describe.
当前触发器调度是内存队列中维护的,则 app-server 有状态依赖,不可横向绅缩实现;只能跑单例;
主要分为定时器和事件触发器,一个触发事件应只由一个实例运行。

Describe the solution you'd like
有两种思路:

  1. 将触发器队列放到 mongodb 中维护
  2. 将触发器队列放到 redis 中维护
  3. 选择一个 app-server 实例运行触发器队列

Describe alternatives you've considered
暂不考虑 引入 redis,当前未有 cache 设计;
mongodb 队例,可处理定时触发器,但事件触发器是 app-server 代码层面调用的,不适宜用队列改造;
至于第3种方案,考虑伸缩环境为 kubernetes,要调研 kubernetes 绅缩策略是否支持 「标记指定实例」不释放。

大概率还是需要在应用层实现这个选举逻辑的。不能用 kubernetes 自带的伸缩能力。
那么 app-server 当前的调度器就无需 重新设计,只需要增加一个参数来控制 开关 调度器即可。
Additional context

文档目录建议

  • 概览
  • 部署 (推荐直接使用laf云,部署就是sealos run ....)
  • 快速开始
  • 使用教程
    • 云函数 (创建,编写,发布,删除)
    • 云数据库
    • 对象存储
    • 静态网页托管
  • 示例介绍
    • 三分钟使用开发并上线一个注册/登录应用
    • 开发一个短信通知服务
    • 开发一个微信群通知应用
    • 微信/支付宝支付功能
    • 与区块链对接功能
    • 实现一个拨测功能检测网站健康状态
    • 使用关系型数据库
    • 使用websocket长连接
    • 使用github action静态网页托管
  • 原理介绍
    • 架构介绍
  • API
  • 使用案例
    • 使用laf开发xxx小程序
    • 使用laf开发区块链Dapp

feat: 增加长连接支持;

  1. 设计长连接与云函数事件触发器联合的机制
  2. 客户端消息事件可触发云函数
  3. 云函数可推送消息到客户端
  4. 考虑客户端直接基于 MongoDb WatchStream 监听数据
  • client -> socket -> function trigger -> function
  • database change -> function trigger -> function -> socket -> client

or

  • client -> socket -> proxy with policy -> listening on database change
  • database change -> socket -> client

怎样用 nginx 反向代理?

我的轻量云用 nginx 反向代理了其它多个服务,现在我想把下面域名给 laf。

下面这样尝试无法访问

server {  
    listen 80;
    server_name laf.domain.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://local-dev.host:8020;
    }
}

server {  
    listen 80;
    server_name console.laf.domain.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://console.local-dev.host:8020;
    }
}

app-console: 新增静态网站托管功能

可将静态网站文件托管到 oss bucket 中:

  • 在「云存储」菜单组下,新增「网站托管」菜单项
  • 提供网站托管配置的接口
  • 一个 bucket 托管一个网站
  • 支持绑定自定义域名,需先将自定义域名 cname 到 bucket 的二级域名,才可添加绑定

system_server can't open 'start.sh'

按照 readme 启动服务,结果是 deploy-scripts_system_server_1 一直 Restarting

查看日志如下

deploy-scripts_system_server_1 exited with code 2


system_server_1    | 2022/01/11 13:05:44 Connected to tcp://mongo:27017
system_server_1    | sh: can't open 'start.sh': No such file or directory
system_server_1    | 2022/01/11 13:05:44 Command exited with error: exit status 2

打开 http://console.local-dev.host:8080 输入用户名密码后登入,结果是 502

system server memory overflow: memory & cpu goes too high after long time running

By viewing all references of getApplicationDbAccessor() api in system-server, found that all accessor connections created for app were forgot to close. It accumulates too much darling db connections during a few hours running time, cause that sys server & mongo server's cpu and memory go high.

How to fix:
Just close the connections which not needed.

docs: 提供开发者文档;

  • LaF 云开发介绍
  • 云函数指引
  • 云数据库指引
  • 云存储指引
  • 访问策略配置
  • 远程部署推送
  • 常见问题

refactor remote deploy module

远程部署

介绍

实现目标环境的推送和部署。当前主要推送部署的资源包括: 函数functions、 数据库访问策略 policies

远程部署整体设计思路

1.文档对象设计

  • 应用部署授权对象(replicate_auth)
    字段 类型 说明
    _id string 主键
    status string 状态
    source_appid string 源应用ID
    target_appid string 目标应用ID
    created_at Date 创建时间
    updated_at Date 更新时间
  • status取值说明
      1.pending 源环境向目标环境发起授权申请
      2.accepted 授权通过后的状态。当授权通过后则可以部署云函数和策略
      3.rejected 授权不通过后的状态
    

2.接口设计

  • 推送(PUT /replicas)
     1.请求参数
     {
       target_app_id: string,
       functions: {
         type: all | part,
         items: [
           id: string,
           name: string
         ]
       },
       policies: {
         type: all | part,
         items: [
           id: string,
           name: string
         ]
       }
     }
     2.响应
     {
      "code":0,
      "data":"pushed"
    }
    
  • 应用部署(POST /replicas/:replica_id)
    1.请求参数
    {  }
    2.响应
     {
      "code":0,
      "data":"deployed"
    }
    
  • 应用授权
    1. 应用授权资源列表查询(不需要分页)(包括我授权的和授权给我的)
    GET /replicate_auth
    2. 应用授权添加(目标环境发起授权申请) 
    PUT /replicate_auth
    3. 应用授权编辑(授权申请审批)
    POST /replicate_auth/:id
    4. 应用授权删除(删除目标应用和原应用的授权关系)源和目标都可以操作
    DELETE /replicate_auth/:id
    

发布策略会和其他开发者用户产生覆盖

1.进入云数据库 ->访问策略
image
2.发布自己配置的策略会覆盖
3.希望进入访问策略模块查询一下最新的策略,防止被相互覆盖
4.最好能在当前配置策略的时候即使的发布策略
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.