You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updates in Broccoli (coming from Nomad and Consul, the template or instance) are propagated to all clients with a fixed delay, independent of whether there are actual changes. This leads to a lot of communication overhead.
Solution
Architecture
Instance Service
On every update write change to the instances (e.g. changing parameters, etc.), we notify the websocket service that there is an update of the instances. The websocket service still has a scheduled thread but it will only send new instances in a new batch if it got notified. Notifications can be booleans and the websocket service can just take the current state when updating all clients.
On every update we receive from Nomad or Consul before overwriting the job and service map inside the InstanceService we calculate a collision free hash of the two data structures, seeing if there is a difference. If there is no difference, we don't update them. On each update we notify all subscribers about the update.
Template Service
On every SIGUSR2 being send to the template storage we can notify the websocket service. If it received a notification it will send the new templates on the next sync timeslot.
The text was updated successfully, but these errors were encountered:
Problem
Updates in Broccoli (coming from Nomad and Consul, the template or instance) are propagated to all clients with a fixed delay, independent of whether there are actual changes. This leads to a lot of communication overhead.
Solution
Architecture
Instance Service
On every update write change to the instances (e.g. changing parameters, etc.), we notify the websocket service that there is an update of the instances. The websocket service still has a scheduled thread but it will only send new instances in a new batch if it got notified. Notifications can be booleans and the websocket service can just take the current state when updating all clients.
On every update we receive from Nomad or Consul before overwriting the job and service map inside the
InstanceService
we calculate a collision free hash of the two data structures, seeing if there is a difference. If there is no difference, we don't update them. On each update we notify all subscribers about the update.Template Service
On every SIGUSR2 being send to the template storage we can notify the websocket service. If it received a notification it will send the new templates on the next sync timeslot.
The text was updated successfully, but these errors were encountered: