3年前 (2021-08-22)  相关技术 |   抢沙发  304 
文章评分 0 次,平均分 0.0
[收起] 文章目录

为什么是微服务?它们使创新更快。

企业必须以更快的速度创新,才能在竞争中保持领先地位。他们必须显著改进他们如何开发和部署作为创新的基础的软件。

企业不仅必须采用敏捷实践并在云上部署,还必须用微服务取代庞大、笨重的单片应用程序。

异步微服务简介

微服务的问题:分布式数据管理

异步微服务简介

每个服务都有自己的数据库

为了确保服务松散耦合,每个服务都有自己的私有数据库。因此,在开发微服务时,必须解决分布式数据管理的问题。

维护数据一致性是一项挑战

您必须实现跨服务的业务事务,但很少选择两阶段提交(2PC)。

查询是一项挑战

必须实现从多个服务检索数据的查询。

使用异步微服务体系结构

对于大多数应用程序,使微服务工作并成功管理分布式数据的方法是使用sagas和CQRS视图。在这样的体系结构中,服务使用域事件和命令/回复消息进行异步通信。

异步微服务简介

使用sagas维护数据一致性

Sagas是微服务体系结构的事务模型。传奇是一系列本地交易。每个本地事务更新一个服务中的数据,并发送触发下一个事务的消息/事件。

异步微服务简介

使用CQRS视图

命令查询责任分离(CQRS)视图是在微服务体系结构中实现跨服务查询的一种方法。CQRS视图是一个或多个服务的数据副本,该服务针对特定的查询集进行了优化。维护视图的服务通过订阅域事件来实现。每当服务更新其数据时,它都会发布一个域事件。

异步微服务简介

以原子方式更新数据库和发布消息的问题

您可以使用异步体系结构来解决microservices体系结构中的分布式数据管理难题。然而,实现异步体系结构的一个主要挑战是以原子方式更新数据库并发送消息。

例如,考虑创建订单用例。实现此用例的服务必须执行两个操作:向ORDER表中插入一行和发布OrderCreated事件。这两个操作都必须以原子方式完成。如果由于故障仅发生一次操作,则系统将表现不正确。

原子地更新状态和发布消息的标准方法是使用包含数据库和消息代理的分布式事务。然而,出于前面描述的原因,这正是我们不想做的。

Eventuate为此问题提供了两种解决方案:

  • 将EventateTRAM用于基于JDBC/JPA的应用程序
  • 使用事件源与最终本地

原文地址:https://eventuate.io/whyeventdriven.html

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2257.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册