Синтаксис:
$Z [Блок]|
Направление команды:
Хаб ---> Клиент
Описание:
Команда $Z используется расширением ZLine протокола NMDC.
Данная команда была предложена Jove и обсуждается в основном на DCDev хабе.
Команда предназначена для сжатия блоков команд.
Команда $Z [Блок]| будет развёрнута в строку: $Search ... |$MyINFO...|...
Используется простое zlib сжатие и дополнительное экранирование. Символ «\» экранируется так: «\\», а символ «|» так: «\P». Этого достаточно, чтобы использовать взамен bzip.
Данную команду следует использовать только в одном направлении хаб -> клиент. В любом другом направлении она только создаст лишнюю нагрузку.
Клиент должен поддерживать эту команду. Он сообщает об этом хабу путём отсылки в команде $Supports флага ZLine
Оценка:
Проводились тесты для оценки эффективности данного дополнения.
Программа тестирования работала следующим образом: сначала пользователи соединялись, потом пользователи генерировали события:
Задержки между соединениями и событиями могут варьироваться. Настройки по умолчанию были выбраны следующими:
100 мсек между входами (10 соединений/сек) и 50 мсек между событиями (20 событий/сек).
Короткий тест (приблизительно 700 сек) со 100 пользователями.
Без ZLine
Общий трафик: Входящий 1986998, Исходящий 58506319
Среднее за 718 секунд: Входящий 16.140272 кб/с, Исходящий 475.764798 кб/с
С ZLine
Общий трафик: Входящий 1549938, Исходящий 15913487
Среднее за 719 секунд: Входящий 16.159448 кб/с, Исходящий 165.737719 кб/с
Тест с 1000 пользователями на хабе. Продолжительность теста примерно 22000 секунд (чуть больше 6 часов) в обоих случаях.
Без ZLine
Общий трафик: Входящий 58562006, Исходящий 18932614671
Среднее за 28078 секунд: Входящий 16.682808 кб/с, Исходящий 5393.331647 кб/с
С ZLine
Общий трафик: Входящий 48040395, Исходящий 3987767021
Среднее за 22318 секунд: Входящий 16.989433 кб/с, Исходящий 1410.093335 кб/с
Тест с 4000 пользователями на хабе. Продолжительность теста примерно 5000 секунд в обоих случаях.
Без ZLine
Общий трафик: Входящий 11675512, Исходящий 14732322239
Среднее за 5472 секунд: Входящий 16.910506 кб/с, Исходящий 21337.779879 кб/с
С ZLine
Общий трафик: Входящий 11102441, Исходящий 2805387234
Среднее за 5042 секунд: Входящий 17.197069 кб/с, Исходящий 4343.892306 кб/с
Ниже приведены немного другие тесты. Тесты с другими сообщениями. Основные сообщения те же самые, но кроме этого есть сообщения с произвольным числом символов. На результат влияют большие сообщения, которые труднее сжать.
1000 пользователей:
Без ZLine
Общий трафик: Входящий 26426307, Исходящий 8802244496
Среднее за 9358 секунд: Входящий 22.585492 кб/с, Исходящий 7522.500261 кб/с
С ZLine
Общий трафик: Входящий 27070505, Исходящий 4003114560
Среднее за 9359 секунд: Входящий 22.837603 кб/с, Исходящий 3376.263386 кб/с
Выводы:
Эффективность сжатия варьируется от 50% до 80% и зависит от количества пользователей и типа трафика. Данную команду нельзя применять для того, чтобы сжимать всё подряд. Хаб должен находить баланс между шириной полосы пропускания и ресурсностью процессора и памяти. В сущности, сжимаются только блоки команд, посылаемые клиентам. Поэтому нагрузка на процессор и память почти незаметна.
Хабы, поддерживающие данное дополнение:
- Aquila
- BDCH (планируется)
- DDCH
- tkhub
- YnHub (планируется)
- NitroHub (> 0.7)
Клиенты, поддерживающие данное дополнение:
- DCDM++
- iDC++
- McDC++
- Z++
Оригинал (by Setuper): http://mydc.ru/index.html?showtopic=915&view=findpost&p=19404