V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
batxent
V2EX  ›  问与答

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

  •  
  •   batxent · 2019-05-13 16:30:59 +08:00 · 1855 次点击
    这是一个创建于 2026 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2019-05-14 12:41:58 +08:00
    seaguest
        1
    seaguest  
       2019-05-13 17:03:49 +08:00
    微服务模块之间通过 RPC 调用。
    譬如你的用户模块提供一个 RPC 接口查询 user 的功能。
    就算是整合在一起也是需要这个查询的。
    ming7435
        2
    ming7435  
       2019-05-13 17:05:04 +08:00
    接口
    PIAPIAPIA
        3
    PIAPIAPIA  
       2019-05-13 17:06:53 +08:00 via Android
    你是问 feign 吗
    HuasLeung
        4
    HuasLeung  
       2019-05-13 17:26:43 +08:00 via Android
    RPC 远程调用,如 Java 微服务框架 Spring Cloud 中的 Feign
    Muninn
        5
    Muninn  
       2019-05-13 19:31:07 +08:00
    用户是个单独的服务。

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

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

    只有个别地方需要读取两个服务的数据共同给前端结果的时候,一部分是想办法让前端调用两次,一部分只能后端用 rpc 或者其他同步协议调用了再给前端了。
    passerbytiny
        11
    passerbytiny  
       2019-05-14 12:41:58 +08:00
    @Muninn #10 读取两个服务的数据共同给前端结果,这也是一个服务。该服务是 node js 服务端该发挥的时候。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5830 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:48 · PVG 10:48 · LAX 18:48 · JFK 21:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.