Используя интеграцию spring и zookeeper, можно реализовать лидера для выполнения таких действий, как опрос.
Однако как распределить ответственность лидера на все узлы в кластере для балансировки нагрузки?
Приведенный ниже код, как только приложение запускается, я вижу, что тот же узел поддерживает роль лидера и извлекает события. Я хочу распределить эту активность на каждый узел в кластере, чтобы лучше сбалансировать нагрузку.
Можно ли каким-либо образом запланировать каждый узел в кластере, чтобы получить лидерство и отозвать его в циклическом режиме?
@Bean
public LeaderInitiatorFactoryBean fooLeaderInitiator(CuratorFramework client) {
new LeaderInitiatorFactoryBean()
.setClient(client)
.setPath("/foofeed")
.setRole("foo");
}
@Bean
@InboundChannelAdapter(channel = "fooIncomingEvents", autoStartup = "false", poller = @Poller(fixedDelay = "5000"))
@Role("foo")
public FooTriggerMessageSource fooInboundChannelAdapter() {
new FooMessageSource("foo")
}