首页 > 解决方案 > 使用 Django REST 框架跨微服务共享数据库关系

问题描述

我有两个 django REST API 项目,我已将它们解耦为微服务架构,其中一个服务是(SSO),它处理身份验证(我正在使用基于 JWT 令牌的身份验证)并管理用户信息,另一个是工资单服务.

问题是与user工资单服务中的某些模型有关。具体来说,我有一个Employee工资单服务类,它有一个user_id字段。这是我将添加一个用户的地方UUID,我将从查询 SSO 服务中获得该用户。

考虑到每个服务都有自己的数据库,我如何跨微服务共享数据库。

标签: pythondjangodatabasedjango-rest-frameworkmicroservices

解决方案


不建议跨有界上下文共享数据库,因为每个微服务都应该能够更改其持久数据的方式。允许多个微服务管理数据库会导致你陷入死星陷阱模式

但是,您可能希望将身份验证上下文中用户数据的副本/更新发送到您的工资单服务。这样,您就可以拥有独立的数据持久化策略。一种方法是在您的身份验证上下文上实现事件发射策略,此事件发射策略将负责广播在身份验证上下文上所做的数据更改,驻留在另一个有界上下文的订阅者可以侦听,以便他们可以存储副本您的用户数据在他们自己的持久层上。


推荐阅读