Вопрос

В настоящее время я провожу тестирование производительности с помощью бесплатного кондитерского DHT.Freepastry — это DHT с открытым исходным кодом, созданный на Java.

Цель состоит в том, чтобы отслеживать влияние на DHT, когда определенное количество узлов выходит из строя.Моя проблема в том, что я не уверен, как лучше всего устранить узлы.В настоящий момент каждый узел использует отдельный порт на моей машине.Я уничтожаю эти узлы, используя метод Destroy() из Pastry API. http://www.freepastry.org/FreePastry/javadoc21a3/rice/pastry/PastryNode.html#destroy()

Я обеспокоен тем, что это может быть нереалистично при моделировании сбоя узла, и стоит ли мне уничтожать узлы другим способом, например, с помощью tcpkill?

Я использую Mac OS X Snow Leopard и мне было бы интересно услышать какие-либо предложения?

Это было полезно?

Решение

Существуют разные формы отказов узлов.

Наиболее распространенным из них является просто переход узла в автономный режим, поскольку приложение, на котором выполняется DHT, закрывается.

Изменение динамического IP-адреса домашнего интернет-соединения, по сути, имеет несколько иной эффект, поскольку оно делает недействительными все существующие записи таблицы маршрутизации, но общее количество узлов не уменьшается.Вы теряете один и получаете новый.

Другая распространенная проблема — проблемы с доступностью из-за NAT.Видимость этого узла может зависеть от типа NAT и того, имели ли вы с ним недавний контакт.

Последствия оттока на самом деле могут быть весьма сложными.Прежде всего, время безотказной работы отдельных узлов обычно подчиняется экспоненциальному распределению.Многие из них доступны только на короткое время, и очень немногие остаются стабильными в течение нескольких дней или месяцев.

Предположим, что у вас есть стабильное ядро ​​из узлов со средним и долгоживущим сроком службы, которые фактически составляют 90% сети.Постоянное появление и исчезновение 10% одних и тех же узлов вызовет некоторый дополнительный трафик, но они не причинят большого вреда сети.У вас много оттока, но мало влияния.

Если 10% совокупности узлов отключаются через 10 минут и заменяются совершенно новым набором узлов из неактивного пула, то вы, по сути, теряете 10% своей избыточности каждые 10 минут.Если репликация данных между узлами не поспевает за этим или даже не существует, ваши данные будут разрушаться экспоненциально.У вас также много оттока, но огромное влияние.

Я даже не уверен, какая симуляция лучше всего отразит реальность.Я думаю, что наиболее реалистичным ограничением является наличие фиксированного пула потенциал узлы.Это компьютеры, на которых установлена ​​реализация DHT.

Тогда у каждого узла будет профиль времени, в течение которого он в среднем будет оставаться включенным и как долго в среднем он будет неактивным (где эти два параметра частично коррелируют друг с другом).узлы с длительным временем безотказной работы обычно не имеют длительного простоя, поскольку они, вероятно, всегда включены).И каждый узел действует на эти параметры независимо.На самом деле время суток также играет роль, как можно легко увидеть здесь: http://dsn.tm.uni-karlsruhe.de/english/2936.php

Так...Короче говоря, простой запуск и уничтожение нескольких узлов случайным образом не даст вам реалистичного результата об устойчивости DHT, поскольку влияние будет сильно различаться.

Что касается технической части, вы, вероятно, захотите запустить их все на одной виртуальной машине Java и использовать многопоточный или неблокирующий ввод-вывод, чтобы уменьшить накладные расходы на запуск каждого экземпляра на отдельной виртуальной машине.Это также позволит вам более реалистично планировать время их включения и простоя.

Поскольку вы можете назначить несколько IP-адресов одному компьютеру, вы сможете запускать сотни тысяч узлов на компьютере, просто основываясь на количестве IP/портов.Но потребление ресурсов этим процессом в конечном итоге приведет к зависанию даже самой быстрой системы, поскольку на самом деле очень немногие реализации DHT реализованы для такого хорошего масштабирования.

Поэтому вам, вероятно, придется запустить это в сети с несколькими тысячами узлов на компьютер, чтобы получить что-то близкое к реалистичному.

Либо так, либо вы прибегаете к математическому моделированию вместо реальных реализаций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top