Lagom 持久实体是Actor 吗? / 演员模型
Are Lagom Persistent Entities Actors? / Actor Models
我正在使用 Lagom 的永久实体,并支持读取端 Cassandra 来实现,保存读取端查询的状态。所以试图理解,持久实体也是演员吗?意味着一次只处理一个事件/命令?事件也是 "persistent entity" 处理的消息吗?
我找不到很多关于以下内容的文档:
- 是否每个实体在创建后都保存在内存中?例如:如果用户是一个实体,并且在创建新用户时如果用户对象(实体)持久保存在内存中,假设几乎 80% 的用户长时间离线,该模型如何有效地扩展?
如果我们采用一个模型,其中 actor 在超时后被删除...... actor 是否必须再次读取所有事件以处理另一个请求?这会不会增加延迟?
我看到的大多数示例都与实施购物车/类似的东西有关。如果将商品添加到购物车是由命令/查询处理的,如何确保同一商品不会两次添加到购物车?由于读取/更新依赖于不同的观点/事实来源。 (我知道这可能发生在任何有并发用户的应用程序中,但这种情况似乎很可能使用 Actors)
- 持久实体在可配置的不活动时间后从内存中删除。
- 持久实体通过读取最近的快照和它之后的每个事件再次加载到内存中。
- 可以通过与从事件日志(真实来源)构建的持久实体状态进行比较来验证命令。您可以将产品存储在内部状态并知道何时再次添加产品。然后你可以通过不发出事件并返回错误来拒绝这个命令。
Are the persistent entities also actors? Meaning only one event / command will be handled at a time ?
我不会这样问的; actors do 执行同步消息处理,但是执行同步消息处理并不意味着它是 actor。
现在语义已经不存在了,我们可以解决这个问题了……PersistentEntity
在技术上是 not actors... However, PersistentEntityRegistry
s will create something that is a PersistentActor
。
- is every entity persisted in memory once created?
根据 Akka 持久性快照(请参阅 here)机制,实体会持久保存在您使用的任何存储中。
- If we go by a model in which the actor is removed after some timeout... Will the actor have to read all events again to handle another request?
同样,快照将大有帮助。
- If adding items to cart is handled by commands / queries how is it ensured that the same item is not added onto the cart twice?
您可以阅读更多关于 Akka actors 传递语义的信息here。
我正在使用 Lagom 的永久实体,并支持读取端 Cassandra 来实现,保存读取端查询的状态。所以试图理解,持久实体也是演员吗?意味着一次只处理一个事件/命令?事件也是 "persistent entity" 处理的消息吗? 我找不到很多关于以下内容的文档:
- 是否每个实体在创建后都保存在内存中?例如:如果用户是一个实体,并且在创建新用户时如果用户对象(实体)持久保存在内存中,假设几乎 80% 的用户长时间离线,该模型如何有效地扩展?
如果我们采用一个模型,其中 actor 在超时后被删除...... actor 是否必须再次读取所有事件以处理另一个请求?这会不会增加延迟?
我看到的大多数示例都与实施购物车/类似的东西有关。如果将商品添加到购物车是由命令/查询处理的,如何确保同一商品不会两次添加到购物车?由于读取/更新依赖于不同的观点/事实来源。 (我知道这可能发生在任何有并发用户的应用程序中,但这种情况似乎很可能使用 Actors)
- 持久实体在可配置的不活动时间后从内存中删除。
- 持久实体通过读取最近的快照和它之后的每个事件再次加载到内存中。
- 可以通过与从事件日志(真实来源)构建的持久实体状态进行比较来验证命令。您可以将产品存储在内部状态并知道何时再次添加产品。然后你可以通过不发出事件并返回错误来拒绝这个命令。
Are the persistent entities also actors? Meaning only one event / command will be handled at a time ?
我不会这样问的; actors do 执行同步消息处理,但是执行同步消息处理并不意味着它是 actor。
现在语义已经不存在了,我们可以解决这个问题了……PersistentEntity
在技术上是 not actors... However, PersistentEntityRegistry
s will create something that is a PersistentActor
。
- is every entity persisted in memory once created?
根据 Akka 持久性快照(请参阅 here)机制,实体会持久保存在您使用的任何存储中。
- If we go by a model in which the actor is removed after some timeout... Will the actor have to read all events again to handle another request?
同样,快照将大有帮助。
- If adding items to cart is handled by commands / queries how is it ensured that the same item is not added onto the cart twice?
您可以阅读更多关于 Akka actors 传递语义的信息here。