V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ivydom
V2EX  ›  程序员

写了个 FaaS 的规范,欢迎大家一起来补充和 PR

  •  1
     
  •   ivydom · 2018-09-10 12:32:37 +08:00 · 2229 次点击
    这是一个创建于 2026 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Fnlib - 一个简单的 FaaS 规范

    正文在 Github:fnlib,欢迎大家 PR。

    English | 中文翻译

    Function as a Service Lib

    Fnlib ( Function Lib )是一个简单的 FaaS 规范,旨在使个人开发者和企业可以轻松地将其作为参考以实现具体的 FaaS 功能。

    Fnlib 只定义了一个客户端使用协议,因此 Fnlib 不关心服务器的实现方式。但是为了给开发人员提供最佳体验,最好在接口级别遵循 fnlib 规范。

    The specification of fnlib includes API gateway, function context, function parameters, HTTP request, error handling, and GraphQL.

    Fnlib 的规范包括 API 网关,函数上下文,函数参数,HTTP 请求,错误处理和 GraphQL,目前 GraphQL 正在制定中。

    这是一个早期规范,未来可能会进行修改。

    什么是 FaaS ?

    功能即服务( FaaS )是指支持无服务器应用程序开发和管理的云服务。这意味着开发者只用操心业务逻辑,而无需管理自己的服务器。

    FaaS 于 2014 年由 hook.io 首次引入,但由亚马逊的 AWS Lambda 以及 Google Cloud Functions 和 M icrosoft Azure Functions 扩大规模。 除此之外,IBM 还有一个名为 OpenWhisk 的开源 FaaS 系统,而 Uber 拥有一个在私有云平台上运行的 FaaS。

    除了美国公司之外,中国的阿里云和腾讯云也推出了 FaaS 平台,此外还有两家创业公司从事相关工作( bomb 和知晓 云)。

    为什么要使用 Fnlib ?

    减少设计时间

    Fnlib 是一个最简单的规范,也是一种外包解决方案。由于你使用的是很多人使用过的规范,我们所预估的结果是:你不必关心项目文档和业务设计,因为这些已经设计好了。

    为人类编写的拥有良好设计的规范

    无服务器近年来发展迅速,每个制造商都有自己的标准。 为了与多个平台兼容,开发人员不可避免地要编写大量逻辑以实现兼容。 所有这些软件还衍生出一些开源软件,以便与一个接口的多个实现兼容,但这些开源软件目前彼此独立。

    Fnlib 希望提供一套标准规范,让开发人员可以像构建网页一样构建 FaaS 程序。

    正文在 Github:fnlib,欢迎大家 PR。

    9 条回复    2018-09-12 10:28:38 +08:00
    whileFalse
        1
    whileFalse  
       2018-09-10 12:59:43 +08:00
    前面的部分似乎是照着 aws lambda 写的;
    后面错误处理的部分,type 这个东西就能看出楼主对 json 不熟。
    whileFalse
        2
    whileFalse  
       2018-09-10 13:03:01 +08:00
    再以及,put 凭啥一定是 json 啊,我 put 一个文件呢?把它 base64 了放 json 里吗?
    whileFalse
        3
    whileFalse  
       2018-09-10 13:09:35 +08:00
    建议楼主多用用各个平台的甭管 lambda 还是 functions,至少做出一整个业务来,把整体都摸清楚了,自己用熟了再总结出一套方法来,而不是上来纯凭思考出个规范。
    ivydom
        4
    ivydom  
    OP
       2018-09-10 21:22:41 +08:00
    @whileFalse 欢迎 PR : )
    defunct9
        5
    defunct9  
       2018-09-11 06:59:57 +08:00 via iPhone
    顶下。这个东西天生是 nodejs 友好的,对 java go php 就较劲了,考虑到平台的特殊性,麻烦就大了
    whileFalse
        6
    whileFalse  
       2018-09-11 08:48:11 +08:00
    @defunct9 你大概是有什么误解……这货的问题是对于需要大量内存、长初始化时间的应用环境不友好。比如那些动不动需要 30s 初始化的 java 框架。对于其他的没啥要求。

    而且 lambda 的大优势是不同的接口可以用不同的语言、框架实现。之前微服务的优势不是每个服务可以用不同的语言写么,现在 faas 把这个优势扩大到接口级别了。
    defunct9
        7
    defunct9  
       2018-09-11 09:31:38 +08:00
    @whileFalse 刚用 aws 的 lambda 实现了个 php 的接口,自己编译出来的 php (注:是从纯正的 aws 系统里弄出来的)不可用,所以这么说,另外类似 java 数据连接池等东西也比较难实现。
    ShineSmile
        8
    ShineSmile  
       2018-09-11 13:11:50 +08:00
    linshuang
        9
    linshuang  
       2018-09-12 10:28:38 +08:00
    serverless 么,已星
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3245 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:00 · PVG 22:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.