版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./功能即服务〔FaaS平台介绍功能即服务是在容器之上构建无服务器功能的框架。在去年10月份开始这个项目,用来理念论证,理解是否可以在DockerSwarm上运行Alexaskills或者Lambda功能。在一开始的一些成功之后。本文直接介绍无服务器计算,然后介绍在之前500次commit里FaaS的3大特性,最后展望未来。从第一次commit开始,FaaS持续推进,在GitHub上获得了2500多个star,同时还出现了一个开发者和黑客的小型社区〔/alexellis/faas/blob/master/community.md,我们会在聚会中发表演讲,编写自己的很cool的功能,并且贡献代码。我自己的一大收获是在4月份Austin举办的Dockercon上获得了Moby‘sCoolHackskeynote分会场的一个席位。大家想要将Docker设计用来完成的事情的边界进一步扩展。无服务器是什么?架构还在演进"无服务器"这个词并不是很恰当——我们实际讨论的是事件驱动系统的一种全新架构模式。基于此,无服务器功能常常被用来作为服务间的连接,或者用在事件驱动的架构里。在过去,我们称之为服务总线。无服务器功能无服务器是一段小型的,无关联的,并且可重用的代码:它是短暂的它不是daemon〔长期运行的它不发布TCP服务它没有状态利用已有服务或者第三方资源几秒内完成执行〔基于AWS的Lambda我们还需要区分开无服务器产品和IaaS供应商以及开源软件项目。一方面,IaaS供应商提供无服务器产品,比如Lambda,GoogleCloudFunctions以及AzureFunctions。另一方面,有FaaS这样的框架,让编排平台,比如DockerSwarm或者Kubernetes做重量的事情。IaaS供应商提供的无服务器产品是完全受控的,因此它提供了高度的便捷性和基于秒/分钟的计费方案。另一面是,用户需要跟踪供应商的发布和支持周期。开源的FaaS想要提供一些多样性以供大家选择。FaaS的差异化在哪里?FaaS基于业界标准的CloudNative技术构建:FaaS项目的差异化在于,任意流程都可以通过watchdog〔/alexellis/faas/tree/master/watchdog组件和Docker容器成为无服务器的功能。这意味着如下三点:用户可以运行任意语言编写的代码可以运行任意时间可以在任何地方运行转向无服务器化并不意味着用另一种编程语言重写代码。只需继续使用业务和团队需要的东西即可。示例:比如,cat或者sha512sum可以作为一种不需要变更的功能,通过stdin/stdout通信。Windows功能也可以通过DockerCE支持。这是FaaS和其他开源无服务器框架的主要区别,它们依赖于每种所支持的语言的特定运行时。下面介绍DockerCon之后的三大主要特性,包括CLI〔/alexellis/faas-cli和功能模板,Kubernetes支持以及异步处理。1.全新的CLI易于部署我给FaaS项目添加了CLI,让部署功能更为简易和脚本化。在这之前,用户可以使用APIGateway的UI或者curl。CLI让大家可以在YAML文件里定义功能,随后部署到APIGateway上。FinnianAnderson在PracticalDev/dev.to上〔/RNejhxu写了一篇介绍FaaSCLI的很好的文章。Utility脚本和Brew有安装脚本可以用,JohnMcCabe在brew上维护了项目的recipe。$brewinstallfaas-cli或者$curl-sL/|sudosh模板CLI的模板是你唯一需要用所选的编程语言编写handler的地方,CLI会使用模板将其打包成Docker容器——FaaS会处理所需的步骤。提供了Python和Node.js的模板,但是你可以轻松创建自己的。CLI支持三种操作:-actionbuild:从模板在本地创建Docker镜像-actionpush:将模板推送到指定的registry或者Hub上-actiondeploy:部署FaaS功能。如果有一个单节点的集群,那么不需要推送镜像就可以部署。YAML格式的CLI配置配置示例:provider:name:faasgateway:http://localhost:8080functions:url_ping:lang:pythonhandler:./sample/url_pingimage:alexellis2/faas-urlpingPython功能的最简洁的handler:defhandle<req>:print<req>通过HTTPpingsURL获得返回代码的示例:importrequestsdefprint_url<url>:try:r=requests.get<url,timeout=1>print<url+"=>"+str<r.status_code>>except:print<"TimedouttryingtoreachURL.">defhandle<req>:print_url<req>如果需要添加额外的pip模块,那么除了提供handler.py文件之外还需要提供requirements.txt文件。$faas-cli-actionbuild-f./sample.yml之后可以找到一个称为alexellis2/faas-urlping的Docker镜像,可以使用-actionpush将其推送到DockerHub上,使用-actiondeploy将其部署。2.Kubernetes支持作为一名DockerCaptain,我主要关注与学习和宣传DockerSwarm,但是我需要持续关注Kubernetes。我从在Linux和Mac上搭建Kubernetes开始,并且写了三篇介绍性文章〔,在社区也造成了一定的影响。架构Kubernetes的支持当我理解了如何将DockerSwarm的理念映射到Kubernetes之后,我就在几天之内实现了技术原型。我选择了创建一个新的微服务daemon和Kubernetes交互,而不是给主要的FaaS代码及引入额外的依赖条件。FaaS通过标准的RESTful接口将调用路由到新的daemon上,完成各种操作,比如:Deploy,List,Delete,Invoke和Scale。这样的方案意味着UI,CLI和自动扩展都不需要改动就可以使用。新的微服务在一个新的GitHubrepository,名为FaaS-netes〔/alexellis/faas-netes的项目里维护。你可以在60秒内在你的集群里使用起来。Kubernetes支持的演示在这个演示里,我将FaaS部署到一个空集群里,然后介绍如何使用UI,Prometheus〔https://prometheus.io/并且触发自动扩展。但是等一下……其他三种框架在Kubernetes上可以用么?Kubernetes的无服务器框架大概分为两大类——一种对于每种所支持的编程语言都需要依赖于特定的运行时,一种像FaaS一样,可以让任意容器成为功能。FaaS绑定到DockerSwarm和Kubernetes的原生API上,意味着它使用你已经使用的第一级对象来管理Deployment和Service。也就是说,这里没什么代码去理解你的新应用程序的逻辑。选择框架时的一个考虑是是否想要贡献特性或者fix。比如,OpenWhisk,是用Scala编写的,大部分其他框架使用Golang写的。Funktion〔/funktionio/funktionIronFunctions〔/iron-io/functionsOpenWhisk〔/apache/incubator-openwhiskKubeless〔/kubeless/kubelessFission〔/fission/fissionFaaS-netes〔/alexellis/faas-netes
3.异步处理无服务器功能的一大特征是小而快,通常在几秒之内就异步完成了。想要异步处理功能的几点理由是:它是一个事件并且调用者不需要结果它需要很长时间执行或者初始化——比如,TensorFlow/机器学习在批量job里消费大量请求想要限制速度我通过分布式队列做了个异步处理的原型。实现使用的是NATSStrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026黑龙江省清河林业局有限公司公开招聘7人考试备考试题及答案解析
- 2026年长子县教师招聘笔试备考题库及答案解析
- 2026年9月吉木萨尔县公安局面向社会公开招聘警务辅助人员26人考试参考题库及答案解析
- 2026年南皮县教师招聘笔试模拟试题及答案解析
- 2026江铃新能源汽车有限公司招聘2人笔试模拟试题及答案解析
- 2026年稻城县教师招聘笔试备考题库及答案解析
- 2026河北石家庄井陉县从服务期满且考核合格“三支一扶”志愿者中专项招聘事业单位工作人员1名考试备考题库及答案解析
- 2026年绥中县教师招聘笔试备考题库及答案解析
- 2026连南瑶族自治县三江镇人民政府招聘专职网格管理员、网格员4人考试备考试题及答案解析
- 2026年内乡县教师招聘笔试备考题库及答案解析
- T/TMAC 248-2025连续石墨化炉能源消耗限额
- 2026年兰州大学物理试题及答案
- 2026畜禽种业自主创新与核心种群建设战略研究报告
- IMDG Code 42-24 修正案 锂电池海运包装标记与标签规范 中文版(P903 包装标识更新全解)
- 校园统一身份认证平台建设方案
- 初中数学七年级上册第一章《数学与我们同行》核心素养知识清单
- 供应链韧性的理论内涵与战略框架构建
- 2026年无人机应用技术考试测试题库附参考答案详解(完整版)
- 2026高考英语考前高频词汇+作文万能模板
- 2024人教版八年级英语下册(全册)教案
- GB/T 8325-2026塑料聚合物分散体和橡胶胶乳pH值的测定
评论
0/150
提交评论