微服务体系下,若各服务仅操作自己的表,用户表该如何处理,因为其势必与其他业务会有耦合,比如有个活动表里面有个字段表示参与活动的用户。

2019-05-13 16:30:59 +08:00
 batxent
1889 次点击
所在节点    问与答
11 条回复
seaguest
2019-05-13 17:03:49 +08:00
微服务模块之间通过 RPC 调用。
譬如你的用户模块提供一个 RPC 接口查询 user 的功能。
就算是整合在一起也是需要这个查询的。
ming7435
2019-05-13 17:05:04 +08:00
接口
PIAPIAPIA
2019-05-13 17:06:53 +08:00
你是问 feign 吗
BCy66drFCvk1Ou87
2019-05-13 17:26:43 +08:00
RPC 远程调用,如 Java 微服务框架 Spring Cloud 中的 Feign
Muninn
2019-05-13 19:31:07 +08:00
用户是个单独的服务。

很多地方只用 user id,根本不用和 user 服务交互。

需要改写 user 的数据的时候,用 rpc 或者队列改一下就行了。 需要用 user 具体的数据也是 rpc 调用。
passerbytiny
2019-05-13 19:38:15 +08:00
搜索关键字:事件、消息驱动、最终一致性。终极解决方案:花两年时间读《领域驱动设计》。RPC 不是微服务,别被某些人误导了
Tink
2019-05-13 22:00:12 +08:00
用户表也是一个微服务
Cbdy
2019-05-13 22:07:47 +08:00
高频使用的用户信息通过网关授权切面注入到请求,不常用由用户服务提供 RPC 接口
batxent
2019-05-14 10:14:17 +08:00
若只是 PRC 调用,
@Muninn 我之前的思路大致跟你相同,目前还没有实践过,不知道会不会有新的坑
Muninn
2019-05-14 10:37:35 +08:00
@batxent 其实 rpc 写起来比较烦躁,目前的趋势会像 @passerbytiny 说的,是事件驱动。能异步的尽量都异步。

只有个别地方需要读取两个服务的数据共同给前端结果的时候,一部分是想办法让前端调用两次,一部分只能后端用 rpc 或者其他同步协议调用了再给前端了。
passerbytiny
2019-05-14 12:41:58 +08:00
@Muninn #10 读取两个服务的数据共同给前端结果,这也是一个服务。该服务是 node js 服务端该发挥的时候。

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

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

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

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

© 2021 V2EX