[请教] 微服务模式下,如何校验用户是否为新用户?

2021-07-02 09:42:09 +08:00
 phpdever

问题描述

A 服务负责提供营销活动功能,某个活动仅允许新用户参加,那么 A 服务如何校验授权进来的用户是新用户呢?授权是由 B 服务提供,B 服务的授权逻辑是:如果该用户已注册,则直接登录成功,否则创建该用户。

由于授权登录操作是在 B 服务完成的,到了 A 服务之后并没有办法知道这个用户是新用户还是旧用户,如果是单体应用反而好解决,我只要在 A 服务查询一下 user 表即可。

新用户定义

用户首次注册

我能想到的解决方法

1757 次点击
所在节点    问与答
26 条回复
zhuichen
2021-07-02 14:57:18 +08:00
总结一下,看似问的是技术实现,本质上是业务问题
phpdever
2021-07-02 15:00:05 +08:00
@zhuichen 是的,总结的很到位
phpdever
2021-07-02 17:13:23 +08:00
@qwe520liao 你好,如果不是跟活动绑定呢?参加 A 活动之后成为旧用户,再去参加 B 活动也是旧用户不能参加,如果想实现这种需求应该怎么办呢? 还请不吝赐教
palexu
2021-07-02 17:44:54 +08:00
A 服务自己维护呀, 比如:活动参与记录表查一下历史参与情况, 方式很多
timethinker
2021-07-02 18:04:39 +08:00
用户服务(授权和用户信息):Service B
A 活动:Service A1
B 活动:Service A2

首先你要知道用户是否已经参加了 A 活动,必然要把这个状态持久化吧,在你的第一个问题中,它是存储在 Service A1 服务上的。
现在有需求,已经参加 A 活动的无法参加 B 活动,那么 Service A2 肯定是要查询 Service A1 才能知道他是不是已经参加过了对吧?
至于“旧用户”这个定义,是否具体为“用户参加了 A 活动就算旧用户”,还是取决于你们的需求,我说过了,只要把需求搞明确,做法是不一样的。假设这个“旧用户”是指存储在用户服务的一个标志状态,那么此时就需要查询 Service B,而不是 Service A1 了。
phpdever
2021-07-04 09:49:24 +08:00
@qwe520liao 明白明白,谢谢大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/787054

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX