Я пишу приложение узла, которое имеет две основные задачи. Предположим, что задача A (которая читается с уровня кэширования и отвечает на запросы) и B (который является сервером манипуляции, отвечающим на запросы, которые не обрабатываются задачей A). В будущем я знаю, что задача A будет более широко используемой задачей, а задача B будет ограничена новыми запросами (почти 10% от общей нагрузки).Связь между различными серверами приложений в многоуровневом приложении
Учитывая эту ситуацию (а также различную природу задачи A (интенсивность сети) и B (интенсивность процессора)), я думал о развертывании задачи A и задачи B на разных серверах, чтобы их можно было масштабировать или вниз, независимо от другого.
Этот подход подходит для описанного сценария? Если да, то каковы общие практики для связи между различными уровнями задачи А и В. Предполагая, что все запросы должны быть немедленно выполнены (исключение отсроченного исполнения с использованием очередей).
Спасибо за ваше предложение. Но дело здесь в том, что taskB никогда не будет напрямую доступен клиенту. Это всегда было бы через задачу. Я не уверен, что Apache/Nginx infront серверов приложений будет правильным способом в этом случае. Вам нужен ваш совет. Кроме того, оба сервера будут записаны в NodeJS (на данный момент). –
Хорошо, тогда это легко, выставить TaskB на другом сервере в качестве URL-адреса и вызвать его через HTTP с использованием JSON в качестве полезной нагрузки из TaskA. С JSON в NodeJS легко работать. –