加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

这货压根不知道开发流程!

发布时间:2021-01-31 11:16:13 所属栏目:评论 来源:互联网
导读:优点 为高可伸缩系统提供原子性操作 自动记录实体变更历史,包括时序回溯功能 松耦合和事件驱动的微服务 缺点 从事件存储中读取实体成为新的挑战,通常需要额外的数据存储(CQRS 模式)。 系统整体复杂性增加了,通常需要领域驱动设计。 系统需要处理事件重

优点

  • 为高可伸缩系统提供原子性操作
  • 自动记录实体变更历史,包括时序回溯功能
  • 松耦合和事件驱动的微服务

缺点

  • 从事件存储中读取实体成为新的挑战,通常需要额外的数据存储(CQRS 模式)。
  • 系统整体复杂性增加了,通常需要领域驱动设计。
  • 系统需要处理事件重复(幂等)或丢失
  • 变更事件结构成为新的挑战。

何时使用事件源

  • 使用关系数据库的、高可伸缩的事务型系统
  • 使用 NoSQL 数据库的事务型系统
  • 弹性高可伸缩微服务架构
  • 典型的消息驱动或事件驱动系统(电子商务、预订和预约系统)

何时不宜使用事件源

  • 使用 SQL 数据库的低可伸缩性事务型系统
  • 在服务可以同步交换数据(例如,通过 API)的简单微服务架构中。

可用技术示例

事件存储:EventStoreDB、Apache Kafka、Confluent Cloud、AWS Kinesis、Azure Event Hub、GCP Pub/Sub、Azure Cosmos DB、MongoDB、Cassandra、Amazon DynamoDB

框架:Lagom、Akka、Spring、akkatecture、Axon、Eventuate

命令和查询职责分离(CQRS)

如果我们使用事件源,那么从事件存储中读取数据就变得困难了。要从数据存储中获取实体,我们需要处理所有的实体事件。有时我们对读写操作还会有不同的一致性和吞吐量要求。

这种情况,我们可以使用 CQRS 模式。在该模式中,系统的数据修改部分(命令)与数据读取部分(查询)是分离的。而 CQRS 模式有两种容易令人混淆的模式,分别是简单的和高级的。

在其简单形式中,不同实体或 ORM 模型被用于读写操作,如下所示:

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读