我使用 sso 开发具有独立数据库的多子域网站,如下所示:
www.example.com(公司网站和商店)- www_db
blog.example.com - blog_db
forum.example.com - forum_db
account.example.com - 登录、注册、account_db(用户)
我有一个问题,在论坛上,用户必须可以添加帖子,然后在呈现帖子列表时,我必须获取每个帖子的用户数据:用户名、头像等,但由于用户和帖子是在不同的数据库中,我该怎么做?
我不明白它是如何发布的,我认为通过 API 从帖子中通过 user_ids 获取用户,但请求太多
好吧,让我们一项一项地进行:
我假设这是一个关于身份验证的问题,在这种情况下,您可以通过 MessageQueue
向 AccountService
发出请求以获取该特定用户的权限。如果您有大量流量,这可能会对网络造成沉重负担 - 但这可以通过在 ForumService
中缓存每个用户及其权限来优化。
此外,您还可以实现一个网关 API,该 API 在首次请求时执行用户的初始获取,然后将用户数据进一步传播到底层服务中。
与 auth 相同的情况也适用。您可以一一获取这些用户,并将它们缓存到您认为必要的时间。当然,您会暂时失去一些数据一致性,但您将获得可用性并降低网络流量(最终一致性)。您还可以使 AuthService
发出 UserChangedNotification
并将不一致情况减少到绝对最低限度。
https://obeycode.com/articles/7 /微服务简单术语---简介
以上是如何将多子域网站与独立的数据库关联起来?的详细内容。更多信息请关注PHP中文网其他相关文章!