热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FONK:一个面向K8S的无服务器LAMP技术栈

正文

关于无服务器,有一种说法我听过很多次:“无服务器是一种自找麻烦的解决方案”。

当一项新技术破坏了人们习惯的工作流程时,就会出现类似的防御性声明。这种声明也是在告诉无服务器社区里的所有人,无服务器的学习曲线有多陡峭。

如果人们理解了无服务器,他们就不会说出这么负面的话。因此,我提出了一个问题:如何驯服无服务器的学习曲线?

我给出的答案是一个Web应用程序。让我来解释一下。

Guestbook:一个无服务器Web应用示例

去年春天,我第四次听到开头那句话。所以我问自己,“你能用无服务器构建的最简单的东西是什么?人们可以把它与自己已经知道的东西联系起来。”

我认为,我可以向人们展示他们可以如何做他们现在正在做的事情,只是以更简单的方式,以此来展示无服务器的价值。

因此,我构建了一个Web应用示例,称之为Guestbook。

使用Web应用降低无服务器学习曲线

就是每个人都知道的LAMP技术栈。

FONK:一个面向K8S的无服务器LAMP技术栈

它很简单,并且提供了可选的组件,这可以说明它为什么在过去20多年里如此流行。我们甚至在Kubernetes(K8S)的学习曲线中看到了它的影响:

FONK:一个面向K8S的无服务器LAMP技术栈

Guestbook是大多数人在第一次学习Kubernetes时最先部署的应用程序之一,尽管它使用NoSQL服务器代替了MySQL,但仍然是基本的LAMP结构。

对于无服务器而言这是指什么?

有鉴于此,降低无服务器学习曲线的一种方法是向人们展示如何用更少的代码和配置构建同样复杂的Web应用程序。

使用AWS构建,则该Web应用程序如下所示:

FONK:一个面向K8S的无服务器LAMP技术栈

虽然这只需要大约一半的代码和配置,但它也把你锁定在AWS中。

如果你可以创建一个类似LAMP的设计模式,但使用K8S上的无服务器概念来确保可移植性,那会怎么样?

FONK:一个面向K8S的无服务器LAMP技术栈

FONK:一个面向K8S的无服务器LAMP技术栈

AWS体系结构的组件分别是函数即服务(FaaS)运行时、对象存储和NoSQL服务器。

如果你在任何超过3000 star的GitHub项目或其他流行开源组件上使用了五个FaaS运行时之一,那么整个技术栈就可以像下面这样安装在K8S上:

FONK:一个面向K8S的无服务器LAMP技术栈

把它们都放在一起,就可以得到一个简洁的无服务器设计模式缩写:

FONK:一个面向K8S的无服务器LAMP技术栈

(我把这个动物图标归功于我的女儿,她说:“FONK听起来就像是鹅说的话。”)

基于FONK实现Guestbook

今年9月,我和一些朋友试着推出了fonk-apps.io,这是一个开源项目,目标是降低人们的无服务器学习曲线。它提供了各种语言的简单Web应用程序示例。

为了让人们更容易地从本地K8S过渡,这些Web应用程序中的第一个示例就是Guestbook。以下是我们的早期进展:

FONK:一个面向K8S的无服务器LAMP技术栈

只有Create和List函数的Guestbook是自然而然的第一选择,不过,我们的计划是让这个应用程序变得更加复杂。我们希望添加待办(完整CRUDL操作)、博客(经过身份验证的CUD、公共RL)和论坛(经过身份验证的CRUDL)。

更长远来看,内置一些CI/CD功能,包括列测试自动化或跨行性能基准测试,这会很酷。

FaaS运行时比较

在构建第一组示例的过程中,我们学到了很多比较FaaS运行时的知识。

从开发人员体验的角度来看,以下是一些早期研究结果:

FONK:一个面向K8S的无服务器LAMP技术栈

基于K8S运行时上的某些FaaS开发,其体验和本地K8S开发类似;它公开了函数将在其上运行的镜像的一些内部结构。其他的则更接近于屏蔽了镜像细节的AWS Lambda模型。

在这个领域,谷歌的Knative是那只重达800磅的大猩猩,它在GitHub上还没有达到3000星的门槛,过了这个门槛,我们就提供Guestbook示例。但是,我们正密切关注它的进展,因为它很可能会实现这一目标。

来,一起玩!

一旦开始实施这个想法,我们认为最好有一个以它为中心的社区。所以,我们试着让整件事成为成为一件有吸引力的事。

虽然并不是所有基于K8S运行时的FaaS都支持无服务器框架,但是Kubeless和OpenWhisk做得非常好。一个简单的入门方法是从头到尾做一个完整的示例:

  • FONK Guestbook/OpenWhisk/Node.js
  • FONK Guestbook/Kubeless/Node.js

我们很感激您的GitHub之星,但是,我们更希望看到一个新的FaaS运行时/语言组合PR。

你可以检出我们在GitHub上的FONK项目,自己尝试一些例子。或者,你可以提出任何FaaS/语言组合请求,我们会构建所有可能的Guestbook!

查看英文原文:https://serverless.com/blog/introducing-fonk/


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
author-avatar
牧羊人2602903895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有