Мне кажется что статья несколько устарела. А именно — часть технологий была сменена на гугловские. Такие как GoogleWebServer, GFS (файловая система расчитанная на эксабайты + репликация), BigTable вместе MySQL. Ну а python остался (хотя может и на java медленно все мигрируется).
Я краем уха слышал что в гугле разрабатывается что-то подобное. Только я слышал это давно и не известно когда тот продукт окончательно разработается...
ProtoBuffer это не аналог XML. Проще воспринимать Protobuffer как способ быстро и эффективоно сохранить на диск данные с последовательным доступом.
Protobuffer это один из столпов Google инфраструктуры, почти все проекты Google используют его. Изучая protobuffer все больше и больше начинаешь восхищаться. В какойто момент познаешь ДАО и писать кипятком от того как гармончно весь конструктор складывается воедино в общую картину.
Теперь ближе к телу. В основном ProtoBuffer используется для логированя. Также используется для RPC, но я не особый знаток этой части, потому расскожу о первой. А для того чтобы вы лучше представляли общую картину - добавим сюда еще несколько вещей:
sawzall - специализированный язык для обработки файлов логов (читай коллекций сериализованных протобуфером)
map-reduce - инфраструктура разбиения задачи на множество маленьких и выполнение их параллельно.
sawmill - собственно большая map-reduce задача для обработки логов.
тулзы для конвертирования XML,YAML,BigTable<->protobuffer
с другой стороны - множество логов от различных сервисов. Например Gmail имеет ~120000 процессов. Каждый процесс пришет в GoogleFileSystem лог файл с именем gmail.20080708.datacenter_id.machine_id.process_id.log различную информацию - кто, откуда, куда кликнул, сколько времени заняло (latency), какие java/javascript ошибки произошли на странице.
И теперь все соедняем. Например нам надо построить график как изменяется напр. latency для браузера IE7 за последние несколько дней c разбиением по версиям gmail (gmail имеет несколько версий в продакшене). Это будет просто - пишем sawzall программу и запускаем ее в sawmill, приговаривая - обработай мне логи сервиса gmail за последние 4 дня. Sawmill запускает несколько копий программы которые параллельно работают над обработкой логов, а затем агрегирует данные.
Точно такую же схему использует Google Analytics для своих целей.
PS Я совсем недавно думал, насчет реализации на Java нечто подобного протобуфер (хотел освежить свои познания в Antlr), но гугл меня опередил. Все что не делается - все к лучшему.
PPS Как видите в use-case котором я описал нет места XML.
PPPS http://research.google.com/pubs/papers.h… вот тут можно найти много интересного чтива.
PPPPS Извиняюсь за кросспост.
Это все стериотипы. Если эти тетушки подойдут к админу и скажут что на их сайте написано "Работает только в ИЕ7 - пожалуйста обновитесь", то админ переставит всем в течении недели. А сейчас - просто пассивность.
Только Java компилируется перед запуском программы. А Python/Ruby *во время* исполнения программы. Причем каждый раз когда ты запускаешь.
Отправьте plz это сообщение автору модуля.
>Кул! Да они так все баги исправят, которые я знаю :)
Этот баг исправлен по личной просьбе одного из разработчиков Gmail :) Stay tuned - в след версии еще будет исправлено пару назойливых багов.
Вся мощь protobuffer раскрывается во взаимодействии с другими технологиями Google. Надеюсь гугл скоро и их откроет.
Protobuffer это один из столпов Google инфраструктуры, почти все проекты Google используют его. Изучая protobuffer все больше и больше начинаешь восхищаться. В какойто момент познаешь ДАО и писать кипятком от того как гармончно весь конструктор складывается воедино в общую картину.
Теперь ближе к телу. В основном ProtoBuffer используется для логированя. Также используется для RPC, но я не особый знаток этой части, потому расскожу о первой. А для того чтобы вы лучше представляли общую картину - добавим сюда еще несколько вещей:
sawzall - специализированный язык для обработки файлов логов (читай коллекций сериализованных протобуфером)
map-reduce - инфраструктура разбиения задачи на множество маленьких и выполнение их параллельно.
sawmill - собственно большая map-reduce задача для обработки логов.
тулзы для конвертирования XML,YAML,BigTable<->protobuffer
с другой стороны - множество логов от различных сервисов. Например Gmail имеет ~120000 процессов. Каждый процесс пришет в GoogleFileSystem лог файл с именем gmail.20080708.datacenter_id.machine_id.process_id.log различную информацию - кто, откуда, куда кликнул, сколько времени заняло (latency), какие java/javascript ошибки произошли на странице.
И теперь все соедняем. Например нам надо построить график как изменяется напр. latency для браузера IE7 за последние несколько дней c разбиением по версиям gmail (gmail имеет несколько версий в продакшене). Это будет просто - пишем sawzall программу и запускаем ее в sawmill, приговаривая - обработай мне логи сервиса gmail за последние 4 дня. Sawmill запускает несколько копий программы которые параллельно работают над обработкой логов, а затем агрегирует данные.
Точно такую же схему использует Google Analytics для своих целей.
PS Я совсем недавно думал, насчет реализации на Java нечто подобного протобуфер (хотел освежить свои познания в Antlr), но гугл меня опередил. Все что не делается - все к лучшему.
PPS Как видите в use-case котором я описал нет места XML.
PPPS http://research.google.com/pubs/papers.h… вот тут можно найти много интересного чтива.
PPPPS Извиняюсь за кросспост.