Home

Awesome

Fenix's BookStore后端:以AWS Lambda无服务架构实现

<GitHubWrapper> <p align="center"> <a href="https://icyfenix.cn" target="_blank"> <img width="180" src="https://raw.githubusercontent.com/fenixsoft/awesome-fenix/master/.vuepress/public/images/logo-color.png" alt="logo"> </a> </p> <p align="center"> <a href="https://icyfenix.cn" style="display:inline-block"><img src="https://raw.githubusercontent.com/fenixsoft/awesome-fenix/master/.vuepress/public/images/Release-v1.svg"></a> <a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank" style="display:inline-block"><img src="https://raw.githubusercontent.com/fenixsoft/awesome-fenix/master/.vuepress/public/images/License-Apache.svg" alt="License"></a> <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" style="display:inline-block"><img src="https://raw.githubusercontent.com/fenixsoft/awesome-fenix/master/.vuepress/public/images/DocLicense-CC-red.svg" alt="Document License"></a> <a href="https://icyfenix.cn/introduction/about-me.html" target="_blank" style="display:inline-block"><img src="https://raw.githubusercontent.com/fenixsoft/awesome-fenix/master/.vuepress/public/images/Author-IcyFenix-blue.svg" alt="About Author"></a> </p> </GitHubWrapper>

如果你此时并不曾了解过什么是“The Fenix Project”,建议先阅读<a href="https://icyfenix.cn/introduction/about-the-fenix-project.html">这部分内容</a>

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

不过,由于无服务架构原理上就决定了它对程序的启动性能十分敏感,这天生就不利于Java程序,尤其不利于Spring这类启动时组装的CDI框架。因此基于Java的程序,除非使用<a href="https://icyfenix.cn/tricks/2020/graalvm/substratevm.html">GraalVM做提前编译</a>、将Spring的大部分Bean提前初始化,或者迁移至Quarkus这以原生程序为目标的框架上,否则是很难实际用于生产的。

运行程序

Serverless架构的Fenix's Bookstore基于亚马逊AWS Lambda平台运行,这是最早商用,也是目前全球规模最大的Serverless运行平台。从2018年开始,中国的主流云服务厂商,如阿里云、腾讯云都推出了各自的Serverless云计算环境,如需在这些平台上运行Fenix's Bookstore,应根据平台提供的Java SDK对StreamLambdaHandler的代码进行少许调整。

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

协议