V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
arjen
V2EX  ›  程序员

如何处理多副本下的状态管理?

  •  
  •   arjen ·
    arjenzhou · 2021-06-08 14:29:42 +08:00 · 879 次点击
    这是一个创建于 1257 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有服务 A 和服务 B 。服务 A 在请求服务 B 时,服务 B 会将请求作为一个任务,并将其状态(执行中,成功,失败等)存放在 Redis 中执行。现在所有服务都在 K8S 上并每个服务有多个副本,

    1. 服务 B 的一个副本失败重启后,由于无法区分哪些任务是属于该失败的节点,所以会将 Redis 中所有任务置为失败。如何只取消该失败节点对应的任务?
    2. 服务 A 想取消任务,如何确定取消请求发送到哪个 B 服务的节点上?

    现在的想法是在 Redis 中用副本的 name 作为前缀来区分副本,但是副本重启后该 name 会变化。在不引入新组件的情况下,有什么方案可以解决这些问题吗?

    1 条回复    2021-06-08 22:18:26 +08:00
    jones2000
        1
    jones2000  
       2021-06-08 22:18:26 +08:00
    A,B 有任务关系, 直接 A,B 创建一个路链接, 不就行了, 状态控制都通过这路链接来完成.
    再加一个总控系统, A 向总控发出请求需要一个 B 服务的任务,总控从空闲的机器中选出一个机器 B, A 直接向 B 发出来链接让 B 执行任务, 如果 B 执行失败, A 向总控重新发请求换一个机器链接执行.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:32 · PVG 03:32 · LAX 11:32 · JFK 14:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.