общество самит интересное Block

SilentJSON: не просто быстрый JSON-парсер для Go

Доброго дня!Этот релиз — не про очередные +10% скорости на микробенчмарках. Это про изменение подхода к тому, как Go-приложения работают с потоками данныхВ этом обновлении основное внимание было уделено корректности работы с данными: улучшена поддержка типов, стала строже проверка экранирования, доработана обработка UTF-символов.Фактически это важный этап развития библиотеки.

SilentJSON стал инструментом, который можно уверенно использовать в production, а не только экспериментировать с ним в высоконагруженных приложениях.Но сегодня я хочу рассказать не столько о самом релизе, сколько о возможностях библиотеки и о том, какие архитектурные решения можно построить на её основе.Изначально библиотека создавалась для решения вполне конкретной задачи — уменьшить накладные расходы на обработку JSON в приложениях, где работа с данными становится одним из основных ограничителей производительности.Однако со временем стало понятно, что дело не только в скорости парсинга.В традиционной схеме обработки данных часто получается примерно следующее:Получаем JSON.Декодируем его в структуры или универсальные объекты.Создаём промежуточные представления данных.Обрабатываем полученную информацию.Снова сериализуем результат в JSON.Отправляем его дальше.На каждом этапе могут появляться дополнительные выделения памяти, копирование данных и преобразования типов.Особенно заметно это становится при обработке больших объёмов информации или большом количестве одновременных HTTP-запросов.SilentJSON предлагает другой подход: по возможности работать непосредственно с исходными данными, не создавая лишних промежуточных объектов.При этом библиотека не пытается заменить все инструменты стандартной библиотеки Go.

DMCA