GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

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

2019 年 4 月 28 日

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:364586
用户头像

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

关注

评论

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

Alibaba2020年度内部全技术栈PPT总结(基础+架构+算法+大数据+手册)

Java成神之路

Java 程序员 架构 面试 编程语言

凭借这份Github上55.3K面试指南,我成功拿到Google、阿里的offer

Java成神之路

Java 程序员 架构 面试 编程语言

阿里一线架构师甩出“源码阅读指南”,从源码到实战,一键搞定

比伯

Java 编程 程序员 架构 计算机

《小狗钱钱》读书笔记

架构精进之路

读书笔记 七日更 28天写作

jdk8 String和StringBuilder对象创建所在位置

ilovealt

Java string StringBuilder

全网最全:Java9全部新特性一览

程序员小毕

Java 编程 程序员 架构 JVM

30+程序员竞争力从哪里来?

我心依然

竞争力 大龄程序员

谁,是产品的利益相关方?

不离

极客大学认识产品经理 极客大学产品经理训练营 跟着二爷学产品

2021年春招,Java后端最全面试攻略,吃透25个技术栈

Crud的程序员

Java 程序员 架构

产业互联网业务与团队的思考

陈俊

真狠!涵盖了Netty+Spark+Hadoop+分布式五部分!讲的清清楚楚!

996小迁

redis hadoop 架构 面试 Netty

学习JAVA8个月,成功跳槽,外包进阿里成功定级P7,太牛了!

云流

Java 编程 程序员 面试

架构师训练营第 2 期 第 7 周 作业一

老坛酸菜

架构师训练营第2期

软件教练说:性能优化与性能设计,“相亲相爱”的一对

华为云开发者社区

架构 性能优化 设计 程序 软件教练

Java开发工作4年还是只会“增删改查”,Java程序员该如何进阶?

Java成神之路

Java 程序员 架构 面试 编程语言

老外程序员的Java性能优化方式是什么?JVM调优策略+工具+技巧

Java架构追梦

Java 学习 架构 面试 jvm调优

奇葩java迭代器笔试题,做对算你厉害

田维常

迭代器模式

九大核心专题,630页内容,熬夜23天吃透,我收割了3个大厂offer

周老师

Java 编程 程序员 架构 面试

Mybatis【16】-- Mybatis多对一关联查询

秦怀杂货店

数据库 mybatis

产品经理训练营笔记-产品思维和产品意识(下)

.nil?

产品经理训练营

区块链人才能力评价测试机构亮相

CECBC区块链专委会

区块链人才

BAT面试Spring全家桶:Spring+SpringBoot+SpringCloud+SpringMVC

Java架构之路

Java 程序员 架构 面试 编程语言

成长篇-结构思考力笔记(完整版)

小诚信驿站

程序员 刘晓成 小诚信驿站 成长笔记 28天写作

Java学习笔记整理:Spring+tomcat+Kafka+多线程面试笔记

Java架构之路

Java 程序员 架构 面试 编程语言

半导体芯片小白基础知识(2) (28天写作 Day23/28)

mtfelix

集成电路 28天写作 晶圆 光刻机 晶圆代工

NeoKylin-Server-5.0离线部署etcd+flannel集群,实现docker容器跨主机网络通信

星河寒水

Docker etcd flannel 麒麟操作系统 离线部署

面试官问:ZooKeeper是强一致的吗?怎么实现的?

云流

Java 编程 程序员 面试 分布式

刚面完阿里Java高级岗拿到40K的offer,这些技术你必须要掌握!

Java成神之路

Java 程序员 架构 面试 编程语言

一名开发三年的Java程序员陈述:进大公司拿30K+到底有多难?

Java成神之路

Java 程序员 架构 面试 编程语言

蚂蚁金服二面被血虐,鬼知道面试的我经历了什么?

Java架构之路

Java 程序员 架构 面试 编程语言

JVM笔记 -- Java跨平台和JVM跨语言

秦怀杂货店

JVM JVM笔记

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