ETCD Client Watch Event Load Balancer

431 views Asked by At

Is there an already made solution that allows for the load balancing of ETCD Watch events?

The requested solution in question is as follows: enter image description here

  1. "Client A" establishes a watch stream for key /app/status
  2. "Client B" establishes a watch stream for key /app/status
  3. "Client C" establishes a watch stream for key /app/status
  4. In ETCD the key /app/status is changed from a separate client
  5. The "Load Balancer" ensures that only "Client B" receives this change event
  6. In ETCD the key /app/status is changed again from a separate client
  7. The "Load Balancer" ensures that only "Client C" receives this change event
  8. In ETCD the key /app/status is changed again from a separate client
  9. The "Load Balancer" ensures that only "Client A" receives this change event

As can be seen in the example the load balancer is performing a round robin load balance on the returning event.

I have looked at the GRPC Proxy in ETCD, this combines watch requests to the ETCD server which is good but broadcasts the event back to the clients meaning that all clients receive the event. I couldn't see any option that allows me to change the broadcast behavior of the client.

Is this request breaking a fundamental part of Watch streams in the ETCD architecture? Should I be using something different to ETCD for this functionality?

0

There are 0 answers