Vertx WebClient общий или один для нескольких статей?

Я использую vert.x в качестве шлюза api для маршрутизации вызовов к нижестоящим службам.

На данный момент я использую один экземпляр веб-клиента, который используется в нескольких версиях (вводится через guice).

Имеет ли смысл для каждой статьи иметь собственный веб-клиент? Поможет ли это повысить производительность? (Каждый мой экземпляр шлюза запускает 64 вершины и обрабатывает примерно 1000 запросов в секунду)

Каковы плюсы и минусы каждого подхода?

Может ли кто-нибудь помочь выяснить, какова идеальная стратегия для того же?

Благодарность

1 ответ

Решение

Vert.x оптимизирован для использования одного WebClientза статью. Совместное использование синглаWebClientЭкземпляр между потоками может работать, но это может отрицательно сказаться на производительности и привести к тому, что некоторый код будет выполняться в "неправильном" потоке цикла событий, как описано Жюльеном Вьет, ведущим разработчиком Vert.x:

Таким образом, если вы разделяете веб-клиент между вертикалями, тогда ваша статья может повторно использовать ранее открытое соединение (из-за объединения), и вы получите обратные вызовы в цикле событий, которых не ожидаете. Кроме того, в веб-клиенте есть синхронизация, которая может стать неудовлетворительной при интенсивном использовании из разных потоков.

Кроме того, документация Vert.x дляHttpClient, который является базовым объектом, используемым WebClient, явно заявляет, что не следует разделять его между контекстами Vert.x (каждая Вертикаль получает свой собственный Контекст):

HttpClient можно использовать в статье или встроить.

При использовании в Verticle, Verticle должен использовать свой собственный экземпляр клиента.

В более общем смысле, клиент не должен использоваться в разных контекстах Vert.x, так как это может привести к неожиданному поведению.

Например, поддерживающее соединение будет вызывать клиентские обработчики в контексте запроса, открывшего соединение, последующие запросы будут использовать тот же контекст.

Другие вопросы по тегам