Google открыл (http://google-opensource.blogspot.com/2008/07/protocol-buffe... для всеобщего пользования RPC (http://ru.wikipedia.org/wiki/Remote_Procedure_Call) протокол обмена данными Protocol Buffers (http://code.google.com/p/protobuf/). <i> «Практически все внутри Google использует Protocol Buffers»</i>, написано в FAQ (http://code.google.com/apis/protocolbuffers/docs/faq.html). <i> «Мы бы хотели сделать открытыми многие другие наши проекты, но для этого мы должны были прежде опубликовать Protocol Buffers»</i>.Google использует множество различных типов данных, которые передаются в виде сообщений между серверами. Большинство из них имеют иерархическую структуру, которую необходимо представлять в определенном виде. Использование XML (http://ru.wikipedia.org/wiki/Xml) в этом случае неэффективно, так как когда сеть и узлы работают на полную мощность, обработка XML отнимает слишком много ресурсов. Кроме того, код для работы с деревом DOM (http:/...
URL: http://google-opensource.blogspot.com/2008/07/protocol-buffe...
Новость: http://www.opennet.me/opennews/art.shtml?num=16867
они json что ли изобрели? двоеточие на равно поменяли? или я все-же чего-то не понял?..
Это они тикль изобрели.Так у гугла
person {
name = "John Doe"
email = "jdoe@example.com"
}А так на тикле
person {
name "John Doe"
email "jdoe@example.com"
}То есть в таком виде это будет тиклевский код и обрабатывается интерпретатором.
Если заменить фигурные скобочки на простые, то получится лисп, тоже позволяет строку интерпретировать как код. Интерпретаторы есть на чем угодно от С до яваскрипт.
Кстати, в AOL Web Server давно уже реализована возможность посылать сообщения, представляющие собой тиклевский код (именно код, не только данные, что предоставляет очень широкие возможности). А первая реализация для тикля, которую я видел, сделана еще в далеких 90-х и на ней, что интересно, написан вариант системы репликации постгреса (притом, похоже, единственный, имеющий математическое описание).
person {
name = "John Doe"
email = "jdoe@example.com"
}
это лишь описание структуры. потом на основе него строятся парсеры под бинарные форматы.
они говорят, что такая запись будет в бинарном виде занимать 28 байт. это по два байта оверхеда на поле. и парсится за 100нс.
> По словам Google, Protocol Buffers от трех до десяти раз компактнее при выигрыше в
> скорости от 20 до 100 раз, по сравнению с XMLКстати да, пользуясь случаем передаю отдельные приветы жабберу с его пухлыми XML-ками :)
Не совсем. Они ввели язык для определения типов сообщенией(.proto-файлы), он действительно схож с JSON, но это же не всё :) Далее, так как просто такой язык - байан и неудобно, то написали для него маппер на классы C++/Java/etc(в их терминологии компилятор) с возможностью сериализации в бинарный вид. Далее, поддерживается обратная совместимость форматов - т.е. можно ввести новые поля и ничего не сломается, + еще на базе этого формата гугловцы сделали RPC.
Вроде немало, а по удобству+скорости=качеству - совсем хорошо получается :)
Скомпилированый жсон да и сериализуемые классы. Как по мне жсон прикольнее.
> они json что ли изобрели? двоеточие на равно поменяли?и траффик уменьшили в 10 раз. Траффик == деньги.
>и траффик уменьшили в 10 раз. Траффик == деньги.Просто если сервак при прочих равных сможет в 10 раз больше, значит будет надо вдесятеро меньше серверов.Тут все просто.А XML сцуко сложный в парсинге и вообще обладает рядом неприятных свойств.Скажем размер записи вообще заранее неизвестен.И если вдруг запись весит гиг а нам в облом столько парсить - заранее узнать что нас ждет нельзя.А значит парсер будет колупать весь гиг, медленно и печально.XML хорош для некоторых вещей, но для некоторых других он выглядит как микроскоп при забивании гвоздей.
Интересно, чем Protocol Buffers лучше ASN.1 с BER, DER и PER ?
Похоже, взяли разумные идеи из CORBA и реализовали как надо.
До ICE ( который Internet Communication Engine ) им еще далеко.
Вы, парни (и девушки) не понимаете главного. Если Google говорит, что у него всё на этом протоколе _работает_, и работает хорошо - это авторитетное заявление и к нему надо прислушаться. А заявления типа "баян", "да это тикль", "да это Corba", "до ICE далеко" - это трёп, который не имеет никаких оснований приниматься во внимание.
Это само собой =) Называется авторитет. У гугла он есть, и очень большой. По сути - согласен.
"Это значит - не надо за мной. Колея эта только моя, выбирайтесь своей колеёй." (С)
прошу аргументировать свои "наезды" ))
ждем реализацию на перле, и, возможно, на пошапе
>ждем реализациюхм, точнее, реализацию поддержки ^ конечно )
>ждем реализацию на перле, и, возможно, на пошапеДля Perl модуль уже один человек взялся писать.
Жаль для Native C порта нет
А под какой это лицензией? Я чёт так и не нашел...
>А под какой это лицензией? Я чёт так и не нашел...Apache License 2.0
P.S. Это есть на сайте проекта http://code.google.com/p/protobuf/
Спасибо. Не добрался до этой страницы.
Вообще, конечно, молодцы, ибо http://c2.com/cgi/wiki?XmlSucksНо не совсем понятно, чем их не устроил ASN.1, под который уже дофига всего разработано (и который пиарит себя как наиболее совершенное решение). Те же типы (в отличие от XML), те же парсеры для кучи языков, то же компактное бинарное представление (более эффетивное, чем XML). Разве что синтаксис привычнее?..
Кто знает, rpc на базе этого protobuf с поддержкой какой-либо авторизации и шифрования, или нет?