微服务的分布式事务
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;
}
相关文章