pro-dev, сколько у вас человек на проекте? Есть ли функционал который вы бы хотели масштабировать отдельно? Тут просто так не ответишь. Нужно понимать потоки данных, сколько запросов и как они распределены, какая нагрузка и еще много вещей. Общий принцип я описал.
Выделение кода в отдельное приложение (отдельный процесс) делаем
или по организационным причинам: разделение кода для упрощения понимания или разделение кода между разными людьми/командами или требования безопасности/юридические требования.
или это явно разные модели обработки (например АПИ для пользовательских запросов и фоновая агрегация, в этом случае у них разный хост-процесс: веб-сервер и фоновый сервис)
или по причинам нехватки ресурсов.
Надо понимать что практически любое разделение кода несет за собой организационные издержки (нужно приложить больше усилий для понимания) и если сервисы должны между собой общаться, то издержки на межсетевое взаимодействие. Разделяя код в разные процессы теряется возможность очень быстро общаться через общую память.
Павел Сахаров, понятно. Мне в голову приходит либо решение с избыточностью, когда делается широковещательная рассылка на все консьюмеры, а консьюмер откидывает все сообщения кроме своих. Но недостаток этого решения понятный - широковещательная рассылка. Либо использовать что-то что не rabbit.
Может прямое подключение сервисов в центр по tcp или что-то еще. А эти воркеры могут получать асинхронно сообщения?
Евгений Ромашкан, если вы внимательно посмотрите мой ответ, то не найдете в нем слова "микросервис" ни разу. Это слово появляется только в комментах. Тут проблема в том что терминология сильно "плавает". Кто-то считает что выделение кода в отдельный процесс уже микросервис, потому что это модное слово. Я называю это "сервис". Кому ближе linux сказали бы что это демон.
Монолит тоже масштабируется, и монолит не означает что все приложение обязано быть в одном процессе.
С этим согласен, у нас на проекте как раз такой подход рабочий
DevMan, я не критикую. Комментарий скорее для тех кто только начинает разбираться во всем этом. Основная идея статьи же в том, что прежде чем что-то использовать, пойми какую задачу это решает. И пойми чем ты заплатишь за использование этой технологии.
Tim, о, вам только кажется что помог. На самом деле, лучший совет вам дал #. Начните делать что-то реальное и когда получите первые деньги за работу, тогда и решите, помог ли.
longclaps, да я понял о чем вы. Но у автора вопроса проверяется только новый отрезок на пересечение с существующими. Если ему надо проверять весь массив на пересечение друг с другом, то можно модифицировать.