Я написал свой веб-сервис на Java, используя vert.x, и мне кажется, что мне не хватает нескольких вещей, касающихся работы инфраструктуры.
Я развернул одну вертикалку, назовем ее HttpVerticle. внутри есть одна маршрутизация (router.post("/dowork").handler(new MyHandler())
)
MyHandler выполняет очень быстрое действие предварительной обработки, а затем отправляет сообщение на шину событий.
Существует вторая вертикаль WorkerVerticle, которая развертывается при развертывании HttpVerticle и использует шину событий для сообщений от MyHandler. Здесь есть код, который может быть длинным (ожидание вызова API REST / запись в БД / запись в S3 и т. Д.), И когда это будет сделано, я просто возвращаю message.reply()
в MyHandler
Когда я пытаюсь работать с ~ 150 одновременными запросами, это выглядит хорошо, но при попытке перейти на 200 и более, я начинаю получать тайм-ауты.
Я увеличил количество экземпляров для HttpVerticle, и это помогло.
Что я не понимаю, почему?
Поток HttpVerticle в основном не делает ничего, кроме записи в шину, поэтому он должен иметь возможность отвечать даже на 1000 запросов, не так ли?
Мой второй вопрос здесь, если мой шаблон Handler-> write to bus-> Verticle потребление из шины является правильным, потому что я видел второй шаблон просто использования Handler, без использования шины событий