Распределение подключений между Socket-серверами взаимодействующими со всеми подключениями
Всем здравствуйте, относительно недавно знакомый попросил помочь с проектом и я согласился, но пару (или уже больше?) дней назад мы наткнулись на серьёзную проблему- слишком большая нагрузка для одного сервера, а так как все придуманные мною и им решения мне не нравятся, я тут.
Принцип таков: Есть центральный сервер и три типа клиентов (из приложения, с web-сайта и внешние сервера), все клиенты созадют TCP подключения с центральным сервером, проходят авторизацию, взаимодействуют с ним (клиент первого либо второго типа отправляет пакет центральному серверу, этот сервер его обрабатывает, отправляет другой пакет нужному клиенту третьего типа, дожидается ответа, обрабатывает и его и потом отправляет ответ клиенту (который отправил пакет изначально) и возможно ещё нескольким другим клиентам первого и второго типа) и при закрытии подключения отправляют специальный пакет.
Сами понимаете что центральный сервер будет очень загружен, поэтому мы хотим сделать несколько таких серверов, как это можно сделать в нашем случае?