Архив

Архив раздела ‘Java — язык и технологии’

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

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

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

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

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

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

AGPsource Session Server — первая бета-версия компонента из состава игровой платформы

3 февраля 2009 Comments off

logo3Приветствуем наших читателей.  Последние несколько недель я был занят доведением до ума собственных проектов, и вот результат - первый компонент из проектируемой нами системы для игровых приложений, добрался до бета-версии. Далее я расскажу об особенностях проекта, его реализации и возможностях - а его, кстати, вполне можно использовать в любых проектах, не только игровых.

Предпосылки к созданию

В случае разработки масштабных РНР-приложений и распределённых систем, перед программистами встает задача обеспечения корректной обработки пользовательских запросов, в случае, если приложение работает на нескольких серверах. Обычные РНР-приложения используют механизм сессий для хранения идентификационных данных и сессии задействованы при обработке каждого запроса от клиента. В обычном режиме сессии хранятся в файловой системе и, таким образом, доступны только на том же сервере, где запущено приложение. Если у нас стоит балансировщик нагрузки, он не может, в случае необходимости, перенаправить запросы на другой, свободный в этот момент сервер, так как для корректной обработки нам необходима сессия, а она хранится на том сервере, где пользователь начала работу. Для этого есть даже специальный термин, «Sticky session» - по сути, это стратегия работы балансировщика, который на основе сессионного идентификатора определяет, куда посылать все запросы. Читать далее...

AGPsource Game Platform — эксперименты с игровым движком, РНР <> JSON <> JDBC

logo3

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

И так, доступ к базе данных. Изначально мы имеем игру, которая написана на РНР, соответственно, если отбросить промежуточные библиотеки, используется либо mysqli или же PDO, который, в свою очередь, опирается теперь на новый драйвер Mysqlnd. К сожалению, на этом уровне внедрить какие-то более продвинутые методики работы с базой сложно.
Читать далее...

Исследование совместимости Zend Framework и Quercus PHP

28 декабря 2008 Comments off

caucho-whiteПриветствуем наших читателей. Нас уже почти-почти настиг праздник, так что, вероятно, это последняя запись блога в этом году, далее я буду только обновлять наш Twitter (а он стал очень даже популярным и читаемым каналом, там уже 45 читателей! Присоединяйтесь и вы!). А тема последнего поста будет снова таки оригинальной и исследовательской. Если помните, я давно уже заинтересовался объединением мира Java и PHP, в частности, при помощи замечательного продукта Quercus PHP - порта PHP-интерпретатора вместе с библиотеками на Java. И вот, очередной раз просматривая уже почти готовый архитектурный макет своего движка для браузерных онлайн игр, я обратил внимание на ускользнувшую от меня деталь. Ведь я собирался использовать популярный и мощный фреймворк Zend Framework, запуская его, конечно же, поверх QuercusPHP (детальнее про архитектуру движка я начну рассказывать после нового года). А он, как известно, достаточно требователен к различным расширениям и модулям - в одном проекте, что я сейчас делаю, используя только Zend_Search_Lucene, я встретился с необходимостью подключения ранее не используемых расширений. А значит вполне может быть ситуация, что эта платформа не будет поддерживать все необходимые функции для работы Zend Framework-а. Просмотр Google по поводу совместимости ничего определенного не дал, так что было решено посвятить пару часов собственному исследованию. Читать далее...

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 1

Приветствуем наших читателей. К сожалению, очень много дел и проблем навалилось, поэтому частота обновление блога не такая, как хотелось бы, но это поправимо. Параллельно к основной работе, я в "фоне" обдумываю и прикидываю реализации архитектуры для игровых проектов (напомню, что основная область моих интересов и работ - создание онлайновых браузерных игр). Последнее время я все чаще и чаще возвращаюсь к мысли, что интересно было бы реализовать основной игровой сервер на основе очередей сообщений (MQ или Messages queue). То есть,  движок такой игры будет представлять собой набор компонентов, которые будут общаться между собой посредством асинхронных сообщений, а каждый компонент может быть как генератором сообщений, так и подписчиком, то есть исполнять другие сообщения.

Такой подход, насколько я понимаю, широко применяется в мире Java, там для этого есть стандарт Java Message Service (JMS) и применяются брокеры сообщений и на этом базируется архитектура  Enterprise service bus (ESB), например,  Apache ServiceMix. Но для нас это пока высокая сфера крупных проектов, а в специфике веба и веб-ориентированных приложений я бы хотел рассмотреть, можно ли что-то сделать подобное, но с меньшими затратами и обеспечить приложению отказоустойчивость, распределение нагрузки и асинхронную обработку. И конечно, очень желательно, чтобы это было реализовано на РНР как основном языке реализации всех компонентов сервера. Читать далее...

Caucho Resin — сервер приложений Java + PHP корпоративного уровня

5 сентября 2008 7 комментариев

Приветствуем наших читателей. Кстати, у нас произошло небольшое событие - да-да, именно у нас с вами. Если заметили, уже несколько дней счётчик Feedburner, при всех огрехах в работе сервиса за последние месяцы, показывает стабильно количество читателей больше 500. Это достаточно знаковая цифра для меня лично и, наверное, для отдельного блога узкотематической профессиональной направленности тоже. А достаточно скоро у нас будет первый день рождения, но пока ещё рано праздновать... нужно работать. И сегодня я расскажу вам о сервере приложений Caucho Resin.

Для приложений Java, я имею ввиду, веб-приложений, существует уже достаточное количество серверов, которые уже давно разрабатываются и давно вышли на уровень, достаточный для того, чтобы применять их в самых сложных и ответственных случаях. Думаю, всем известны  Apache Tomcat и Jetty - самые известные сервера из списка открытых разработок. Но к этому списку нужно добавить теперь еще и Resin. В ряде тестов его Pro версия превосходит в производительности Tomcat 6, обладая при этом рядом возможностей "из коробки", которых нет в других серверах или они реализуются при помощи сторонних средств. Читать далее...

10gen — ещё один стартап в области Cloud Computing, развивающий концепцию platform-as-a-service

10 августа 2008 4 комментария

Приветствуем наших читателей. На улице дождь и вообще погода радует (радует потому что при солнечном свете прямом достаточно трудно на работе сосредоточиться, поэтому дождливые дни для меня самые рабочие), поэтому сегодня мы поговорим о чём-то высоком... облачном. Да, о новом или, вернее, малоизвестном у нас стартапе, который создал свою платформу для облачных вычислений, хотя и это не совсем уж так точно - это платформа, которая предоставляется как сервис и позволяет получить гибкую и масштабированную среду исполнения для веб-проектов. В чём-то это все похоже на известный всем и уже почти нарицательный Amazon EC2, но и отличается от него существенным образом. Что и как - мы дальше и рассмотрим.

Стартап 10gen предлагает разработчикам свою технологию построения platform-as-a-service, которая позволяет получить гибкую и почти неограниченную по масштабированию платформу (уже сколько раз мы повторили это слово) для развёртывания приложений, которым нужно работать в условиях переменной нагрузки, которая, однако, имеет тенденцию для постоянного роста, которым нужно защищённая и простая платформа, чтобы добавление нового сервера или апгрейд базы данных не вызвал прекращение работы всей системы на несколько часов или суток. Читать далее...

Полнотекстовый поиск в веб-проектах: Sphinx, Apache Lucene, Xapian

4 августа 2008 23 комментария

Полная авторская верcия.
Оригинал материала написан специально для Developers.org.ua

Наверное любой современный веб-проект сложно себе представить без... без контента! Да, именно контент в разных его проявлениях сегодня "правит бал" в различных веб-проектах. Не так важно - создаваемый пользователями или получаемый из других источников автоматически - информация является основной любого (ну, или почти любого) проекта. А раз так - то вопрос поиска необходимой информации стоит очень остро. И острее с каждым днем, ввиду стремительного расширения количества этого самого контента, в основном за счёт создаваемого пользователями (это и форумы, и блоги и модные нынче сообщества, вроде Habrahabr.ru). Таким образом, любой разработчик, реализующий сегодня какой-либо проект, сталкивается с потребностью реализовать поиск в своём веб-приложении. При этом требования к такому поиску уже намного сложнее и шире, чем даже год-два назад. Конечно, для каких-то проектов вполне подойдёт и простое решение, к примеру, вполне можно использовать Custom Google Search. Но чем более сложное приложение, и чем сложнее структура контента, если требуются особые виды поиска и обработки результата, или же просто количество или формат данных в вашем проекте особый, вам потребуется собственная поисковая система. Именно своя система, собственный поисковый сервер или сервис, а не сторонний, пусть даже гибкий и настраиваемый. Но что же выбрать, и вообще - какие сейчас на рынке есть поисковые проекты, которые готовы для использования в реальных проектах, не исследовательских или научных, а реальных бизнес-приложениях? Далее мы кратко рассмотрим различные варианты поисковых решений, пригодных для встраивания в ваше веб-приложение или развёртывания на собственном сервере.
Читать далее...

Достучаться до небес или тестируем Aptana Cloud своими руками

Приветствую наших читателей. Это будет  эксклюзивный материал - я получил приглашение для тестирования новейшего сервиса Cloud Computing от компании Aptana. Ранее я уже писал один обзор, но это был вольный перевод записи в блоге одного из западных разработчиков, теперь же я могу самостоятельно попробовать все тонкости этой платформы и спешу поделится этой информацией с вами, уважаемые читатели.

И так, приступим. Для начала работы нам необходимо обновить (или установить, если не было) версию Aptana IDE. При этом учтите, что сейчас последняя версия, доступная даже в профессиональным подписчикам, 1.1, но для работы с Cloud нужен особый релиз следующей версии, который доступен по другому адресу, который вам после регистрации сообщат вместе с логином и паролем для доступа. Читать далее...