Завидую программистам из Twitter. Ребята решают интереснейшие задачи, работают с огромными объемами данных, используют передовые непопулярные технологии. При этом результатом их работы пользуются миллионы людей.
Блин, был бы я на их месте — с работы бы не вылазил и был счастлив.
Protocol Buffers — не такая уж непопулярная технология. Просто пользуются ей в основном разработчики баз данных (из недавних — в Riak появилась их поддержка). Даже на Хабре, по моему, проскакивали статьи о Protocol Buffers.
А теперь представь, что миллион людей пользуется твоей программой каждый день и самый мелкий баг — повод для 50 страниц флейма на форуме. Вставать ночью по звонку сервера что управляющая программа зависла и ее надо срочно чинить… Нафиг-нафиг… :-)
А вы работали с объемами хотя бы в сотни/тысячи раз меньшими? Меня порой мандраж берет когда я читаю строки «ежедневно добавляется 12 Тб данных».
Это далеко не рай, это самый настоящий ад! Когда все имеющиеся на данный момент стандартные решения перестают справляться, распределение не решает задач и приходится буквально в считанные дни делать то, на разработку чего у многих уходят просто годы.
А это и прощай личная жизнь и покой…
Самых распространенных две: google protobuf и apache thrift (по сути, разработка Фейсбука). Сравнение производительности и функциональности можно посмотреть на thrift-protobuf-compare/.
Очень просто, если штуту выпустил google, то ею пользуются десятки тысяч программистов, если мой коллега, то всего несколько людей, следовательно, первая тщательнее протестирована и содержит меньше ошибок)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесьНЛО прилетело и опубликовало эту надпись здесь
Я тоже столкнулся с этим, пришлось дописать своё расширение — всего навсего добавил обязательное строковое поле alias находящееся всегда первым.(тут подробнее)
есть реализации на as3/с++/java — компиляторы классов из .proto переписывать не пришлось, только базовые классы — вернее методы де/сериализации
Странно что не Thrift ибо он как и Hadoop от апачи.
Как активный пользователь Thrift могу сказать — это действительно великолепная библиотека которая упрощает хранение/обработку логов. Кроме того Thrift идеально подходит для RPC, межпроцессорного взаимодействия.
Мне тоже было интересно. Как раз подумал, почему ProtoBuffers, а не Thrift, потому как недавно анализировал варианты бинарных протоколов для одного из проектов. Потом пошёл покурить и подумал. Видимо потому что от Гугла :( Похоже Апачей больше не любят.
И ещё. Недавно Твиттер сообщил, что переписал часть своей инфраструктуры на Scala. С 60-процентной вероятностью могу утверждать, что в качестве основы обмена сообщениями был выбран проект Akka, который очень хорошо дружит с Netty, который в свою очередь из коробки поддерживает Google Protocol Buffers. Я пробовал и знаю. Так то.
У Thrift есть недостатки работы с большими пакетами данных — они должны полностью помещаться в память. В силу этого проект Cassandra собирается перейти к использованию Apache Avro.
Следует также упомянуть, что Protocol Buffers поддерживает версионность интерфейсов «из коробки». Это очень важно в тех случаях, когда вы не можете просто взять и остановить всю систему, чтобы обновить каждый компонент для работы с новым протоколом или общим интерфейсом.
Бэкенд Twitter перешёл на Protocol Buffers