The OpenNET Project / Index page

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

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

08.07.2008 22:12

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
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/16867-google
Ключевые слова: google, opensource
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | 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:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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