Содержание
Познавательно о PGM протоколе / Хабр
В данной статье мне хотелось бы рассказать о самом популярном протоколе, обеспечивающем надежную доставку сообщений мультикаста. Этот протокол называется PGM (pragmatic general multicast). Другие надежные протоколы поверх мультикаста (IP Multicast) такие как LBT-RM (от 29west) и SmartSockets (от TIBCO Software) являются, так или иначе, модификацией или реализацией PGM.
Как и многие другие хорошие нововведения в сетевом программном обеспечении и оборудовании, спецификация PGM зародилась внутри Cisco Systems. Основная проблема, которую пытались решить в процессе стандартизации надежного мультикаста это контроль и зашита от заторов в сети. Заторы обычно могут произойти из-за сообщений, которые заведомо не смогут быть обработаны слушателями или избытка служебных пакетов которые снижают полезную пропускную способность протокола.
Принципы, используемые в TCP, благодаря которым интернет работает эффективно, не подходят для мультикаста. Протокол TCP позволяет динамически менять количество данных, которые были отправлены, но еще не были подтверждены (transmission window) так чтобы отправитель TCP сообщений мог подстраиваться под слушателя. Понятно, что это не годится в случае, когда слушателей много, а отправитель один.
Типы пакетов
Для начала определимся с терминологией. Протокол содержит следующие типы пакетов:
ODATA – полезные данные, посылаемые через мультикаст (IP Multicast)
NAK – пакет с негативным подтверждением, посылается уникастом (обычно UDP) слушателем который обнаружил пропавший ODATA следующему узлу дерева пути
NCF – подтверждение получения NAK, который узел дерева отправляет мультикастом всем слушателям в подсети в которой NAK был получен
RDATA – пакет данные которого дублируют ODATA, публикуемый отправителем на мультикаст топике в ответ на полученный NAK
SPM – сообщения пути и хертбиты, пакеты публикуемы по мультикаст через равные промежутки времени и в отсутствие ODATA пакетов
Основные особенности протокола
Давайте рассмотрим такой пример: у нас есть сетка на 100 тачек, каждая из которых имеет самое разное железо и операционную систему. Мы разрабатываем серверное приложение, которое рассылает сообщения через разные малые интервалы времени (например, цену акции) приложениям которые запушены на этих тачках. Использовать в этом случае транспортные уникаст протоколы, значит производить копирование данных для каждого клиента. Сложность отправки пакета будет расти линейно при увеличении числа подписчиков. Мультикаст это как раз та замечательная технология, которая позволит отправить один пакет нескольким слушателям, произведя всего одну запись в буфер сокета на стороне отправителя, копирование пакета произойдет на роутере. Таким образом, увеличение количества слушателей не будет влиять на время доставки пакета.
Здорово, но тут есть проблема: мультикаст также как и UDP не гарантирует доставку и порядок пакетов. Даже далеким от торговли на бирже людям, думаю не трудно догадаться, что случится с приложением, которое пропустит квоту по какому то символу. Если подписчик это робот осуществляющий автоматическую покупки\продажи по каким-то стратегиям то не получив квоту робот не узнает что цена изменилась и может произвести не выгодную сделку. Наиболее естественный способ обеспечить гарантированность доставки это использовать подтверждение полученных сообщений (positive acknowledgment) как в TCP. Но тут возникает две проблемы – первая это то, что серверу придется обрабатывать подтверждение от каждого подписчика, т е сложность опять станет линейной и вторая это большое количество мультикаста одних и тех же данных, когда пакеты часто теряются.
Протокол PGM решает первую проблему тем что, вместо подтверждения каждого полученного сообщения, этот протокол подтверждает каждое пропавшее сообщение (negative acknowledgment). Каждый пакет протокола содержит порядковый номер и PGM слушатель посылает подтверждение отправителю пакета уникастом, если обнаруживает, что один из порядковых номеров пропущен. Чтобы исключить возможность потерю последнего пакета в серии (tail-loss) PGM источник в отсутствии полезных сообщений посылает специальные пакеты — хертбиты (heartbeats) задача которых поддержать актуальный порядковый номер на стороне слушателя.
Для решения второй проблемы PGM хранит и поддерживает в актуальном состоянии дерево пути от каждого отправителя мультикаст сообщений до слушателей. Каждый узел дерева знает, откуда ему пришел пакет и в случае если лист дерева (слушатель мультикаст сообщений) обнаружил, что пакет не получен, подтверждение потерянного пакета может подняться вверх от листа к корню дерева (отправитель мультикаст сообщений). На каждом узле дерева выставляется состояние, означающее, что в подсети потерян пакет. При повторной отправке потерянный пакет может игнорироваться на узлах, где это состояние не выставлено и дойдет только до тех подсетей, где произошла потеря пакета. Поддержание дерева пути достигается благодаря сообщениям пути (path messages) которые посылаются в мультикаст группы через равные промежутки времени каждым отправителя.
Не стоит путать сообщения для поддержания актуального порядкового номера или хертбиты и сообщения пути. Хотя они дублируют информацию, которую доставляют до слушателей, но они различаются тем, что сообщения пути посылаются через равные промежутки времени, в то время как хертбиты посылаются по более сложному алгоритму. Хертбиты задаются двумя параметрами: начальным таймаутом хертбита и количеством хертбитов. Первый хертбит посылается через таймаут после последнего пакета. Второй хербит посылается через вдвое больший таймаут после предыдущего хертбита. И так пока не будет отправлено нужное количество хертбитов.
Схематически это выглядит как то так:
|____|_________|__________________|_________________________________|____
время t ->
где первая черточка это последний пакет с полезной нагрузкой, а остальные это хертбиты.
NAK шторм
Не все так гладко в PGM как это может показаться на первый взгляд. Многие кто пытается использовать PGM бросают это дело из-за проблемы известной как NAK шторм. Если мы вернемся к примеру с сетью, по которой рассылаются квоты на акции, то там NAK шторм может произойти, если один из слушателей будет слишком медленным, и не будет успевать читать данные из буфера сокета. Приходящие пакеты будут игнорироваться из-за того что буфер забит и такой клиент будет посылать много NAK пакетов (crying baby receiver). В ответ на это отправителю придется публиковать RDATA пакеты, что увеличит нагрузку на отправителе и на всех его мультикаст подписчиков, часть из которых тоже может стать медленными клиентами. Опасен NAK шторм тем, что у одного источника PGM пакетов может быть очень много слушателей. Обработав один NAK и отправив RDATA пакет, источник тут же может получить NAK на тот же ODATA пакет от другого слушателя. Плюс к этому слушатель обнаруживший потерю ODATA пакета будет посылать NAK до тех пор, пока не получит NCF. Это все может привести к значительному снижению эффективности протокола, так как большая часть пропускной способности сети будет тратиться на пересылку NAK, NCF и RDATA вместо ODATA.
Протокол PGM имеет несколько механизмов позволяющих снизить негативное влияние различного рода заторов в сети. Количество NAK, которые получает источник можно уменьшить с помощью специальных слушателей мультикаст сообщений – агрегаторов NAK (designated receiver). Такие агрегаторы слушают NAK в подсети и посылают только один NAK источнику от всей подсети. Существуют роутеры способные самостоятельно агрегировать NAK от подсети, это PGM роутеры.
Также PGM позволяет наличие специальных элементов сети (designated local repairer или designated local retransmitter), которые могут самостоятельно отвечать пакетами RDATA на NAK. Это позволяет выстраивать топологию, в которой медленные клиенты не влияли на работу слушателей из других подсетей.
Также PGM позволяет выставлять различные опции – таймауты и счетчики для подавления NAK шторма. Подбор этих таймаутов это отдельная магия, в которой и заключается вся сложность работы с PGM. На стороне слушателей это
- время которое проходит после обнаружения потери пакета до того как сгенерируется первый NAK
- время, которое проходит до повторной отправки NAK, если NCF не был получен
- время, которое проходит от получения NCF до посылки нового NAK, если RDATA не был получен
- максимальное количество NAK, которое может отправить слушатель
На стороне отправителя это
- время, которое проходит между получением первого NAK и отправкой RDATA
- время в течение, которого игнорируются дублирующие NAK после отправленного RDATA
- ограничение на темп, которым отправляются пакеты RDATA (байт в секунду)
В общем, думаю из всего вышесказанного нетрудно догадаться, почему PGM и его вариации стали так популярны при разработке систем с низким временем отклика (low-latency systems). Этот протокол имеет меньшее время отклика по сравнению с надежными протоколами, использующими позитивное подтверждение пакетов, и позволяет увеличивать количество слушателей сообщений без ухудшения времени отклика.
Вопрос для размышления. Почему GFS и Hadoop используют TCP вместо надежного мультикаста? Известный факт, что все данные реплицируются в GFS и HFS, по крайней мере, на три разных бокса. Неужели самостоятельно копировать пакеты из сокета в сокет выходит более эффективно или надежно чем реплицировать пакеты на сетевом оборудовании?
Что такое файлы PGM? Как их можно открыть? [РЕШЕНО]
Расширение файла: | PGM |
Описание типа файла: | Portable Gray Map Image |
Разработчик типа файла: | Jef Poskanzer |
Основное связанное программное обеспечение: | Adobe Photoshop |
Разработчик основного программного обеспечения: | Adobe Systems Incorporated |
Откройте ваши файлы с помощью FileViewPro File Viewer
Скачать File Opener
Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
Portable Gray Map Image файлы — это самый популярный тип файлов с расширением PGM, изначально разработанный Adobe Systems Incorporated для Adobe Photoshop. Согласно данным наших веб-серверов (анонимных пользователей), файлы PGM — наиболее популярны в China и часто используются в Windows 10. Большинство людей, ищущих информацию о файлах PGM, используют браузер Google Chrome.
Связанные разработчики и программное обеспечение
ACD Systems Canvas от Microsoft Corporation | |
GIMP от The GIMP Development Team | |
Adobe Photoshop от Adobe Systems Incorporated | |
ACD Systems ACDSee от ACD Systems | |
IrfanView от Open Source |
Топ языков пользователей PGM
Топ файловых браузеров, используемых пользователями PGM
Подходит для установки на ПК?
Подходит для установки на мобильное устройство?
Топ стран, в которых используют файл PGM
Топ операционных систем среди пользователей
Windows 7 | Windows 10 | Windows 8. 1 | Windows XP |
Связанные операционные системы
Windows | |
Mac | |
Linux | |
iOS | |
Android |
Прочие типы файлов, связанные с файлами PGM
расширение | Разработчик типа файла | Категория файла | Описание типа файла |
---|---|---|---|
.F4V | Adobe Systems Incorporated | Видео файлы | Flash MP4 Video File |
.PXR | Pixar | Файлы растровых изображений | Pixar Image File |
.IMP | Lotus Software | Файлы таблиц | Improv Spreadsheet File |
.Q9R | Flaming Pear Software | Файлы плагинов | Glitterato Photoshop Plug-In |
.8BP | Adobe Systems Incorporated | Файлы плагинов | Adobe Photoshop Plugin |
. J | Oracle Corporation | Файлы разработчика | Java Source File |
.CMX | Corel | Файлы векторных изображений | Corel Metafile Exchange Image File |
.APF | Adobe Systems Incorporated | Необычные файлы | Adobe Profile File |
.DCX | ZSoft Corporation | Файлы растровых изображений | Zsoft Multi-Page Paintbrush File |
.DV | Roxio | Видео файлы | Digital Video File |
НАЧАЛО
Совместима с Windows 2000, XP, Vista, 7, 8 и 10
Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
«FileViewPro позволяет открыть любой файл с помощью одной программы, избавляя вас от необходимости поиска по папкам с файлами, разбросанным по всему жёсткому диску. FileViewPro позволяет открыть файл любого типа, будь то документ, электронная таблица, презентация или файл другого типа».
— Обзор Softonic
*Файлы, которые не поддерживаются, могут быть открыты в двоичном формате.
Copyright © 2010-2023 FileViewPro
Что такое металлы платиновой группы и почему они важны?
Примечание редактора: Это первая часть из шести частей, посвященных PGM, которые будут проходить по вторникам.
Металлы платиновой группы (МПГ) представляют собой семейство из шести структурно и химически сходных элементов, которые наиболее ценятся за их широкое применение в промышленности, медицине и электронике. Эти универсальные металлы играют важную роль во многих продуктах, которые мы используем каждый день.
Платина (Pt) : Платина, вероятно, является наиболее известным из МПГ из-за ее использования в ювелирных изделиях, но ее основное применение — производство каталитических нейтрализаторов, а также другие промышленные применения. Платина имеет высокую температуру плавления и температурную стабильность, обладает высокой коррозионной стойкостью к окислению и является хорошим катализатором окисления. Платина биологически совместима и имеет множество важных применений в медицине.
Палладий (Pd) : Палладий также используется для изготовления ювелирных изделий, хотя он не так популярен, как платина. Уникальным качеством палладия является его способность поглощать водород, который находит применение в химических процессах, требующих водородного обмена между двумя реагентами, например, при производстве сырья для синтетического каучука и нейлона. Палладий химически стабилен и, как и платина, обладает отличными каталитическими свойствами, поэтому его можно использовать в качестве заменителя более дорогой платины в каталитических нейтрализаторах.
Родий (Rh) : Родий, еще один высокоактивный катализатор, широко используется в системах контроля выбросов транспортных средств. Родий также используется для изготовления стекла благодаря его высокой температуре плавления и температурной стабильности.
Иридий (Ir) : Иридий является самым редким и наиболее коррозионностойким из МПГ. Он очень плотный и обладает высокой химической и термической стабильностью. Как и платина, иридий биологически совместим и имеет множество медицинских применений.
Рутений (Ru) : Несмотря на хрупкость, рутений очень твердый и является хорошим легирующим агентом для платины и палладия. Как и другие МПГ, он имеет высокую температуру плавления и превосходные каталитические свойства. Рутений используется в электротехнической и электрохимической промышленности благодаря своим токопроводящим свойствам и долговечности.
Осмий (Os) : Будучи самым плотным и твердым из группы, осмий часто сплавляют с другими МПГ, такими как платина и иридий. Осмий также является отличным проводником электричества и эффективным катализатором окисления. Общие области применения осмия включают топливные элементы и криминалистику.
Это лишь некоторые из множества применений металлов платиновой группы. В будущих постах будет более подробная информация о некоторых важных способах, которыми PGM влияют на нашу жизнь. Например, знаете ли вы:
- Испытывается радиоактивный изотоп палладия для лечения рака груди и простаты.
- Платина и иридий используются в ушных и ретинальных имплантатах.
- Помимо каталитических нейтрализаторов платина применяется в других автомобилях, включая кислородные датчики и свечи зажигания.
- Палладий используется практически во всей электронике
- Иридий используется для изготовления кристаллов высокой чистоты, которые находят применение в медицине, нефтяной промышленности и в сфере безопасности.
Поскольку у них так много применений, PGM пользуются большим спросом, а добыча сама по себе не обеспечивает достаточного предложения. По данным Геологической службы США, в 2011 году переработанная платина, палладий и родий, полученные из ювелирных изделий, электронного оборудования и каталитических нейтрализаторов, составляли значительную долю от общего объема мировых поставок, до 24% от общего объема поставок платины и палладия и около 27%. % от общего предложения родия. По оценкам, в 2013 году во всем мире из нового и старого лома было извлечено 155 000 кг МПГ, в том числе около 56 000 кг МПГ в Северной Америке.
Пирометаллургические процессы предпочтительны для переработки материалов, содержащих МПГ, таких как каталитические нейтрализаторы, из-за высокой степени извлечения. Первичные МПГ должны быть отделены от основных металлов и примесей. Технология рентгеновской флуоресценции с дисперсией по длине волны (WDXRF) хорошо зарекомендовала себя для анализа восстановленного металла в любом сценарии, поскольку она обеспечивает высокую чувствительность вплоть до элементов с низким атомным номером, высокую воспроизводимость и селективность по элементам. WDXRF также популярен благодаря широкому динамическому диапазону и способности достигать уровней производительности, необходимых для обычных промышленных приложений.
Читайте этот блог в следующие 5 вторников, чтобы узнать больше о Platinum Metals Group.
Спецификация формата PGM
Спецификация формата PGM
Обновлено: 09 октября 2016 г.
Содержание
ИМЯ
pgm — формат изображения в градациях серого Netpbm
ОПИСАНИЕ
Эта программа является частью Netpbm.
Формат PGM является форматом файлов в градациях серого с наименьшим общим знаменателем.
Он спроектирован таким образом, чтобы его было чрезвычайно легко изучать и писать для него программы.
(Это настолько просто, что большинство людей просто реконструируют его.
потому что это проще, чем читать эту спецификацию).
Изображение PGM представляет собой графическое изображение в градациях серого. Есть много
используемые форматы псевдо-PGM, где все указано здесь, за исключением
для значения отдельных значений пикселей. Для большинства целей PGM
изображение можно просто представить как массив произвольных целых чисел, и все
программы в мире, которые думают, что обрабатывают изображение в градациях серого
можно легко обмануть, заставив обработать что-то другое.
Название «PGM» является аббревиатурой от «Portable Gray Map».
Одним из официальных вариантов PGM является маска прозрачности. Прозрачность
Маска в Netpbm представлена изображением PGM, за исключением того, что вместо
интенсивности пикселей, есть значения непрозрачности. См. ниже.
ФОРМАТ
Определение формата следующее. Вы можете использовать библиотеку подпрограмм libnetpbm C для удобного
и точно читать и интерпретировать формат.
Файл PGM состоит из последовательности одного или нескольких изображений PGM. Есть
никаких данных, разделителей или отступов до, после или между изображениями.
Каждое изображение PGM состоит из следующего:
- «Магическое число» для идентификации типа файла.
Магический номер изображения pgm — это два символа «P5». - Пробелы (пробелы, TAB, CR, LF).
- Ширина, отформатированная как десятичные символы ASCII.
- Пробел.
- Высота, снова в десятичном формате ASCII.
- Пробел.
- Максимальное значение серого (Maxval), снова в десятичном формате ASCII. Должно быть меньше
чем 65536, и больше нуля. - Одиночный пробел (обычно перевод строки).
- Растр строк высоты в порядке сверху вниз. Каждый ряд
состоит из значений ширины серого в порядке слева направо. Каждый серый
value — это число от 0 до Maxval, где 0 означает черный цвет, а Maxval
быть белым. Каждое значение серого представлено в чистом двоичном виде либо
1 или 2 байта. Если Maxval меньше 256, это 1 байт.
В противном случае это 2 байта. Старший байт идет первым.Ряд изображения расположен горизонтально. Столбец вертикальный. Пиксели
на изображении являются квадратными и смежными.Каждое значение серого — это число, пропорциональное интенсивности
пиксель, скорректированный в соответствии с рекомендацией ITU-R BT.709, гамма-передача
функция. (Эта передаточная функция определяет гамма-число 2,2 и
имеет линейный участок для малых интенсивностей). Нулевое значение
поэтому черный. Значение Maxval представляет белый цвет CIE D65, а
самое интенсивное значение в изображении и любом другом изображении, к которому изображение
можно было бы сравнить.Диапазон значений канала BT.709 (16-240) не имеет отношения к PGM.
Обратите внимание, что обычное отличие от формата PGM состоит в том, что
значение серого должно быть «линейным», т. е. как указано выше, за исключением
без регулировки гаммы. pnmgamma принимает такой ПГМ
вариант в качестве входных данных и производит настоящий PGM в качестве выходных данных.Еще одна популярная вариация PGM — замена более новой передачи sRGB.
функция для BT.709 один. Вы можете использовать pnmgamma для преобразования между
это изменение и настоящий PGM.В варианте маски прозрачности от PGM значение представляет
непрозрачность. Он пропорционален доле интенсивности
пиксель, который будет отображаться вместо основного пикселя. Ну и что
обычно означает, что белый представляет собой полную непрозрачность и что обычно
означает, что черный представляет полную прозрачность. В промежутке вы бы
вычислить интенсивность составного пикселя «под» и
пиксель «сверху», как под * (1-(alpha/alpha_maxval)) + над *
(альфа/альфа_максвал). Обратите внимание, что функция передачи гамма-излучения отсутствует.
в маске прозрачности.
Строки, начинающиеся с «#», могут быть комментариями, как и
с ПБМ.
Обратите внимание, что вы можете использовать pamdepth для преобразования между
формат с 1 байтом на значение серого и формат с 2 байтами на серый
ценить.
Все упомянутые здесь символы закодированы в ASCII.
«новая строка» относится к символу, известному в ASCII как Line
Подача или НЧ. Символ «пробел» — это пробел, CR, LF,
TAB, VT или FF (то есть то, что стандартная функция ANSI C isspace()
называет пустым пространством).
Обычный PGM
На самом деле существует другая версия формата PGM, которая
редко: «простой» формат PGM. Формат выше, который обычно
считается нормальным, известен как «сырой» формат PGM.
См. pbm для некоторых комментариев о том, как просто
и необработанные форматы связаны друг с другом и с тем, как их использовать.
Разница в простом формате:
- В файле ровно одно изображение.
- Магическое число P2 вместо P5.
- Каждый пиксель в растре представлен десятичным числом ASCII.
(произвольного размера). - Каждый пиксель в растре имеет пробелы до и после него. Там должно
быть по крайней мере один символ пробела между любыми двумя пикселями, но есть
не является максимальным. - Ни одна строка не должна быть длиннее 70 символов.
Вот пример небольшого изображения в простом формате PGM.
Р2 # feep.pgm 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
В конце каждой из этих строк есть символ новой строки.
Программы, которые читают этот формат, должны быть максимально снисходительны,
принимать все, что отдаленно похоже на PGM.
ТИП ИНТЕРНЕТ-МЕДИА
Тип интернет-носителя (также известный как тип MIME, тип контента) для PGM не указан.
зарегистрирован в IANA, но значение image/x-portable-graymap
является обычным.
Обратите внимание, что PNM Internet Media Type image/x-portable-anymap
также применяется.
ИМЯ ФАЙЛА
Нет требований к имени файла PGM, но соглашение
использовать суффикс «.pgm». «pnm» также является условным, т.к.
случаи, когда различие между конкретными подформатами PNM не
удобный.
СОВМЕСТИМОСТЬ
До апреля 2000 г. файл PGM в необработанном формате не мог иметь maxval больше
чем 255. Следовательно, он не может иметь более одного байта на выборку. Старый
программы могут зависеть от этого.
До июля 2000 года в файле PGM могло быть не более одного изображения. Как
в результате большинство инструментов для обработки файлов PGM игнорируют (и не читают)
данные после первого изображения.