Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Twisted Framework - фреймворк для написания сетевых приложений на Python (Андрей Смирнов)

17,281 views

Published on

  • Be the first to comment

  • Be the first to like this

Twisted Framework - фреймворк для написания сетевых приложений на Python (Андрей Смирнов)

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

×