python - 使用 Django REST 框架跨微服务共享数据库关系
问题描述
我有两个 django REST API 项目,我已将它们解耦为微服务架构,其中一个服务是(SSO),它处理身份验证(我正在使用基于 JWT 令牌的身份验证)并管理用户信息,另一个是工资单服务.
问题是与user
工资单服务中的某些模型有关。具体来说,我有一个Employee
工资单服务类,它有一个user_id
字段。这是我将添加一个用户的地方UUID
,我将从查询 SSO 服务中获得该用户。
考虑到每个服务都有自己的数据库,我如何跨微服务共享数据库。
解决方案
不建议跨有界上下文共享数据库,因为每个微服务都应该能够更改其持久数据的方式。允许多个微服务管理数据库会导致你陷入死星陷阱模式
但是,您可能希望将身份验证上下文中用户数据的副本/更新发送到您的工资单服务。这样,您就可以拥有独立的数据持久化策略。一种方法是在您的身份验证上下文上实现事件发射策略,此事件发射策略将负责广播在身份验证上下文上所做的数据更改,驻留在另一个有界上下文的订阅者可以侦听,以便他们可以存储副本您的用户数据在他们自己的持久层上。
推荐阅读
- git - git不跟踪Android Studio中的重命名/重构java包
- android - 我的应用程序正在安装很长时间
- c++ - 如何在 CMake 目标上请求 C++11 或更高版本?
- c - 如果使用 __INLINE__,速度会提高多少?
- reactjs - 如何在获取请求期间显示 Axios 的进度(不是下载或上传)
- javascript - 如何在 ejs 模板中格式化数字?
- javascript - 使用 Vue JS 的可重用文件组件
- octave - 如何在八度音程中找到依赖函数
- three.js - 加载后精灵缩放和扭曲 - Three.js
- c++ - 创建地图时如何管理内存
> 通过读取文件