如何使用Akka Serverless制作电子商务应用?


Akka Serverless 是一种平台即服务,它结合了 API 优先、无数据库编程和无服务器运行时。开发人员不必设置和调整数据库、维护和供应服务器、配置或运行计算集群。开发人员唯一负责的是构建无服务器服务。相比之下,Akka Serverless 提供了高级数据访问模式,如CQRSEvent SourcingCRDT,开发人员无需学习如何实现这些概念。
 
Akka Serverless 的特点

  • 无数据库

传统上,包括状态在内的所有数据都存储在数据库中。甚至需要访问数据库以检索状态,这可能会显着增加延迟。这个问题已在 Akka serverless 中通过内存状态解决,由持久存储支持,从而减少以数据为中心的操作的延迟,并在需要时将数据带到服务中。此功能还消除了在后端设置数据库的需要,因为 Akka Serverless 可以处理其细节。
  • API优先

由于 Akka serverless 的本质是无数据库,开发人员只需要考虑实现他们的 API,使 Akka serverless API-first。它允许开发人员根据需要创建数据对象,而不必担心数据需要如何持久存储在持久存储中。此功能开辟的另一个途径是开发人员希望为其服务配置的暴露级别,因为该平台负责与存储的连接。
  • 无服务器

开发人员无需担心随着对其应用程序需求的增加而扩展其应用程序。Akka serverless 处理开发人员部署的服务所需的所有基础设施。Akka 提供的运行时是基于 Actor 的、自我修复的、高度可扩展的分布式运行时。
 
Akka 无服务器编程模型
开发人员创建的服务可以包含无状态和有状态组件。对于有状态的组件,开发者可以选择状态模型,数据管理由 Akka serverless 处理。
  • 服务

服务是开发人员编写的代码,用于指定正在实现的应用程序的逻辑。服务可以包含无状态操作、有状态实体和视图。
  • Action

Action包含不需要状态持久性的代码。例如,一个动作可以在监听一个事件时转换一个实体。
  • 实体

实体是封装数据和业务逻辑的域对象。实体可以是不同的状态模型,可以根据实体的用例进行选择,并决定 Akka serverless 如何管理数据。
  • 视图Views

视图用于从多个实体检索数据。我们可以使用类似 SQL 的查询从实体中检索数据。
  • 状态模型

传统上,应用程序使用数据库层来检索和存储状态信息。它给开发人员带来了很大的负担,因为需要进行正确的数据库连接、维护版本、确保不同版本之间的兼容性、扩展数据库和处理错误。在 Akka serverless 中,每个服务都有一个代理可用。代理就像一个内存数据存储,存储所有状态信息,从而减少数据检索操作的延迟。
有两种类型的状态模型 - 值实体状态模型和基于事件的实体状态模型。
  1. 值实体状态模型:值实体状态模型仅将当前状态持久化到持久数据存储中。一旦具有特定 ID 的实体被实例化,其状态将被缓存以更快地对其进行后续请求。价值实体状态模型提供的好处是 - 可扩展 - 长寿命 - 可寻址行为 - 更类似于传统数据库
  2. 事件源实体状态模型基于事件的实体状态模型捕获数据更改,而不是覆盖现有值。数据更改日志保存在日志中。不同的服务可以在不同的点开始读取日志,从而导致最终的一致性。尽管有些可能需要更长的时间,但所有各方都可以保证在某个时候赶上。事件源实体状态模型提供的好处 - 审计 - 重建历史状态的时间查询

详细教程点击标题
代码参阅此链接中提供的存储库。