Я пишу сетевое приложение, в котором есть несколько машин, которые обслуживают отдельных клиентов, но сами машины должны часто общаться друг с другом. Скажем, например, несколько чат-серверов. Как мне выполнить межсерверную связь с точки зрения сетевой архитектуры. Я не хочу, чтобы у каждого сервера было открыто соединение со всеми другими серверами. Любые идеи, указатели или предложения помогут. Как клиентский разработчик, я новичок в любом из них. Спасибо!
Если связь не должна быть мгновенной, вы можете просто использовать центральный сервер базы данных для хранения сообщений (или того, что передается), а затем другие серверы могут забрать их, когда они будут готовы.
Альтернативой может быть использование центрального сервера для работы в качестве обмена, в основном сидя в ожидании сообщений, а затем перенаправляя их демонам на других серверах по мере необходимости. Сделать это таким образом было бы намного сложнее, чем опция db tho ', поскольку вам потребовались бы методы, гарантирующие, что сообщения действительно передаются, и какой-то механизм повторных попыток, когда они не могут быть отправлены.
Почему вы не хотите, чтобы у каждого сервера было открытое соединение со всеми другими серверами? Вы всегда можете установить 2 сетевых адаптера на каждый сервер. Одна сетевая карта будет обслуживать клиентов, а другая сетевая карта будет использоваться для межсерверной связи. Другой вариант - создать сети VLAN, но я до сих пор не понимаю, почему вы не хотите, чтобы у каждого сервера было открытое соединение со всеми другими серверами?