2022 年 4 月 27 日,青云科技容器团队开源的函数即服务(FaaS: Function-as-a-Service)项目 OpenFunction 顺利通过了云原生计算基金会 CNCF 技术监督委员会(TOC)的投票,正式进入 CNCF 沙箱(Sandbox)托管。这就意味着 OpenFunction 得到了云原生开源社区的认可,同时通过进入 Sandbox 可以进一步保障项目的中立性,开发者以及合作伙伴等都可以参与项目建设,共同打造新一代开源函数计算平台。

这已经是青云科技容器团队发起的第三个进入 CNCF 的项目了。早在 2021 年 7 月份青云科技就将 Fluent Operator 项目捐给 Fluent 社区成为 CNCF 子项目,大大降低了 Fluent Bit 和 Fluentd 用户的使用门槛;同年 11 月份,负载均衡器插件 OpenELB 加入 CNCF Sandbox,帮助私有化环境更便捷地对外暴露服务。

目前可以在 CNCF Landscape 的 Serverless 版块中找到 OpenFunction 项目。

项目介绍

OpenFunction 是一个现代化的函数即服务(FaaS: Function-as-a-Service)项目,它能够帮助开发者专注于他们的业务逻辑,而不必担心底层运行环境和基础设施。用户只需提交一段代码,就可以生成事件驱动的、动态伸缩的 Serverless 工作负载。

OpenFunction 引入了很多非常优秀的开源技术栈,包括 Knative、Tekton、Shipwright、Dapr、KEDA 等,这些技术栈为打造新一代开源函数计算平台提供了无限可能:

  • Shipwright 可以在函数构建的过程中让用户自由选择和切换镜像构建的工具,并对其进行抽象,提供了统一的 API;
  • Knative 提供了优秀的同步函数运行时,具有强大的自动伸缩能力;
  • KEDA 可以基于更多类型的指标来自动伸缩,更加灵活;
  • Dapr 可以将不同应用的通用能力进行抽象,减轻开发分布式应用的工作量。

从架构图上可以看出,OpenFunction 包含了 4 个核心组件:

  • Function : 用户和函数打交道(函数的增删改查)的唯一入口,包含了函数的 Build 和 Serving 阶段的全部定义;
  • Build : 用户创建 Function 后,Function 生成相应的 Builder,用户无须手动创建。 Builder 通过 Shipwright 选择不同的镜像构建工具 Cloud Native Buildpacks, buildah, BuildKit, Kaniko, 并在 Tekton 的控制下将应用构建为容器镜像;
  • Serving : 用户创建 Function 后,Function 生成相应的 Serving,用户无须手动创建。Serving CRD 创建后,函数将被部署到不同的运行时中,可以选择同步运行时或异步运行时。同步运行时可以通过 Knative Serving 或者 KEDA-HTTP (开发中)来支持,异步运行时通过 Dapr+KEDA 来支持。
  • Events : 对于事件驱动型函数来说,需要提供事件管理的能力。由于 Knative Eventing 过于复杂,所以我们研发了一个新的事件管理框架叫 OpenFunction Events

目前 OpenFunction 已经正式发布了 0.6.0 版本,与上一个版本相比,新增了许多值得关注的功能,包括函数插件、函数的分布式跟踪、控制自动缩放、HTTP 函数触发异步函数等。同时,异步运行时定义也被重构了。核心 API 也已经从 v1alpha1 升级到 v1beta1。值得一提的是,OpenFunction 团队还与 Apache SkyWalking 社区合作,增加了 FaaS 平台对函数可观测性的支持,现在大家可以直接在 SkyWalking UI 上通过图表来可视化 Serverless 函数的依赖关系并追踪函数的调用。

详情可参考这篇文章:OpenFunction 0.6.0 发布: FaaS 可观测性、HTTP 同步函数能力增强及更多特性

关于 OpenFunction 的实际使用案例可以参考下面两篇文章:

社区生态

OpenFunction 自 2020 年 12 月开源并提交了第一个 commit,到 2021 年 5 月发布第一个 Release,仅一年多的时间就发布了 6 个大版本,吸引了 24 个 Contributors 和 480+ GitHub Stars,并且已经被驭势科技中国联通全象低代码平台等多个企业、组织和平台采用。截止目前参与贡献的企业和组织有:KubeSphere驭势科技Apache SkyWalkingSAP中国联通全象云,在此感谢每一位参与贡献的社区小伙伴对 OpenFunction 的支持和帮助,同时也欢迎更多的开发者和用户参与体验和贡献 OpenFunction。

除此之外,OpenFunction 团队还受邀参加了一些上游社区的例会并向大家介绍过 OpenFunction 项目及其典型用例,包括 CNCF 的 TAG-runtime 会议Dapr 社区会议。尤其 Dapr 社区对 OpenFunction 青睐有加,Dapr 联合创始人非常看好项目的发展前景,感兴趣的同学可以观看视频进一步了解。OpenFunction 社区也正在和 Dapr 社区及 Quarkus 社区合作以实现将 Java 代码编译为 Native 程序在 Quarkus 环境中运行,可大幅降低 Java 程序的资源占用并极大地提升性能。接下来,OpenFunction 项目发起人霍秉杰还将在 5 月 10 日举办的 Apache SkyWalking 峰会介绍其与 Apache SkyWalking 在函数可观测性领域的联合方案。

未来规划

得益于 CNCF 为项目提供了开源和中立的背书,OpenFunction 也将真正变成一个由 100% 社区驱动的开源项目。接下来,OpenFunction 将开发与实现如下功能,欢迎给社区提交需求与反馈:

  • 支持更多语言的异步函数框架包括 Nodejs, Python, Java 和 .NET;
  • 支持将 Java 函数编译成 Native 程序运行在 Quarkus 环境中;
  • 使用 KEDA 的 http-add-on 作为 Knative Serving 之外同步函数运行时的又一个选择;
  • 支持 OpenTelemetry 生态作为 SkyWalking 之外的另一个函数 Tracing 的方案;
  • 增加 OpenFunction 控制台;
  • 实现 Serverless 工作流;
  • 对在边缘运行的函数有更好的支持;
  • 预研基于 Pool 的冷启动优化方案;
  • 使用 WebAssembly 作为更加轻量的运行时,结合 Rust 函数来加速冷启动速度。

持续开源开放

未来 KubeSphere 团队将继续保持开源、开放的理念,持续作为 OpenFunction 项目的参与方之一,推动国内和国际开源组织的生态建设,将 OpenFunction 社区培育成一个开放中立的开源社区与生态,与更多的函数计算平台及上下游生态伙伴进行深度合作,欢迎大家关注、使用 OpenFunction 以及参与社区贡献。


最后附上 OpenFunction 项目重磅参与者与关注者对 OpenFunction 的寄语:

吴晟

Apache SkyWalking 创始人

我很高兴和兴奋看到 OpenFunction 顺利加入 CNCF,作为一个仅一年多的年轻项目,这是一个项目从原型走向稳定,多元和成熟过程中的重要里程碑。作为 Apache SkyWalking 的一员,我有幸参加了 SkyWalking v9 迭代过程中与 OpenFunction 的集成。开放,平等,中立的开源合作模式,让人印象深刻。我们双方会在 Serverless 的可观测性上,进行紧密深入的合作,包括更多语言集成,日志的集成,平台的性能集成等等。祝贺 OpenFunction 成功加入沙箱孵化,期待项目更上一层楼。Enjoy your CNCF journey.

张海立

驭势科技云平台研发总监

驭势科技 UISEE 是中国领先的自动驾驶公司,OpenFunction 帮助我们找到了一种基于 FaaS / Serverless 的业务服务快速定制方案,我们已将它用于解决跨公私有云的、针对不同存储中间件的数据处理和落盘问题(参见 此案例)。期待有更多社区伙伴参与到 OpenFunction 的功能建设中,一起探索更多应用场景,提升研发效能!

张善友

深圳市友浩达科技有限公司CTO

OpenFunction 加入 CNCF 对我来说是一个额外的惊喜。我是最近一个月才成为 OpenFunction 的贡献者,我在最近 2 年实践 Dapr 的项目实战经验,让我深信基于 Dapr 的 OpenFunction 是一个非常有前景的 FaaS 项目。我现在负责建设 OpenFunction 的 .NET 支持框架开发工作,期待有更多的社区伙伴参与到 OpenFunction 的功能建设。

蔡礼泽

SAP, OpenFunction 早期用户

我从去年关注到OpenFunction,当时被它的技术选型所吸引,非常的前沿,让我想到了许多的可能性。之后一直关注着项目的技术走向还有社区发展,还有参与贡献。一个优秀的项目离不开社区的支持,OpenFunction的维护者非常专业与热情。优秀的技术设计加上专业的社区,我相信OpenFunction会在云原生领域大放异彩。

本文由博客一文多发平台 OpenWrite 发布!

OpenFunction 成为 CNCF 沙箱项目,使 Serverless 函数与应用运行更简单的更多相关文章

  1. Aeraki Mesh正式成为CNCF沙箱项目,腾讯云携伙伴加速服务网格成熟商用

    6月,由腾讯云主导,联合百度.灵雀云.腾讯音乐.滴滴.政采云等多家合作伙伴发起的服务网格开源项目 Aeraki Mesh 通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会评定,正式成 ...

  2. 腾讯首个CNCF沙箱开源项目

    作者 SuperEdge开发者.腾讯云容器产品中心边缘计算团队.腾讯开源生态管理协会 SuperEdge 进入 CNCF 沙箱 2021 年 9 月 14 日,云原生分布式边缘容器系统 SuperEd ...

  3. 重磅!业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目

    摘要:4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目. 4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个 ...

  4. 灵雀云Kube-OVN进入CNCF沙箱,成为CNCF首个容器网络项目

    昨日,云原生计算基金会 (CNCF) 宣布由灵雀云开源的容器网络项目Kube-OVN 正式进入 CNCF 沙箱(Sandbox)托管.这是全球范围内首个被CNCF纳入托管的开源CNI网络项目,也是国内 ...

  5. Falco 进入 CNCF Incubator 项目 | 云原生生态周报 Vol. 35

    作者 | 王思宇.陈洁.敖小剑 业界要闻 Falco 进入 CNCF Incubator 项目 原于 2018 年 8 月进入 sandbox,旨在 Kubernetes 运行时环境下支持配置规则来加 ...

  6. 如何选择开源许可证&如何修改项目使其符合某种开源许可证

    作者:zyl910 很多文章介绍了详细的解说了各种开源许可证及它们的区别.但是,具体该选择哪一种许可证?如何修改项目使其符合某种开源许可证?就很少见到指导了.于是本文探讨这两个问题. 一.如何选择开源 ...

  7. rxjs入门3之项目中ajax函数封装

    项目中ajax函数封装 ⽹页应⽤主要数据源有两个:⼀个是⽹页中的DOM事件,另⼀个就是通过AJAX获得的服务器资源.我们已经知道fromEvent这个操作符可以根据DOM事件产⽣Observable对 ...

  8. 从零入门 Serverless | 函数计算的开发与配置

    导读:在本篇文章中,"基本概念"部分主要对函数计算最核心的概念进行详细介绍,包括服务.函数.触发器.版本.别名以及相关的配置:"开发流程"部分介绍了基于函数计算 ...

  9. DevStream 成为 CNCF Sandbox 项目啦!- 锣鼓喧天、鞭炮齐鸣、红旗招展、忘词了。

    开局两张图,内容全靠"编" 来,有图有真相! DevStream ️ CNCF DevStream joins CNCF Sandbox CNCF Cloud Native Int ...

  10. 发评测赢好礼 | Serverless 函数计算征集令

    随着云计算发展,云原生热度攀升,Serverless 架构崭露头角且发展势头迅猛.不仅被更多开发者所关注,市场占有率也逐年提高.阿里云函数计算(Function Compute)是一个事件驱动的全托管 ...

随机推荐

  1. 树莓派3b+ 安装Ubuntu mate18.04系统 配置SSH 、 远程桌面realvnc

    Ubuntu mate  for  树莓派3b+ 系统下载: 下载地址: https://ubuntu-mate.org/download/ 这里用32位系统:(64位也可以的,虽然还是实验阶段的,不 ...

  2. 【转载】 vscode如何在最新版本中配置c/c++语言环境中的launch.json和tasks.json?

    作者:来知晓链接:https://www.zhihu.com/question/336266287/answer/2144611720来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  3. 多线程之interrupt与优雅停止一个线程

    1.背景 在实际开发中,我们可能会遇到终止某个线程的场景, 比如不断扫描数据库的发货订单时,这时候需停止扫描, 当然我们不能把程序关了,我们只希望停止扫描数据库这一个线程, 那么应该怎么办了? 这就可 ...

  4. 3.2.0 版本预告!远程日志解决 Worker 故障获取不到日志的问题

    Apache DolphinScheduler 3.2.0 版本已经呼之欲出,8 月 中下旬,这个大版本就要和用户见面了.为了让大家提前了解到此版本更新的主要内容,我们已经制作了几期视频和内容做了大致 ...

  5. Linux input 子系统详解

    1. 模块概述 1.1.相关资料和代码研究 drivers/input/ include/uapi/linux/input-event-codes.h 2. 模块功能 linux核心的输入框架 3. ...

  6. JAVA——instanceof运算符(问题待处理)

    2024/07/12 1.问题 2.问题拆解 3.解决 1.问题 今天学了一个运算符--instanceof,概念很抽象,感觉暂时理解不了,什么实例对象.类.子类,看得迷迷糊糊的,先记录下来,有空做一 ...

  7. AI的那些名词

    AI 是什么? Artificial Intelligence,即人工智能,1956年于Dartmouth学会上提出,一种旨在以类似人类反应的方式对刺激做出反应并从中学习的技术,其理解和判断水平通常只 ...

  8. Devexpress PdfViewer汉化及隐藏右键菜单

    先看效果图 1.效果图 隐藏了打印与文档属性功能 2.原图 1.关键事件 PopupMenuShowing public From() { InitializeComponent(); //弹出菜单加 ...

  9. 【Git】之分支合并命令

    一.Git分支管理 1.查看Git分支 git branch 按Q键返回. 2.创建分支以及删除分支 git branch newtest git branch -d newtest 3.切换分支 g ...

  10. 如何排查线上w3wp.exe CPU高的问题,使用到了WinDbg、Visual studio来分析IIS进程池的.dmp文件

    最近发现服务器上某个web站点老是CPU很高,该站点部署在IIS上,我IIS上有多个站点,每个站点一个进程池,每个进程池取名都是根据站点来取的,所以很容易看出哪个站点吃掉的CPU,该站点已运行十几年, ...