Thrift Hl 2

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Thrift Hl 2 - Presentation Transcript

    1. RPC: протокол Thrift на примере проектов Рамблера Александр Шигин
    2. Что такое RPC Выполним наш код на другой машине Данные на другой машине Данных слишком много Мало памяти
    3. Альтернатива: REST Идея та же самая REST диктует реализацию Глаголы/существительные
    4. Что бывает в RPC Версионность Асинхронность (обычно синхронные) Real time Внеочередное исполнение Устойчивость к сбоям
    5. На что еще обратить внимание Реализация для разных языков одного и того протокола Бинарный или текстовый формат данных
    6. Какие RPC есть Собственно RPC, если вы пользовались NFS, то пользовались и RPC CORBA/DCOM, но это гораздо круче
    7. Какие RPC есть XML-RPC SOAP JSON-RPC Java Remote Method Invocation
    8. Какие RPC есть Google protobuf Facebook Thrift Каждый может написать свой (RPC для python'а, используя pickle 183 statement, 281 строка)
    9. Почему мы выбрали Thrift Версионность Сервер уже есть TNonblockingServer ThreadedServer, ThreadPool Биндинги почти к чему угодно
    10. Кто использует Thrift facebook last.fm Powerset reCAPTCHA Rambler
    11. Что можно сериализовать i8, i16, i32, i64 (нет типов без знака) double bool string any (экспериментально)
    12. Составные типы struct map set list
    13. Как это работает транспорт транспорт протокол Что надо Сервер писать processor Клиент самому
    14. Транспорт TSocket, TServerSocket TFileTransport TMemoryTransport THttpClient
    15. Дополнительный транспорт TBufferedTransport пытается делать один send/recv на структуру TFramedTransport помощник для использования с неблокирующими сокетами
    16. Протоколы TBinaryProtocol (основной) TDenseProtocol (экспериментальный) TJSONProtocol (только c++/java)
    17. Сервер TSimpleServer TThreadedServer/TThreadPool TNonblockingServer TForkedServer (python)
    18. TThread*, TForkedServer создают тред/процесс на клиента то есть TThreadPool сервер на 8 тредов может обслужить одновременно только 8 клиентов
    19. TNonblockingServer libevent только TFramedTransport thread на запрос с сетью работает только основной тред
    20. Версионность все поля в структурах нумеруются если поле неизвестно или имеет неправильный тип, оно пропускается аргументы функции - тоже структура
    21. Применение добавляем поля, старый код продолжает работать сервисы работают с разными частями одних и тех же данных
    22. Пример struct V1 struct Full struct V2 { { { 1: i8 type, 1: i8 type, 1: i8 type, 2: i64 uid, 2: i64 uid, 3: double time, 3: double time, 4: string login 4: string login } } }
    23. Недостатки мало документации нет готовой инфраструктуры маленькое сообщество
    24. Подводные камни если вас интересует ruby, то только из svn/git java-библиотека не стояла на месте если у вас FreeBSD, посмотрите jira или напишите мне (хотя svn/git тоже неплохой выбор)
    25. FreeBSD net.inet6.ip6.v6only (THRIFT-16) net.inet.tcp.delayed_ack (THRIFT-45) THRIFT-96 иначе в логах слишком много ошибок будет
    26. Простая проверка Сервер 1 зовет второй, server 1 зовет третий, а потом это все раскручиввается назад. server 2 server 3
    27. Исходник struct Stamp { 1: string hostname, 2: double timestamp, } service Test { list<Stamp> do_loop(1: list<string> hosts) }
    28. Результат stop: 0.040 host: host01.rambler.ru time 0.000 host: host02.rambler.ru time 0.005 .... host: host14.rambler.ru time 0.032 host: host15.rambler.ru time 0.035 host: host01.rambler.ru time 0.037
    29. Что еще • http://incubator.apache.org/thrift/ • Исходники тестов – 12 строчек клиент – 24 сервер + 18 создание сервера.
    30. Вопросы? shigin@rambler-co.ru

    + highloadhighload, 2 years ago

    custom

    924 views, 0 favs, 3 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 924
      • 720 on SlideShare
      • 204 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 28
    Most viewed embeds
    • 119 views on http://highload.ru
    • 83 views on http://www.highload.ru
    • 2 views on http://dev.highload.ru

    more

    All embeds
    • 119 views on http://highload.ru
    • 83 views on http://www.highload.ru
    • 2 views on http://dev.highload.ru

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories