Twisted Framework - сетевые приложения в Python

  • 1,083 views
Uploaded on

HighLoad++-2009 talk

HighLoad++-2009 talk

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,083
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Twisted Framework - фреймворк для написания сетевых приложений на Python Андрей Смирнов / /
  • 2. Тенденции ● Минимальная задержка при обновлении ● Минимальное время ожидания начала просмотра контента ● Усложнение клиентской части
  • 3. Решения ● Передача данных ● AJAX ● Постоянные соединения ● HTTP Keep-Alive, BOSH, Comet, XMPP ● Стриминговые протоколы ● RTMP, HTTP streaming
  • 4. Сервер ● Постоянные соединения ● Много соединений (проблема C10k) ● Относительно мало работы по каждому соединению (CPU time/connection lifetime)
  • 5. Серверная архитектура ● Процессы ● Нити ● Асинхронный ввод-вывод ● memcached, nginx, haproxy, ...
  • 6. Асинхронный ввод-вывод ● Один поток (процесс) ● Механизм опроса сокетов: ● select(), poll(), epoll(), kqueue(), IOCP ● Неблокирующийся ввод-вывод
  • 7. Twisted Framework ● Python ● Ядро: async I/O ● Deferred — асинхронная модель программирования ● Реализация протоколов: ● DNS, HTTP, IMAP, memcached, AMQP, …
  • 8. Deferred ● Отложенный результат ● Результаты и ошибки ● Вложенность ● Closure
  • 9. Deferred callback callback2 D errback errback2
  • 10. Deferred ● statements ● catch ● finally
  • 11. pyFMS ● RTMP-сервер ● Трудозатраты: 2+2 чел/мес ● Факты: 1000+ соединений, 70 (250) Мбит/с на процесс
  • 12. pyFMS ● Оптимизация: ● 2 дня, Python, ≈ 30% улучшения ● 3 дня, Python → C, ≈ 50% улучшения ● Uptime - месяцы
  • 13. pyFMS ● Плюсы: ● Скорость разработки, переносимость ● Оптимизированный код и event loop ● Доп. протоколы: memcached ● Минусы: ● Однопоточность
  • 14. Qik Push Engine ● Быстрое read-only API ● Независимое от основной БД key-value хранилище ● Обработка и распределение изменений по подпискам (pubsub) ● AMQP-сервер в качестве шины обмена сообщениями и хранилища событий
  • 15. Qik Push Engine DB es updat HTTP (JSON/RPC, REST) Qik Qik Qik Push memcacheDB Push Push Engine Engine Engine RabbitMQ
  • 16. Qik Push Engine ● Факты: ● 1 экземпляр: 100 (250) запросов/с (CPU 2GHz) ● Кластер 12 серверов: 1200 запросов/с (3 физических), uptime - месяцы ● Плюсы: ● Наличие готовых протоколов (AMQP, memcached) ● Тестируемость
  • 17. Twisted и нити ● Python — GIL: нити не имеют смысла? ● Модель worker, ThreadPool ● Когда разумно использовать нити?
  • 18. Разработка Twisted ● Unit-testы ● Политика code-review ● Ветка в svn на каждое изменение
  • 19. Twisted-проекты: ● Apple Calendar Server ● Air Canada (система бронирования) ● FluidDB ● Launchpad ● Buildbot
  • 20. Аналоги Twisted ● Perl::POE ● Ruby::EventMachine ● C++::asio
  • 21. Ссылки ● http://twistedmatrix.com/ ● http://planet.twistedmatrix.com/ ● https://launchpad.net/tx/ ● http://divmod.org/trac
  • 22. Контакты ● Андрей Смирнов ● Руководитель web-разработки Qik ● me@smira.ru, smira@qik.com ● http://www.smira.ru/