LXF86:Спаркс
|
|
|
- LXF Интервью
Вдохновение по Спарксу
- Будучи крупнейшей вещательной компанией в мире, BBC нуждается в серьезных технологиях для сетевого вещания, медиа-кодеках и многом другом. Open source – привлекательное решение, поясняет Майкл Спаркс.
Linux Format: Что привело вас в BBC?
Майкл Спаркс: Я закончил Манчестерский университет и устроился работать Janet Web Cache Service. Мы тогда все расширяли, и делали это хорошо, и это был довольно весело. Использовали Linux, Squid и FreeBSD. Была пара машин с Solaris и пара Irix-машин, но в основном Linux и FreeBSD.
LXF: Это была ваша первая встреча с Linux?
МС: Нет, она произошла в университете. Я изучал информатику, и посреди второг курса решил разобраться, как работают компиляторы, и мне нужен был компилято для домашнего пользования. Вот я и скачал свободное ПО. Моим первым дистрибу тивом был мини-Linux на четырех дисках.
LXF: На дискете?
МС: На четырех! Его нужно было установить на жесткий диск, но он запускался на 386 с 4 МБ памяти, а у меня была как раз такая машина. Оттуда все и пошло. Я и понравился Janet Web Cache Service потому, что имел опыт работы в Linux. Потом я стал подумывать о переезде в Лондон, но пока жил в Манчестере. Компания Inktomi тогда набирала сотрудников, и вербовщик нашел мое имя в списке рассылки Squid, так что благодаря Squid я попал в Inktomi. Они занимались кэшированием крупных сетей, сетевыми системами и сетями доставки мультимедиа.
LXF: А это, в свою очередь, было нужно BBC?
МС: BBC в то время нанимала инженеров-исследователей. И так совпало – они об этом не говорили, пока меня не наняли – они создавали новую исследовательскую группу. До этого исследовательский отдел состоял из четырех основных групп: группа Studio занималась производством; Transmission – вещанием; одна группа отвечала за размещение передатчиков в Великобритании для получения лучшего охвата; и еще одна для систем внутри BBC. Но для сетевых исследований не было ничего; они собрались основать новую группу, и мне посчастливилось присоединиться к ней вовремя. Вот почему это область моих исследований.
LXF: Вы управляли этим процессом, или что-то советовали?
МС: Нет, не советовал; все произошло случайно. BBC была в процессе формирования этого маленького сетевого подразделения, человека на четыре-пять.
LXF: Его задачей было распределение контента в сети?
МС: Да, и они понимали, что нужны некоторые исследования в этой области, потому что все это [раньше] было спонтанно. Многое на сайте BBC было в стиле: «Стянем одно отсюда, другое – оттуда, заставим заработать, а как разослать, неважно». А я как раз в этом разбирался, потому что занимался этим несколько предыдущих лет. Они спросили: «Как нам это рассылать?», ну, я и говорю: «Что ж, по-моему, вопрос интересный, я не ожидал, что буду делать это».
Довольно быстро выяснилось, что потоковое вещание само по себе жутко дорогое. Сервер Real Networks тогда еще не был открыт. Они перешли на по-процессорную модель, но процессор так и так может обработать лишь определенное число потоков, и это был просто другой способ описать ту же проблему. В наши дни выбор богаче, а тогда было примерно так: «Нужно разработать поточный сервер, потому что нам надо обрабатывать 20 миллионов параллельных потоков, и это будет дешевле, чем оплачивать серверную нагрузку».
LXF: Насколько это было похоже на вашу прежнюю работу?
МС: Что интересно, в Inktomi продавались системы web-кэширования. Эти решения поддерживали также потоковое кэширование и включали сети распространения мультимедиа. Таким образом, штуки вроде сетей распространения использовали групповое вещание на уровне приложений, то есть отдельных аудио- и видео-пакетов, а не IP-пакетов, как это обычно бывает. Источники и отправители также основывались на контенте, а не на IP, что было шагом вперед и значительно упрощало жизнь.
Так что у меня был большой опыт в этой области, а поскольку мы продавали эти вещи, я должен был довольно подробно знать их внутренности и как все структурировано. Кроме того, я разбирался в Squid, то есть понимал, как двигаться вперед.
LXF: Вы не поясните, как Kamaelia работает в техническом плане?
МС: Для моделирования параллелизма мы используем генераторы Python. Потому что, на самом деле, это дает нам возобновляемые функции. Так что вы можете написать нечто, на вид однопоточное, и запускать этот поток снова и снова.
LXF: А они распараллеливаются?
МС: Вы можете распараллелить их. Фактически, все они последовательны, потому что это куски кода, которые работают, пока не наткнутся на точку результата [yield]. Генератор Python – это небольшая функция со словом ‘yield’ в теле. Если в ней есть yield, то при ее вызове возвращается объект, и вы можете вызвать его метод next, и он будет выполняться до тех пор, пока не наткнется на следующий yield, а тот – н следующий, и так все время, пока вы запускаете next. Так что next проходит до следующего yield, потом следующего, и т.д. Очевидно, вы можете создать их множество, вот и выходит параллелизм. Можно считать это альтернативой конечным автоматам, но замечательно, что это не шиворот-навыворот, это правильный способ.
Например, если вам нужно много интересных обработок ошибок, обработка ошибок все еще хороша и понятна – каждый знает, что нечто однопоточное написать легко, здесь нет серьезных проблем. Вам не надо думать: «Ладно, я остановлю это, и что я должен сделать, как сохранить это состояние, и как вернуться в эту позицию?». Не надо предусматривать откаты и тому подобное.
LXF: То есть Python для Kamaelia – единственный выбор, или можно использовать что-то еще?
МС: С выбором Python получилось забавно. Первоначально предполагалась команда из трех разработчиков: Тима Борера [Tim Borer], которого вы, наверное, знаете по проекту Dirac, Джозефа Лорда [Joseph Lord] и меня. А кончилось тем, что на следующую пару лет остался, по сути, один я, поскольку Джозефа утащили на какуюто другую работу, а Тим занялся проектом Dirac. Сейчас со мной еще работает Мэтт Хэммонд [Matt Hammond].
Но главное, мы хотели выбрать язык, на котором никто из нас не писал. В исследовательской организации хочется что-то изучать. А как вы учитесь? Вы беретесь за то, чего раньше не делали. И я подумал: «Ну, раз он поддерживает идею возобновляемых функций, берем, потому что в сущности моя задача – сделать программы доступными для сопровождения. Неважно, трудно ли на нем писать». Kamaelia упрощает разработку программ – в первую очередь потому, что все выглядит однопоточным, но фактически я хочу сделать эти параллельные системы обслуживаемыми обычными людьми.
Обычно параллельные системы пишутся [людьми, говорящими]: «О, мы собираемся посадить на эту работу наших лучших программистов», и так происходит везде. Выпустим продукт как можно быстрее – посадим на него лучших программистов, и они его сделают, а затем передадим эксплуатационникам, которые по определению менее квалифицированны: будь это не так, они, вероятно, работали бы над следующим проектом. Примерно так работают многие организации.
Таким образом, меня действительно беспокоило, как заставить работать параллельные системы для основной массы пользователей, а не для самых квалифицированных. Вот почему я хотел, чтобы все выглядело однопоточным, потому что, прежде всего, вы можете написать свой кусок однопоточным, убедиться, что он работает, нашлепать несколько директив yield в произвольных местах, и это станет компонентом. И затем вы сможете повторно использовать его.
LXF: Это действительно хороший аргумент. Так вы не знали, что генераторы предоставляют такую функциональность?
МС: Я такую функциональность искал, обычно это называется «cur-routines». Ну, а в Python – генераторами. Они не столь общие, как стандартные сервисные подпрограммы, и это их большое преимущество, поскольку оно гарантирует, что все будет намного компактнее. А чем они компактнее, тем более обстоятельные, а еще – их легче использовать повторно.
LXF: BBC понимала необходимость открыть исходный код Kamaelia и создать вокруг своего рода сообщество?
МС: Некоторые понимали. BBC не однородна, это стоит помнить. BBC известна своей приверженностью открытым стандартам. Например, хорошо известно, что если у нас есть открытый стандарт, мы найдем группу людей, которые придут и его поддержат, и что-нибудь для него сделают.
Естественно, BBC надеется на изготовителей оборудования, которые придут и построят что-то вокруг открытого стандарта на оборудование – чтобы люди о нем даже не задумывались. Но идея, что открытие ПО дает, потенциально, наличие сообщества, на некоторых уровнях им плохо знакома.
BBC очень изменилась. В смысле, легко сказать «BBC», а BBC-то, на самом деле, это около 27 тысяч человек. А еще есть люди, которые живут и дышат Open Source. LXF