Архив

Архив раздела ‘Высокопроизводительная архитектура’

SignalsyMQ — простая и быстрая очередь сообщений на PHP+Redis (и немножко Zend Framework)

12 декабря 2009 3 комментария

1250198491_signalПриветствую своих читателей. Знаю, что давно не писал, обычно активность проявлял только в твиттере - как оказалось, это очень удобно для постоянных постингов, когда на основной блог не хватает времени. Кстати, кроме официального твиттера блога (@abrdev) я открыл еще один  - @phpatcloud, в котором буду собирать ссылки на все материалы по теме РНР и Cloud Computing. Эта тема достаточно актуальная, в том числе и для меня, так как на основной работе мы сейчас делаем серьезную систему, которая как раз и базируется на облачном хостинге (от Amazon) и платформе РНР (мой внутренний продукт, Signalsy и Zend Framework). Кому интересно - подписывайтесь, комментируйте и ретвитьте, буду благодарен.

А теперь хотел бы рассказать, собственно, о причинах некоторых задержек в пополнении блога статьями. Причина простая - как уже анонсировал, я веду разработку собственного фреймворка, основанного в противовес главенствующей сейчас модели MVC, на базе сигнальной архитектуры (signal/slot). Сейчас этот фреймворк, уже третья версия, проходит боевую обкатку в нашем стартапе, и за это время я понял, что одного продукта в линейке мало - реальные задачи и виденье будущего показывает, что необходим разный функционал, но объединенный одной темой - обработка и доставка информации множеству клиентов в реальном времени. Поэтому я расширяю свою систему таким образом, чтобы в результате получит некоторую платформу для построения быстрых и масштабированных систем для веб-приложений. Сегодня я расскажу о первом компоненте, который является основной нашей платформы - SignalsyMQ - очередь сообщений на базе PHP/Redis/Zend Framework.

Читать далее...

Работаем с Google Protocol Buffer в РНР

pb4php_logoПриветствуем наших читателей. На этот раз обойдусь без длительного вступления, а сразу перейду к делу, то есть, к теме сегодняшней статьи. В проекте, который я сейчас разрабатываю, возникла необходимость, а точнее, я понял, что архитектуру надо расширять, и решил заменить используемый сейчас протокол для обмена данными между частями приложения. Сейчас, на уровне внутренних сервисов, обмен происходит через передачу сериализированных массивов РНР поверх TCP сокетов. Так как по обе стороны находятся приложения на РНР, проблем не возникает, формат пакета данных также стандартный, поэтому особых сложностей нет. Разве что часто меня не удовлетворяет скорость обработки, а также то, что мы сильно завязаны на язык и платформу. Если придется стыковать с другой системой или же переписать что-либо, будут сложности - ведь сериализированный формат поймет лишь родной язык, а писать парсер мне не очень хочется. Первоначальный выбор был более чем оправданным - скорость разработки и отладки были приоритетными, сейчас есть немного времени и желания посмотреть на архитектуру с высока и другим взглядом. Читать далее...

Анонс: Signalsy Platform Framework (open source)… coming soon!

14 августа 2009 6 комментариев

1250198491_signalПриветствую читателей моего блога. Позволю себе сделать небольшой анонс. В последнее время я работаю над достаточно большим проектом, игровой он-лайн платформой для разработчиков браузерных игр AGPsource Game Platform (кстати, проект открытый, присоединяйтесь, уже вышла версия 3.1). Разработка достаточно интересная и нетривиальная в архитектурном плане. Попробовав ее в реальных условиях, в том числе и под достаточной нагрузкой (например, мы сделали на нем одно приложение для сети вКонтакте, пока там 20 тыс. пользователей, но их количество увеличивается постоянно), мы поняли, что архитектура достаточно хорошая. Но движок, конечно, проект большой и сложный, попробовав применить его в других проектах, не очень игровых, стало ясно, что требуется все то же, но более легкое, простое и быстрое. Да и хотелось внести кое-какие изменения в основу проекта, переделать узкие места.

Так родился наш второй проект - Signalsy Platform Framework. Вкратце - это небольшая и гибкая платформа для разработки и поддержки веб-проектов, основанная на сигнальной (Signal/Slot, но, конечно, модифицированной, о реализации в библиотеке ezComponents мы уже писали) архитектуре. Похоже, мы первые в мире, кто сделал подобное для веб-а! Внутри, кроме нашего небольшого набора базовых компонент, лежит Zend Framework, так что разрабатывать можно с учетом всех его возможностей. По сути, это замена традиционной модели MVC (как ее понимают в ZF), но внутри, в компонентах и логике конкретного приложения, конечно, можно придерживаться любых паттернов и приемов построения архитектуры. Signalsy лишь заменяет слой обработки URL  и добавляет возможности Signal/Slot-архитектуры в ваше веб-приложение.

Вам интересно? Следите за анонсами, читатели блога первыми узнают все подробности проекта. Мы также открыты для заинтересованых разработчиков - для сообщества вместе с анонсом будет открыт специальный портал для взаимодействия. Подробности будут в течении нескольких дней...

Ehcache в качестве RESTful сервера кеширования и PHP

logoПриветствую наших читателей. Сегодня мы снова продолжим исследования различных новых и не очень технологий, необычного их применения или просто оригинальных вещей. Те, кто уже давно читают наш блог, возможно вспомнят о короткой статье, в которой я рассказывал о интересном проекте распределённого кеша EHcache для платформы Java. Сегодня настало время продолжить эту тему, однако в другом ракурсе.

Читать далее...

Верхом на облаке в 21 век. Статья для журнала Хакер.

3 августа 2009 3 комментария

cloud_5B1_5DСтатья написана специально для журнала Хакер и опубликована на сайте журнала (в несколько сокращенной и отредактированной версии). Ниже я публикую свой оригинальный вариант,  без правок или ограничения на объем материала.

У известного фантаста Р. Шекли есть прикольный рассказ «Абсолютное оружие» о том, как искали и нашли оружие древних марсианских цивилизаций. И самым мощным, абсолютным оружием, оказалось обычное облако... Похоже, ИТ очень схоже с древними марсианами, потому что сейчас все, что связано с Cloud Computing, преподносится как абсолютное решение всех проблем... но ты спросишь, а что это такое вообще? А я отвечу!

Что это такое?

Как и все современные термины в ИТ, «облачные вычисления» имеют настолько размытый и общий смысл, что даже странно, как можно понять, о чем же говорит твой собеседник. Кое-кто даже утверждает, что это не более, чем маркетинговый термин, пустышка и фигня. Не верь! Давай расставим все по местах. Cloud Computing или облако, основано на нескольких основных моментах, о которых я сейчас расскажу. Читать далее...

Пуш ми, бум-бум, тач ми… Ajax Push Engine

logoПриветствуем наших читателей. Что-то в последнее время я не писал, однако не забывая исследовать новые технологии, чтобы как только будет время, ознакомить Вас с самыми интересными представителями ИТ-мира. Кстати, если хотите оперативно получать информацию, подпишитесь на наш твиттер - там появляются ссылки на самое интересное в первую очередь. Впрочем, мы отошли от темы. Сегодня поговорим о Comet и о server push вообще.

Обычные веб-приложения, как и сайты, работают по традиционной модели запрос-ответ-запрос, при этом, в силу особенностей HTTP-протокола и некоторых серверных реализаций обработчиков, приложение не хранит информацию между запросами, так что каждый вызов является независимым, а идентификация или сессионность обеспечиваются более высокоуровневыми средствами (например, всем известная реализация сессий в PHP). Кроме этого, запрос на новую информацию посылает всегда клиент, который заинтересован в получении самой актуальной версии данных. В приложениях, которым критично обновление, это часто становиться узким местом. У нас в одном из предыдущих проектов, было сразу несколько периодических AJAX-запросов на обновление данных. Хотя для такого случая есть варианты и вызова нескольких обработчиков на стороне сервера одним запросом от клиента. Читать далее...

Интересные презентации по RESTful архитектуре

restПриветствую наших читателей. Сразу извинюсь за некоторый перерыв в публикациях, это связано с интересными изменениями в моей работе и в ее организации. Многое сразу не расскажу, замечу, что мой стартап перенес существенную трансформацию, мы объединились с другой компанией и очень скоро представим первые публичные продукты из нашей основной линейки продуктов - движков, платформ или middleware для разработки браузерных онлайн игр. Однако об этом чуть детальнее будет несколько позже, это я так говорю хватит самопиара.

В процессе разработки нашей платформы, да и раньше, неоднократно встречался с REST-архитектурой, хотя скорее это некоторые архитектурные принципы и соглашения о построении веб-приложения. Об этом много говориться в разных статьях, и заинтересовавшись темой, я сделал подборку из нескольких презентаций, которые в удобной и краткой форме рассказывают о RESTful архитектуре, различных моментах реализации и использования. Надеюсь, всем будет интересно и полезно. Раньше я недооценивал презентации, они часто (если хорошо сделаны), очень даже самостоятельны в предоставлении материала, даже если рядом нет объяснений выступления. Надеюсь, презентации ниже помогут вам побольше узнать о REST-архитектуре.

P.S. Кстати, просьба к читателям - если вам понравиться (ну и если нет - тоже) такой формат постов, я буду иногда делать подборки интересных презентаций на различные темы. Заранее благодарю всех, кто оставит свое мнение.

Читать далее...

AppScale — а построй ка мне Google AppEngine сам? Будет сделано!

10 апреля 2009 Comments off

logoПриветствуем наших читателей. Весна, даже почти лето на дворе, очень влияет на состояние, ну просто расслабляет так, что сложно сосредоточится и что-либо делать серьезное. Но мы же профессионалы! Потому сегодня продолжаем разговор о современных технологиях, даже более, чем современных - находящихся на острие ИТ-прогресса! А сегодня одна из самых популярных и активных тем какая? Cloud Computing вообще, а один из лучших, оригинальные и ярких его представителей - Google App Engine в частности. Хорошая новость про добавление в платформу возможности работы приложения на Java - может и я попробую, хотя его, в какой то мере конкурент, Stax, о котором я, с прискорбием, никак не напишу, мне намного больше близок и нравиться. Но если вы все же остаетесь приверженцем Python (я вот его так и не смог освоить, просто синтаксис не понравился), и хотите нечто подобное, но полностью свое - для вас есть хорошая новость. Открытый проект AppScale позволяет развернуть собственную систему облачных вычислений предоставить возможность развертывать и запускать там приложения на Python-е, в принципе, без изменения кода, что для GoogleAppEngine, что написанные специально под систему. Читать далее...

Марш против RDBMS или проекты распределенных хранилищ (key-value stores)

candybar2Приветствуем читателей. К сожалению, не было возможности раньше написать, сейчас активно доводим до альфа-тестирования собственный стартап и проектируем новую он-лайн игру. И тема сегодняшней статьи как раз в плане инноваций. Вот вы часто создаете проекты? И, наверное, везде применяете базу данных, в частности, MySQL (а кто-то и PostgreSQL). Но вот что интересно, по опыту да и просто после чтения описания различных архитектур видно, что далеко не везде в проекте нужны ключевые особенности баз данных, во многих случаях базу используют просто как некоторое хранилище обычных данных. Например, в системах кеширования базы обычно не применяются, более того, кеширование как раз используют для того, чтобы избежать лишних запросов. А что используют для кеширования наиболее часто? Memcached. А что это такое? Это распределенная система хранения данных на основе хеш-таблицы. В общих чертах, это просто хранилище пар ключ-значение, над которыми можно производить только основные операции - запись, чтение, удаление и проверку на присутствие. Да-да, нет никаких фильтров, выборок, сортировки, самый максимум - система тегов для выборки одним запросом всех связанных записей. И во многих случаях такого функционала вполне достаточно.

Я отнюдь не фанатик, и в реальных проектах лучшей будет комбинация из обычной, реляционной базы и специализированного хранилища данных. Более продвинутые системы, хранящие не просто пары ключ-значение, а и дополнительную мета-информацию об объекте, уже приближаются по возможностям к базам данных, их иногда называют документ-ориентированными базами (хранилищами), так как единицей информации, над которой происходит работа, является документ и ассоциированные с ними данные. Читать далее...

JavaScript, AJAX, Socket и Flash/ActionScript — исследуем вопрос передачи данных в AJAX-приложениях

12 февраля 2009 5 комментариев

socket_1667_128Приветствуем наших читателей. Как то в последнее время я начал активно повышать свои навыки и знакомиться не только и не столько с новыми технологиями, но и изучать некоторые привычные всем, но новые для меня вещи. Например, я уже более-менее освоил Java, а именно - занимаюсь сетевыми сервисами и фреймворками, а также системы кеширования - но об этом как-нибудь в другой раз (планирую много написать, но увидим). Также, из последнего (буквально вчера) - начал работать с ActionScript 3. Так что теперь часть в моих проектах будет написана и на Flash, хотя мое мнение относительно применимости в AJAX-приложениях Flash-компонентов не изменилось - их надо использовать там, где они дают максимальное преимущество, а вот вся "обвязка", например, интерфейс пользователя, можно сделать при помощи стандартных технологий. Мой любимейший ExtJS все же даст фору любым Flash/Flex-решениям, но если вы найдете что-то похожее - обязательно напишите комментарий. Стоп, сегодня статья снова не об этом. Читать далее...