【发布时间】:2019-02-27 17:27:33
【问题描述】:
我有两个 django REST API 项目,我已将它们解耦为微服务架构,其中一个服务是处理身份验证的 (SSO)(我正在使用基于 JWT 令牌的身份验证)和管理用户信息,另一个是工资服务。
问题是user 与工资单服务中的某些模型有关。具体来说,我在工资单服务中有一个Employee 类,它有一个user_id 字段。我将在此处添加一个用户 UUID,我将从查询 SSO 服务中获得该用户。
考虑到每个服务都有自己的数据库,我如何跨微服务共享数据库。
【问题讨论】:
-
如果你确实需要从一个服务访问两个数据库,Django 确实支持multiple databases 的配置;这不适合您的用例吗?虽然在我看来,当您使用微服务时,从身份验证服务的端点获取所需的任何用户数据可能更合适,而不是通过直接访问数据库来破坏架构。
-
在服务之间共享数据库通常被认为不是一个好的选择。但最后,这取决于程序员。以下 2 篇文章对这两种模式进行了广泛的解释。这将帮助您做出决定。最后,如果你想共享数据库,Django 支持对多个数据库的配置,如@kungphu microservices.io/patterns/data/database-per-service.html microservices.io/patterns/data/shared-database.html
标签: python django database django-rest-framework microservices