【大咖分享】AI 大模型时代,架构师有哪些机遇和挑战? 了解详情
写点什么

Nimbus:一款用于构建 Java 无服务器应用程序的框架

  • 2019-04-28
  • 本文字数:1527 字

    阅读完需:约 5 分钟

Nimbus:一款用于构建Java无服务器应用程序的框架

Nimbus是一个旨在简化 FaaS 应用程序开发、测试和部署的 Java 框架。Nimbus 提供了一组与云平台无关的公共接口,用于与云提供商的无服务器功能发生交互。


框架作者 Thomas Allerton 在最近的一篇 Medium 博文中写道:“对于那些想要开发简单的应用程序的新手们来说,他们需要面临非常陡峭的学习曲线。他们可能只想要部署一些 HTTP 端点用来保存数据,但仍然要学习很多与云相关的概念”。Nimbus 提供了一些注解,支持一些常见的后端操作,这些操作可用于构建基于函数的应用程序,这样,开发者就不需要去学习云配置语法和 FaaS API 了。


Allerton 在博文中表示,Nimbus 的主要优势是不需要通过创建配置文件来声明云资源(如 AWS SAM 或者 Serverless 框架),这样开发人员“就不会因为忘记了某些参数而犯错”。另外,Nimbus 会对部署参数进行编译时检查,以便尽早检测出错误。


为了可以更好地体验如何使用这个框架,可以参看下面这个示例。它使用了 @HttpServerlessFunction 注解来创建一个简单的 REST API。


public class RestApi {
@HttpServerlessFunction(path="getOsTypes", method= HttpMethod.GET) public List<String> currentOsTypes() { return Arrays.asList(new String[] {"Windows", "Mac", "Linux"}); }}
复制代码


Nimbus 还支持其他的操作:


  • WebSocket Function:用于处理 websocket 请求;

  • Document Store Function:用于执行因文档存储变更而触发的代码;

  • Key Value Store Function:用于执行因键值存储变更而触发的代码;

  • Notification Function:用于执行由通知触发的代码;

  • Queue Function:用于执行因队列变化而触发的代码;

  • Basic Function:用于执行不需要触发器的代码;

  • File Storage Function:用于执行基于文件存储事件(文件创建和删除)的代码;

  • After Deployment Function:用于执行部署之后需要立即执行的操作。


除了支持各种不同的操作之外,Nimbus 还支持几种数据存储类型。下面的示例演示了如何使用 @DocumentStore 注解来创建一个文档存储。


@DocumentStorepublic class OsPreference {
@Key private String id;
@Attribute private String preference;
public OsPreference(String id, String preference) { this.id = id; this.preference = preference; } // ... // getters & setters // ...}
复制代码


在创建好文档存储后,可以使用 DocumentStoreClient 来持久化数据。


private DocumentStoreClient<OsPreference> client =   ClientBuilder.getDocumentStoreClient(OsPreference.class);
@HttpServerlessFunction(path="setOsPreference", method= HttpMethod.POST)@UsesDocumentStore(OsPreference.class)public String setOsPreference(OsPreference osPreference) { client.put(osPreference); return "Success";}
复制代码


其他支持的数据存储(和客户端)包括:用于存储关系型数据的关系型存储、用于存储键值数据的键值存储和用于存储对象的文件存储(支持静态网站托管和文件上传)。


测试也是构建无服务器应用程序的另一个常见难点。Nimbus 提供了单元测试和集成测试支持。在进行单元测试时,可以为上述列表中的任何一个操作创建本地部署,可以接受请求,并验证函数是否被正确调用,或者数据是否被正确保存。Nimbus 对集成测试的支持相对有限,只支持基于 HTTP 的测试。在进行集成测试时,会启动一个本地 Web 服务器,用于验证请求调用了正确的函数。


目前,Nimbus 初始版本只支持 AWS,对其他平台的支持已经被纳入计划中。


要想了解更多有关 Nimbus 的细节,可以阅读入门指南、访问参考文档,或者克隆它的 GitHub 仓库代码


查看英文原文Nimbus: New Framework for Building Java Serverless Applications


2019-04-28 06:365090
用户头像

发布了 731 篇内容, 共 420.5 次阅读, 收获喜欢 1985 次。

关注

评论

发布
暂无评论
发现更多内容

如果小程序越来越多,是不是会直接代替App?

Onegun

小程序 小程序容器

Hybrid Embedding:蚂蚁集团万亿参数稀疏 CTR 模型解决方案

AI Infra

AI 开发者 海量存储 AI大模型 降本增效

浅析华为云Astro的5大关键能力技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

软件测试丨Docker环境安装配置(Mac、Windows、Ubuntu)

测试人

Docker ubuntu 软件测试 Mac windows

软件测试/测试开发丨Mac Appium环境搭建

测试人

程序员 软件测试 Mac appium

极光笔记 | 解锁Web推送的潜力:提升网站收入

极光JIGUANG

网站 营销 消息推送 推送

TDengine 3.0 性能如何?教你一键复现 IoT 场景 TSBS 测试结果

爱倒腾的程序员

华为云5大开源项目发布与更新,助力开发者实现应用创新

华为云开发者联盟

开源 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

一文带你上手Servlet

EquatorCoco

Java 前端

什么是HTML5?HTML5的含义、元素和好处

互联网工科生

html html5

基于Go语言的滴滴DevOps重塑之路

滴滴技术

DevOps 滴滴技术 #go

初识滴滴交易策略之一:交易市场

滴滴技术

算法 滴滴技术

30多款大模型亮相,现阶段厂商比客户更需要大模型 | WAIC2023探展

TE产服

人工智能 大模型 WAIC

苹果APP安装包ipa如何安装在手机上

ios

入选中国数据智能领域 IDC 创新者,柏睿数据创新实力再获肯定

新消费日报

华为云Astro低代码平台关键能力技术浅析

华为云PaaS服务小智

云计算 软件开发 低代码 华为云

云原生技术分享篇丨浅析Istio流量管理

inBuilder低代码平台

云原生

PCB防静电设计的必要性

攻城狮华哥

工具 PCB PCB设计 电压 防静电

低代码在边缘计算工业软件中的应用

力软低代码开发平台

智能制造:低代码开发平台推动数智时代的巨变

EquatorCoco

人工智能 低代码 智能制造 数智化

和鲸数据科学专家平台正式成立,凝聚专家资源推进产业数字化升级

ModelWhale

人工智能 数据科学 专家平台 专家资源

盘古大模型加持,华为云开天aPaaS加速使能千行百业应用创新

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

2023年值得学习的六种小众编程语言

互联网工科生

编程语言 开发语言

重塑未来的1课:组装式交付新引擎——智能化低代码平台

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

专业开发者也需要低代码开发?

这我可不懂

开发者 低代码 低代码开发

晴数智慧张晴晴博士当选开放群岛开源社区「首席数据科学家」

Geek_2d6073

一次说清楚:CAE软件可以做什么?

智造软件

CAE 仿真软件 有限元仿真技术 有限元分析 CAE软件

华为云命令行工具服务KooCLI助力一键管理云资源

华为云PaaS服务小智

云计算 软件开发 华为云

2023世界人工智能大会,和鲸科技入选中国信通院《2023大模型和AIGC产业图谱》

ModelWhale

人工智能 数据科学 大模型 AIGC 世界人工智能大会

  • 扫码加入 InfoQ 开发者交流群
Nimbus:一款用于构建Java无服务器应用程序的框架_语言 & 开发_Dustin Schultz_InfoQ精选文章