微服务的分布式事务

2020-07-02 00:00:00 用户 微服 消息 事务 分布式

1.简介

在本文中,我们将讨论跨微服务实现事务的方式。

我们还将查看分布式微服务场景中的一些事务替代方案。

2.避免跨微服务的事务

分布式事务(distributed transaction)是一个非常复杂的过程,有许多可能失败的部件。 此外,如果这些部件在不同的机器上运行,甚至在不同的数据中心运行,则提交事务的过程可能会变得非常长且不可靠。

这可能严重影响用户体验和整体系统带宽。 因此,解决分布式事务问题的佳方法之一是完全避免它们

2.1 需要事务的架构示例

通常,一个微服务被升级成独立且有用的形式。 它应该能够解决一些原子业务任务(atomic business task)。

如果我们可以在这样的微服务中拆分我们的系统,那么我们很可能根本不需要在它们之间实现事务。

例如,让我们考虑一个在用户之间广播消息的系统。

用户(User)微服务将关注用户配置(User Profile)文件(创建新用户,编辑配置文件数据等)以及以下基础领域类:

@Entity
public class User implements Serializable {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
 
    @Basic
    private String name;
 
    @Basic
    private String surname;
 
    @Basic
    private Instant lastMessageTime;
}

相关文章