架构设计:多个系统如何共享用户信息?

发布于 2022-09-07 23:20:35 字数 463 浏览 19 评论 0

如果有多个系统要共享用户信息,该如何设计?

比如,阿里巴巴有支付宝、淘宝、天猫、阿里云等等一系列产品系统,但是只要你注册了其中任何一个产品,就可以在其它产品中也可以用该账号进行登录,而且你的收货地址、个人详细信息之类的也都会保留。

那么,这种系统是怎么设计的?

我想到两种方案:

方案1:

所有产品的后端共用一个数据库(这个太傻了,肯定不会这样设计)

方案2:

将用户验证、用户信息查询单独抽离成一个独立的项目(包括数据库和代码全部独立),供其它系统调用。
这样做的确可以让所有系统的用户信息实现共享,这样你在支付宝里面修改了收货地址,打开淘宝会发现淘宝里的收货地址也已经更新。
但是这样有个很大的弊端,就是跨表查询起来太麻烦了。比如我要搜索某个时间段的包括用户收货信息的订单详情,要不停地跨表联查。

问题

多个系统要共享用户信息,有没有好的解决方案呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凹づ凸ル 2022-09-14 23:20:35

OAuth2了解一下。你说的这几个系统基本都提供oauth2接口

記柔刀 2022-09-14 23:20:35

方案2是没问题的,但是楼主似乎是觉得跨库联查太麻烦,想用join查询?也不是不可以,你自己本地再存一份用户数据就好了,每次用户登录的时候更新用户数据,唯一的不好的地方就是用户如果在淘宝改了东西,不会马上知道,只有在重新登录的时候才更新

抚你发端 2022-09-14 23:20:35

楼主的方案2是跨库查询吧,这个方案在分库分表的情况下效率也不高吧。这种关联查询其实可以放到应用层级去完成吧,user系统相当于一个微服务,调它的接口去完成用户信息的查询之类的操作吧。而用户验证之类的操作,可以通过oauth2,或者单点登录系统来完成吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文