转载

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

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

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

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

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

复制代码

publicclassRestApi {

@HttpServerlessFunction(path="getOsTypes",method= HttpMethod.GET)
public List<String> currentOsTypes(){
returnArrays.asList(newString[] {"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 注解来创建一个文档存储。

复制代码

@DocumentStore
publicclassOsPreference {

@Key
privateStringid;

@Attribute
privateStringpreference;

publicOsPreference(Stringid,Stringpreference) {
this.id = id;
this.preference = preference;
}

// ...
// getters & setters
// ...
}

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

复制代码

privateDocumentStoreClient<OsPreference> client =
ClientBuilder.getDocumentStoreClient(OsPreference.class);

@HttpServerlessFunction(path="setOsPreference",method= HttpMethod.POST)
@UsesDocumentStore(OsPreference.class)
public String setOsPreference(OsPreferenceosPreference){
client.put(osPreference);
return"Success";
}

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

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

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

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

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

原文  https://www.infoq.cn/article/zo2YOx_0OtdPQXRXDr8N
正文到此结束
Loading...