0

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

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

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

我想到两种方案:

方案1:

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

方案2:

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

问题

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

2018-09-27 提问
3 个回答
5

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

1

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

0

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

撰写答案

推广链接