The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

08.07.2008 22:12  Google опубликовал протокол обмена данными "Protocol Buffers"

Google открыл для всеобщего пользования RPC протокол обмена данными Protocol Buffers. «Практически все внутри Google использует Protocol Buffers», написано в FAQ. «Мы бы хотели сделать открытыми многие другие наши проекты, но для этого мы должны были прежде опубликовать Protocol Buffers».

Google использует множество различных типов данных, которые передаются в виде сообщений между серверами. Большинство из них имеют иерархическую структуру, которую необходимо представлять в определенном виде. Использование XML в этом случае неэффективно, так как когда сеть и узлы работают на полную мощность, обработка XML отнимает слишком много ресурсов. Кроме того, код для работы с деревом DOM иногда может быть очень громоздким.

Protocol Buffers позволяет описывать простые структуры данных используя специальный язык, который затем компилируется в классы, однозначно представляющие эти структуры в любом выбранном языке программирования. Классы обрабатываются хорошо-оптимизированными парсерами и могут быть сохранены в очень компактной форме. Но что более важно, это легкость их использования: у каждого поля структуры есть свои "get" и "set" методы, и в случае надобности сохранения (или чтения) этого поля в виде массива байтов или же I/O потока, оно осуществляется вызовом соответствующего метода. Полная независимость структуры классов от программ-обработчиков позволяет безболезненно обновлять программы, скомпилированные под «старый» формат.

По словам Google, Protocol Buffers от трех до десяти раз компактнее при выигрыше в скорости от 20 до 100 раз, по сравнению с XML. «Мы видели, насколько Protocol Buffers повышает эффективность выполнения определенных задач и хотим что бы больше людей смогли воспользоваться преимуществами нашей разработки». Пройдя по следующим ссылкам можно посмотреть документацию, скачать исходные коды и оставить свое мнение. Проект распространяется под лицензией APL 2.0 (Apache), реализована поддержка языков C++, Java и Python.

  1. Главная ссылка к новости (http://google-opensource.blogs...)
  2. Google open-sources data exchange language
Автор новости: blkdog
Тип: К сведению
Ключевые слова: google, opensource
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, ieroglif (?), 01:03, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    они json что ли изобрели? двоеточие на равно поменяли? или я все-же чего-то не понял?..
     
     
  • 2.2, Veter (??), 01:54, 09/07/2008 [^] [ответить]    [к модератору]
  • +/
    Это они тикль изобрели.

    Так у гугла
      person {
        name = "John Doe"
        email = "jdoe@example.com"
      }

    А так на тикле
      person {
        name "John Doe"
        email "jdoe@example.com"
      }

    То есть в таком виде это будет тиклевский код и обрабатывается интерпретатором.
    Если заменить фигурные скобочки на простые, то получится лисп, тоже позволяет строку интерпретировать как код. Интерпретаторы есть на чем угодно от С до яваскрипт.
    Кстати, в AOL Web Server давно уже реализована возможность посылать сообщения, представляющие собой тиклевский код (именно код, не только данные, что предоставляет очень широкие возможности). А первая реализация для тикля, которую я видел, сделана еще в далеких 90-х и на ней, что интересно, написан вариант системы репликации постгреса (притом, похоже, единственный, имеющий математическое описание).

     
  • 2.3, капитан очевидность (?), 02:23, 09/07/2008 [^] [ответить]    [к модератору]
  • +/
    person {
        name = "John Doe"
        email = "jdoe@example.com"
    }
    это лишь описание структуры. потом на основе него строятся парсеры под бинарные форматы.
    они говорят, что такая запись будет в бинарном виде занимать 28 байт. это по два байта оверхеда на поле. и парсится за 100нс.
     
     
  • 3.18, User294 (ok), 18:49, 09/07/2008 [^] [ответить]    [к модератору]
  • +/
    > По словам Google, Protocol Buffers от трех до десяти раз компактнее при выигрыше в
    > скорости от 20 до 100 раз, по сравнению с XML

    Кстати да, пользуясь случаем передаю отдельные приветы жабберу с его пухлыми XML-ками :)

     
  • 2.4, smb (?), 02:36, 09/07/2008 [^] [ответить]    [к модератору]
  • +/
    Не совсем. Они ввели язык для определения типов сообщенией(.proto-файлы), он действительно схож с JSON, но это же не всё :) Далее, так как просто такой язык - байан и неудобно, то написали для него маппер на классы C++/Java/etc(в их терминологии компилятор) с возможностью сериализации в бинарный вид. Далее, поддерживается обратная совместимость форматов - т.е. можно ввести новые поля и ничего не сломается, + еще на базе этого формата гугловцы сделали RPC.
    Вроде немало, а по удобству+скорости=качеству - совсем хорошо получается :)
     
     
  • 3.23, Oles (?), 09:07, 10/07/2008 [^] [ответить]    [к модератору]  
  • +/
    Скомпилированый жсон да и сериализуемые классы. Как по мне жсон прикольнее.
     
  • 2.5, szh (ok), 05:35, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    > они json что ли изобрели? двоеточие на равно поменяли?

    и траффик уменьшили в 10 раз. Траффик == деньги.

     
     
  • 3.19, User294 (ok), 18:54, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    >и траффик уменьшили в 10 раз. Траффик == деньги.

    Просто если сервак при прочих равных сможет в 10 раз больше, значит будет надо вдесятеро меньше серверов.Тут все просто.А XML сцуко сложный в парсинге и вообще обладает рядом неприятных свойств.Скажем размер записи вообще заранее неизвестен.И если вдруг запись весит гиг а нам в облом столько парсить - заранее узнать что нас ждет нельзя.А значит парсер будет колупать весь гиг, медленно и печально.XML хорош для некоторых вещей, но для некоторых других он выглядит как микроскоп при забивании гвоздей.

     
  • 1.6, frewq (?), 07:33, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Интересно, чем Protocol Buffers лучше ASN.1 с BER, DER и PER ?
     
  • 1.7, alex (??), 09:56, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Похоже, взяли разумные идеи из CORBA и реализовали как надо.
     
     
  • 2.8, penguin_antarctic (?), 10:06, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    До ICE ( который Internet Communication Engine ) им еще далеко.
     
  • 1.9, Pilat (ok), 10:24, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Вы, парни (и девушки) не понимаете главного. Если Google говорит, что у него всё на этом протоколе _работает_, и работает хорошо - это авторитетное заявление и к нему надо прислушаться. А заявления типа "баян", "да это тикль", "да это Corba", "до ICE далеко" - это трёп, который не имеет никаких оснований приниматься во внимание.
     
     
  • 2.12, smb (?), 11:18, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    Это само собой =) Называется авторитет. У гугла он есть, и очень большой. По сути - согласен.
     
  • 2.13, Veter (??), 12:40, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    "Это значит - не надо за мной. Колея эта только моя, выбирайтесь своей колеёй." (С)
     
  • 1.10, kantemirov (?), 10:49, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    прошу аргументировать свои "наезды" ))
     
  • 1.14, Аноним (14), 13:32, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    ждем реализацию на перле, и, возможно, на пошапе
     
     
  • 2.15, Аноним (14), 13:33, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    >ждем реализацию

    хм, точнее, реализацию поддержки ^ конечно )


     
  • 2.16, uldus (ok), 13:59, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    >ждем реализацию на перле, и, возможно, на пошапе

    Для Perl модуль уже один человек взялся писать.

     
  • 1.17, Аноним (14), 15:24, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Жаль для Native C порта нет
     
  • 1.20, Аноним (-), 19:02, 09/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А под какой это лицензией? Я чёт так и не нашел...
     
     
  • 2.21, Aleksey (??), 20:27, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    >А под какой это лицензией? Я чёт так и не нашел...

    Apache License 2.0

    P.S. Это есть на сайте проекта http://code.google.com/p/protobuf/

     
     
  • 3.22, Аноним (-), 22:52, 09/07/2008 [^] [ответить]    [к модератору]  
  • +/
    Спасибо. Не добрался до этой страницы.
     
  • 1.24, nuclight (ok), 16:53, 10/07/2008 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Вообще, конечно, молодцы, ибо http://c2.com/cgi/wiki?XmlSucks

    Но не совсем понятно, чем их не устроил ASN.1, под который уже дофига всего разработано (и который пиарит себя как наиболее совершенное решение). Те же типы (в отличие от XML), те же парсеры для кучи языков, то же компактное бинарное представление (более эффетивное, чем XML). Разве что синтаксис привычнее?..

     
     
  • 2.25, Forth (??), 14:38, 04/08/2008 [^] [ответить]    [к модератору]  
  • +/
    Кто знает, rpc на базе этого protobuf с поддержкой какой-либо авторизации и шифрования, или нет?


     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor