Оба метода одинаково жизнеспособны.
Аргументом для метода # 1 будет то, что в обычном принципе клиенты инициируют запросы, а серверы прослушивают и отвечают на них.
Аргументом для метода # 2 будет то, что точка многоадресной рассылки такова, что один хост может отправлять пакет, и он может быть получен многими клиентами (один-ко-многим), так что это должно быть противоположностью 1.
Хорошо, когда я думаю об этом, я на самом деле тянусь к # 2, инициированному сервером маяку. Проблема с # 1 состоит в том, что, скажем, клиенты транслируют маяки, и они подключаются к серверу, но сервер либо отключается, либо меняет свой IP-адрес.
Когда сервер выполняет резервное копирование и отправляет свой первый маяк, все клиенты будут уведомлены одновременно о повторном подключении, и вся ваша система будет немедленно восстановлена. При использовании # 1 все клиенты должны будут по отдельности понять, что сервер пропал, и все они начнут многоадресную рассылку одновременно, пока не подключатся обратно к серверу. Если бы у вас было 1000 клиентов и 1 сервер, нагрузка на вашу сеть в буквальном смысле была бы в 1000 раз больше, чем при методе № 2.
Я знаю, что эти сообщения, скорее всего, маленькие, и 1000 пакетов за раз ничего не значат для сети UDP, но только с точки зрения дизайна # 2 чувствует себя лучше.
Редактировать: Я чувствую, что у меня здесь развивается расстройство раздвоения личности, но я просто подумал о важном аргументе, почему # 1 будет преимуществом ... Если вы когда-нибудь хотели реализовать некоторые При естественной балансировке нагрузки или масштабировании с несколькими серверами, дизайн № 1 хорошо подходит для этого. Таким образом, первый «доступный» сервер может ответить на маяковый сигнал клиента и подключиться к нему, в отличие от # 2, где все клиенты переходят на маяковый сервер.