Распределенная система управления потоками
<dependencies>
<dependency>
<groupId>io.github.dzh</groupId>
<artifactId>dimit-core</artifactId>
</dependency>
<dependency>
<groupId>io.github.dzh</groupId>
<artifactId>dimit-zk</artifactId>
</dependency>
</dependencies>
String uri = "dimit-zk://dzh/dimit?host=127.0.0.1:2181&sleep=1000&retry=3";
DimitStoreSystem dss = DimitStores.newStoreSystem(URI.create(uri), null);
- DimitConf Определяет один контроллер потока
- ChannelGroupConf Конфигурация группы каналов
- ChannelConf Конфигурация канала
Примечание: Для справки см. модульные тесты dimit-demo/../TestZkStoreConfDemo
// инициализация dimiter и каналов выполнения
String uri = "dimit-zk://dzh/dimit?host=127.0.0.1:2181&sleep=1000&retry=3";
Dimiter dimiter = Dimiter.newDimiter(URI.create(uri), null, dimitConfId);
ChannelGroupWrapper group = demo.initChannelGroup(channelGroupConfId);
group.newChannel(ChannelConfId_1, ChannelType.SEND);
group.newChannel(ChannelConfId_2, ChannelType.SEND);
// выбор
List<ChannelWrapper> selected = group.select(TagA, TagB);
V result = null;
for(ChannelWrapper channel : selected) {
try{
result = channel.call(new ChannelCallable<V>() {
// TODO запрос
...
});
// TODO парсинг результата
...
break;
} catch(RateLimiterException e){
LOG.info(e.getMessage(), e);
} catch(InvalidChannelException e){
LOG.error(e.getMessage(), e);
} catch(Exception e){ // или break
LOG.error(e.getMessage(), e);
}
}
``````markdown
// завершение программы
dimiter.close();
Примечание: Для справки см. модульные тесты dimit-demo/../TestDimiterDemo
.
ChannelConf
определяет max-tps
, где tps
канала равно max-tps
делённому на общее количество каналов.ChannelConf
определяет список тэгов для канала; при вызове ChannelGroupWrapper.select(...)
выбираются группы каналов, удовлетворяющие условиям.ChannelConf
определяет состояние канала ChannelStatus
; в списке доступных каналов, возвращаемых select
, PRIMARY
имеет приоритет перед STANDBY
.stat.enable=true
, по умолчанию включена); при вызове ChannelWrapper.call()
собирается информация stat
.stat
вычисляется ChannelWrapper.priority()
, которое влияет на результат select
.TODO использовать web4j
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )