无服务:AWS Lambda

    如果你此时并不曾了解过什么是“The Fenix Project”,建议先阅读这部分内容

    无服务架构(Serverless)与微服务架构本身没有继承替代关系,它们并不是同一种层次的架构,无服务的云函数可以作为微服务的一种实现方式,甚至可能是未来很主流的实现方式。在这部文档中我们的话题主要还是聚焦在如何解决分布式架构下的种种问题,相对而言无服务架构并非重点,不过为保证架构演进的完整性,笔者仍然建立了无服务架构的简单演示工程。

    不过,由于无服务架构原理上就决定了它对程序的启动性能十分敏感,这天生就不利于 Java 程序,尤其不利于 Spring 这类启动时组装的 CDI 框架。因此基于 Java 的程序,除非使用、将 Spring 的大部分 Bean 提前初始化,或者迁移至Quarkus这以原生程序为目标的框架上,否则是很难实际用于生产的。

    假设你已经完成、配置AWS CLI 环境以及 IAM 账号的前提下,可通过以下几种途径,可以运行程序,浏览最终的效果:

    • 通过 AWS SAM(Serverless Application Model) Local 在本地运行:
      AWS CLI 中附有 SAM CLI,但是版本较旧,可通过安装最新版本的 SAM CLI。另外,SAM 需要 Docker 运行环境支持,可参考此处部署。
      首先编译应用出二进制包,执行以下标准 Maven 打包命令即可:

      根据 pom.xml 中 assembly-zip 的设置,打包将不会生成 SpringBoot Fat JAR,而是产生适用于 AWS Lambda 的 ZIP 包。打包后,确认已在 target 目录生成 ZIP 文件,且文件名称与代码中提供了 sam.yaml 中配置的一致,在工程根目录下运行如下命令启动本地 SAM 测试:

      在浏览器访问:,系统预置了一个用户(user:icyfenix,pw:123456),也可以注册新用户来测试。

    协议

    • 本作品代码部分采用进行许可。遵循许可的前提下,你可以自由地对代码进行修改,再发布,可以将代码用作商业用途。但要求你:

      • 署名:在原有代码和衍生代码中,保留原作者署名及代码来源信息。
      • 保留许可证:在原有代码和衍生代码中,保留 Apache 2.0 协议文件。