• 请不要在回答技术问题时复制粘贴 AI 生成的内容
arjen
V2EX  ›  程序员

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

  •  
  •   arjen ·
    arjenzhou · Jun 8, 2021 · 1176 views
    This topic created in 1800 days ago, the information mentioned may be changed or developed.

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

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

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

    1 replies    2021-06-08 22:18:26 +08:00
    jones2000
        1
    jones2000  
       Jun 8, 2021
    A,B 有任务关系, 直接 A,B 创建一个路链接, 不就行了, 状态控制都通过这路链接来完成.
    再加一个总控系统, A 向总控发出请求需要一个 B 服务的任务,总控从空闲的机器中选出一个机器 B, A 直接向 B 发出来链接让 B 执行任务, 如果 B 执行失败, A 向总控重新发请求换一个机器链接执行.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3315 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:37 · PVG 19:37 · LAX 04:37 · JFK 07:37
    ♥ Do have faith in what you're doing.