Топология сети

Я пишу сетевое приложение, в котором есть несколько компьютеров, обслуживающих отдельных клиентов, но сами машины должны часто общаться друг с другом. Например, несколько серверов чата. Как мне выполнить межсерверное взаимодействие с точки зрения сетевой архитектуры. Я не хочу, чтобы на каждом сервере было открыто соединение со всеми остальными серверами. Любые идеи, указатели или предложения помогут. Как клиент-разработчик, я новичок в любом из них. Спасибо!

2 ответа

Решение

Почему вы не хотите, чтобы на каждом сервере было открыто соединение со всеми остальными серверами? Вы всегда можете установить 2 NIC на каждом сервере. Один NIC будет обслуживать клиентов, а другой NIC будет использоваться для обмена данными между серверами. Другой вариант - создать виртуальные локальные сети, но я до сих пор не понимаю, почему вы не хотите, чтобы на каждом сервере было открыто соединение со всеми остальными серверами?

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

Альтернативой может быть использование центрального сервера в качестве обмена, в основном он ждет сообщений и затем пересылает их демонам на других серверах по мере необходимости. Делать это таким образом было бы намного сложнее, чем опция db 'tho', так как вам нужно было бы иметь методы для обеспечения фактической передачи сообщений и какой-то механизм повтора, когда они не могут быть перенаправлены.

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