?

Log in

No account? Create an account

Java Json + Deflater/Inflater

Не совсем новый функционал, но теперь это рабочий функционал.

Здесь стоит рассказать о вещах лежащих в основе.
Если рассмотреть тот-же радиус протокол(ну понятно такого протокола нет, есть куча rfc), то мы увидим, что раньше передаваемые данные старались сделать максимально компактными, особенно в вопросах заголовков, посмотрите в тот-же ipv4 протокол(не забываем про флаг security rfc3514, шутка про голубей, лично по мне, меркнет по сравнению с этим rfc).

Так вот, почти каждый, вчера сильнейше обкурившись и начавший программировать профессионально под веб, знает что такое JSON.

Ну а старым пердунам куда деваться? Пока опишешь, перепишешь все поля и их содержимое в статическую структуру - так и кони двинуть можно, не молоды ведь. Остается пользоваться более простыми вещами, пусть и расточительными.
Вот и я, вырвав несколько седых волос, решил не заморачиваться и использовать текстовый формат передачи данных - JSON. Но! первое что я сделал для оптимизации - вместо названий полей стал использовать численные идентификаторы в шестнадцатеричном формате, затем обернул все зиппом используя Dedlater и Inflater. В итоге получил существенную оптимизацию, для больших данных экономия достигает 80%.
Стоит ли говорить о том, что передача показаний(а это основное) сжимается плохо, где-то на 30%, однако передаваемые сжатые данные чаще всего весят меньше чем обычный http заголовок(который сейчас очень популярен).

Так что я не знаю, взяв любое современное решение вы непременно столкнетесь с протоколом основанным на веб(потому что для многих это предел) у которого только заголовочная часть весит больше чем все полезные данные в моей передаче.

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

Comments

Размер полезных данных в вебе обычно на порядки больше размера заголовка, потому видимо и не заморачивались. Хотя меня тоже напрягает многословность HTTP заголовка, могли бы хоть слова подобрать короче, что ли.

Забавно конечо когда для получения цифры температуры в 4 байта нужно получить заголовков в 500 байт, плюс все это поверх HTTPS. Видимо надо смотреть в сторону MQTT.

Edited at 2019-09-23 12:05 pm (UTC)
Я думаю здесь проблема не в самом HTTP протоколе, протокол отлично выплолняет свою задачу - передача гипер тектовых документов (просто текста с ссылками). Тогда и заголовки в тектсовом виде не вызывают никаких нареканий.

Проблема в тех, кто использует его вне задачи передачи гипертекста, в тех кто придумывает, распространяет и внедряет подобные идеи. Тех, кто к примеру, додумался ввести обязательную обертку в SSL даже тех ресурсов, которые не нужно защищать. И их - легион.