当前位置: 首页 > 科技观察

Nuclio-TheNewServerlessSuperhero_0

时间:2023-03-12 02:26:13 科技观察

【.com速译】简介:现在serverless世界出现了一个新的超级英雄——nuclio。本文介绍了它的开源功能,并向您展示了它如何帮助开发者使用各种高性能的Serverless功能。或许我们已经习惯了这样一个所谓的“平衡”:如果一个东西像Serverless一样抽象易用,那么它很可能会很慢且不灵活。否则,我们不得不放弃高性能和易用性来满足一些独特的应用需求。但是今天,nuclio的无服务器功能使我们能够在不破坏现有架构的情况下快速创建和运行代码。Nuclio不仅在运行速度上比裸机代码更快,而且应用范围更广。不仅更容易调试,更重要的是它可以在任何地方运行。前段时间,iguazio(译者注:这是一家数据分析服务商,专注于敏捷云和实时企业数据的分析)需要在其实时数据平台上使用一些方法来增加自身的弹性和临时性数据处理能力,所以我们为它开发了一个高速的FaaS层。我们基于上一版的经验构建了一个独特的开源无服务器平台,我们称之为nuclio。其特点如下:可以提供实时性能和最大并发性Enableseasydebugging,regressiontesting,andmulti-versionCI/CD(译者注:ContinuousIntegrationandContinuousDelivery)pipeline支持植入式数据和Eventsources各种通用API可在低功耗设备、笔记本电脑、私有云和公有云之间移植(是谷歌2009年发布的第二个开源编程语言)。处理器通过一个抽象接口工作,它是功能的“操作系统”,提供对事件、数据、日志等的访问。相同的功能代码可以由多种植入式事件源(目前支持HTTP、Kinesis、Kafka、RabbitMQ、MQTT、NATS、iguazio的V3IO和各种模拟器)。数据绑定接口将访问各种外部数据(例如对象、文件、数据库和各种数据流),并负责所有数据连接、安全性和缓存方面。我们可以编写一个函数来使用各种本地文件,或者通过HTTP访问远程数据,或者极其快速地横向扩展数据库和基于TCP的数据流,或者不修改代码实现RDMA(译者注:RemoteDirectMemoryAccess的缩写).nuclio处理器是实时的。对nuclio“操作系统(OS)”事件和数据的访问是通过并行触发、零拷贝、智能内存/线程重用和非阻塞IO实现的。编写自己的裸机函数可能比在nuclio处理器的“生态系统”中运行它要慢。单个nuclio函数处理器每秒可以运行400,000次函数调用(使用简单的GO函数),响应延迟仅为0.1毫秒。该指标比大多数无服务器/FaaS解决方案快100倍。基于GO的处理器通过低延迟共享内存与其他语言的执行进行通信,从而访问和了解上下文转换时的清理和各种进程的启动开销。Nuclio目前支持四种应用模式:同步、异步、流式和批处理/交互式作业。它在进程(经销商)之间动态分发事件、数据流和作业任务。这些使得无服务器适用于包括繁重的后端和各种分析任务的新工作负载。nuclio专注于可移植性和可重用性:在低功耗设备、Docker、Kubernetes和IDE中工作,使用nuclioSDK在部署时将事件/数据源映射到不同的函数或版本/标签日志和统计信息可以发送到多个目标发送到IDE屏幕的函数类型或图像存储在共享库中,并推送到多个集群/设备。nuclio的可移植性允许用户使用SDK或Docker来测试和调试各种功能。然后用户将它们发送并在不同的基于云的Kubernetes集群上运行,或者将它们推送到多个物联网设备端点。nuclio还简化了回归测试和诊断:函数从模拟事件中接收反馈并将其输出写入结构化日志文件,以便与预期结果进行比较。预计未来升级到内测版后,也能实现自动投放。Nuclio60秒快速入门如果你想部署一个完整的Kubernetes集群或一套服务,你不需要专门学习。您只需要使用一体化版本的Docker启动nuclio并对其进行测试。请按照以下Linux命令进入(假设已经安装了Docker):dockerrun-p8070:8070-v/var/run/docker.sock:/var/run/docker.socknuclio/playground然后就可以打开浏览器服务器了,输入地址HTTP://:8070,然后就可以看到nuclioplayground用户界面(UI)了。nuclio的workshop附带一些内置示例,解释如何通过内联注释或预定义事件编写函数、使用日志记录以及添加相关包套件。如果您想开始,您可以从下拉列表中选择一个示例,对其进行编辑和重命名,然后将其推送到部署。日志中会显示各种编译错误,以便您进一步修复和重新部署。完成此操作后,您可以通过使用invoke标记手动生成事件来测试函数。通过使用日志级别过滤器,您还可以修改日志记录的复杂性和问题调试的粒度。需要注意的是,在后台,nuclio会根据你的功能生成各种Docker容器或者Kubernetes相关的部署。您可以使用自己喜欢的IDE开发nuclio的各种功能,也可以导入或clone已有的nuclioSDK,也可以参考自己的README或一些例子。有关更多信息,请参阅nuclio在Github上的文档(https://github.com/nuclio/nuclio/blob/master/README.md)。在那里,我们重新审视了nuclio的架构,并提供了有关使用和CLI(译者注:命令行界面)的详细信息。当然你也可以从那里的nuclio社区获得帮助。目前nuclio还在开发阶段,支持Golang和Python语言,Java和Node.js版本也即将推出。请加入我们,为它加快新功能的开发,记得点赞哦。【原标题】nuclio:TheNewServerlessSuperhero,作者:YaronHaviv