Проблема
Внутри сервисов возникают задачи обработки множества запросов
или\и распараллеливания задач для увеличения быстродействия.
На такие вычисления уходит время, причиной может служить следующие ситуации:
-
Интенсивные вычисления, например вычисление простых чисел. Большой расход ресурсов компьютера и процессорного времени в частности. (Многие сталкивались с такими задачами только в школе)
-
Ожидании данных необходимых для расчета конечных результатов программы. (Некоторые также сталкивались с такими задачами в школе. Ждали пока за них решат задачу другие.)
ПАиПП - Практика Асинхронного и Параллельного Программирования
Буду писать ряд статей по данной тематике. Давно уже собирался.
Планирую затронуть несколько тем:
-
Общее видение
-
Взгляд изнутри
-
Классические примеры
-
Практика в рабочих проектах
-
Постановка задачи
-
Проектирование Шаблоны проектирования
-
Техника разработки (TDD)
-
Управление пакетами (Release management)
-
Документирование проекта
В качестве примера буду использовать код самого Twisted, Fats, DBsync(только теоретически), немного затрону Zope3.
Скоро выложу презентацию в удобоваримом виде, она была частично представлена на конференции Exception #07.
Ну вот и дождались, долго разработчики тянули кота за яйца и наконец то выпустили официальный релиз Twisted.
Сегодня Radix объявил о предварительном выпуске версии Twisted 8.0.
Честно говоря я не совсем понял что повлияло на такой номер версии.
Из того что мне удалось узнать на данный момент, могу сказать следующее:
1) Проделана большая работа Кристофером Армстронгом(Радикс) Автоматизация контроля версий. О части этой системы хотел рассказать в докладе на Ex07, но не успел =(.
В последнее время все больше и больше людей присоединяется к разработкам в области *. Вышло API для разработки приложений и удобного описания сложной логики dialplan’ов в Ruby. Кроме того можно запросто прикрутить все к ROL.
Специальный дистрибутив AsteriskNOW + adhearsion - это мощный прорыв вперед.
Cмотрим
Getting started
Пример плана дозвона
Writing dialplans
Все это здорово, а теперь о самом вкусном на мой взгляд.
В новой версии Asterisk 1.4 все больше внимания уделяется GUI для администрирования и автоматизации бизнес приложений на базе *.
Одна из проблем - производительность такого IP-PBX. Представьте что у нас есть 1000 одновременных звонков которые надо обработать сложным сценарием плана дозвона. Заносить все в AGI не решение, т.к. это тяжелые и ресурсоемкие процессы для сервера, что влияет на производительность программной АТС при декодировании сигнала и как следствие ухудшает качество канала связи.
Решение не ново - FastAGI. Приложения которые запускаются в сессии отдельного сетевого сервиса. * в свою очередь может обращаться к ним:
agi://host:port/?param0=val¶m1=val
Теперь подробнее. Не секрет что существует окружение для разработки быстрых асинхронных сетeвых приложений на базе Python.
Twisted в студию! Вот пример реализованного API протокола FastAGI, а также некоторые вкусности на этой базе - StarPy. Все еще альфа на протяжении двух лет :).
Вот вам почва для размышления, скоро появится анонс нового протокола для FastAGI приложений на Twisted. Отличие от StarPy лишь в том, что библиотека умеет тестировать себя, стабильна, не требует лишних зависимостей, проще код.
Добрый день.
В данном блоге я собираюсь писать все интересные на мой взгляд вещи и конечно просто глупости. Надеюсь это будет полезно не только моим друзьям.
Ранее я занимался созданием сервисов на базе Asterisk. Мне очень нравилось, действительно увлекательное занятие. Не хочу чтобы навыки пропали даром или начали терять актуальность, поэтому буду описывать некоторые технологии и приемы разработки в этом блоге. Кроме того тут могут появляться темы связанные с Django, Zope 3, Twisted, методологиями и приемами разработки, linux хаками и т.д.
Для тех кто в танках
Астериск(Asterisk, *) - IP АТС(по буржуйский PBX) с открытым программным кодом.
На базе * можно создавать большое количество малых и крупных автоматизированных систем телефонии, распределенных систем, а также вовсе неожиданные проекты по использованию * для управления другими системами.
Технология не нова, но вокруг нее создается множество новых open source и закрытых проектов.
Инструментарий
-
Python - основной инструмент, красивый и удобный язык программирования.
-
Twisted - платформа для создания асинхронных сетевых приложений на базе python.
-
Django - платформа для быстрого создания web приложений на базе python.
-
Gentoo Linux - ручной пингвин.