数据保护背景下,安全团队引入了哪些新技术进行防控升级?点击学习案例 了解详情
写点什么

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

  • 2019 年 4 月 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 年 4 月 28 日 06:364794
用户头像

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

关注

评论

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

翻译:《实用的Python编程》README

codists

Python

批判性思维自修课(六)

石君

28天写作 批判性思维

产品经理训练营作业 02

KingSwim

机器学习·笔记之:Matrices and Vectors

Nydia

产品训练营第二章作业(二)

Arnold

持续交付

lidaobing

持续交付 28天写作

28天瞎写的第二百三十五天:客服得有多专业?

树上

28天写作

Spring - IOC

小马哥

Java 架构师 spring 5 七日更

架构师训练营第十周作业

zamkai

为啥写的mybatis插件没用?一场mybatis插件加载机制的探索之旅

altantisor

spring Boot Starter mybatis源码

python爬虫入门-通过茅台脚本讲些爬虫知识,应用和价值

大佬sam

Python python 爬虫 2月春节不断更

天秀,阿里P9耗时64天,总结历年亿级活动终成这份亿级高并发系统设计手册

互联网架构师小马

「产品经理训练营」作业03:利益相关方识别

狷介

产品经理训练营

图解计算机结构与体系分类!!

冰河

编程 程序员 高并发 计算机结构 操作系统原理

持续进步的不二法宝-PDCA

Ian哥

28天写作

产品训练营-作业3

简小一

被接连封杀后,出海的“TikTok们”都打算如何做?

李忠良

28天写作

传统线程同步通信技术

武哥聊编程

Java 多线程 28天写作

学习计算机视觉

IT蜗壳-Tango

OpenCV 计算机视觉 2月春节不断更

第五周作业

oooh-la

翻译:《实用的Python编程》00_Setup

codists

Python

创业失败启示录|样茶里的商机

阿萌

28天写作 创业失败启示录 青城 2月春节不断更

开发质量提升系列:标准模板(中)

罗小龙

最佳实践 方法论 28天写作

【并发编程的艺术】详解单例模式的实现方式(Java)

程序员架构进阶

设计模式 Java内存模型 七日更 28天写作 2月春节不断更

第三章:产品解决方案作业

让时间说真话

产品经理

Python 中 sorted 如何自定义比较逻辑

zikcheng

Python sorted cmp

《学会写作》学习笔记之如何拟标题

JiangX

28天写作

不会开发的你也能管理好企业漏洞,开源免费工具:洞察(insight II)

BigYoung

安全 安全漏洞 28天写作 2月春节不断更

管理笔记[4]:组织管理的目标就是实现1+1>2

俊毅

一文看完TCP/IP协议基础知识点

极客大学·产品经理训练营·第二章作业(二)

二大爷

极客大学 产品训练营

4k/8k超高清时代,如何利用媒体处理技术加速数字化升级

4k/8k超高清时代,如何利用媒体处理技术加速数字化升级

Nimbus:一款用于构建Java无服务器应用程序的框架_语言 & 开发_Dustin Schultz_InfoQ精选文章