我有服务 A 和服务 B 。服务 A 在请求服务 B 时,服务 B 会将请求作为一个任务,并将其状态(执行中,成功,失败等)存放在 Redis 中执行。现在所有服务都在 K8S 上并每个服务有多个副本,
- 服务 B 的一个副本失败重启后,由于无法区分哪些任务是属于该失败的节点,所以会将 Redis 中所有任务置为失败。如何只取消该失败节点对应的任务国外服务器?
- 服务 A 想取消任务,如何确定取消请求发送到哪个 B 服务的节点上?
现在的想法是在 Redis 中用副本的 name 作为前缀来区分副本,但是副本重启后该 name 会变化。在不引入新组件的情况下,有什么方案可以解决这些问题吗?
A,B 有任务关系, 直接 A,B 创建一个路链接, 不就行了, 状态控制都通过这路链接来完成.
再加一个总控系统, A 向总控发出请求需要一个 B 服务的任务,总控从空闲的机器中选出一个机器 B, A 直接向 B 发出来链接让 B 执行任务, 如果 B 执行失败, A 向总控重新发请求换一个机器链接执行.