Архив

Публикации с меткой ‘высоконагруженная архитектура’

Технологии инакомыслия: исследуем работу с СУБД через JDBC не выходя из РНР

php_jdbc.jpgПриветствуем наших читателей. Сегодня у нас нетривиальная статья-исследование. Честно говоря,  я ещё сам не знаю, выйдет ли из него что-то стоящее и рабочее, но попытаться стоит. Спросите почему? Сейчас. Начнём с основных понятий. И так, JDBC - это, если расшифровать, Java Database Connectivity, то есть, специальный API для Java, который позволяет унифицировать доступ к различным базам данных, вне зависимости от типа СУБД. Концепция JDBC основана на понятии "драйвера", который может загружаться в во время выполнения и отвечает за унификацию доступа к СУБД. Этот API входит в стандартную поставку Java (в пакете java.sql). Расшифровывать PHP мы не будем, надеюсь всем понятно. Но открыт вопрос "зачем?". Если вы постоянный читатель нашего блога, вы могли заметить несколько статей о различных JDBC драйверах, позволяющих организовать пулы коннектов, кластеризацию и отказоустойчивость соединения с базой данных, таким образом организовать высокопроизводительный интерфейс для доступа к СУБД, причём, не привязываясь к определённым особенностям базы данных. Но вот для РНР такого, к сожалению нет, из встроенных интерфейсов доступа есть только mysqli и PDO, теперь ещё появился вариант mysqlnd (это то, что касается СУБД MySQL). Таким образом, для построения отказоустойчивой архитектуры на базе РНР и MySQL необходимо применять сторонние решение - систему кластеризации MySQL, MySQL Proxy или ещё что-то. Но ведь наши друзья-разработчики из мира Java могут иметь это все (в первую очередь, пул коннектов и кластеризацию) прямо "out of the box", применяя просто нужный JDBC драйвер (например, описанный нами HA-JDBC). Непорядок, сказал себе я вчера, и пошёл исследовать тему взаимодействия приложений на РНР и баз данных через JDBC.

Оказалось, в этой области есть достаточно много интересных разработок, так что исследование обещает быть интереснейшим.
Читать далее...

HA-JDBC — строим отказоустойчивый кластер на основе Java и драйвера JDBC

21 января 2008 2 комментария

ha-jdbc.pngПриветствуем наших читателей. Язык Java достаточно популярный, в частности, в корпоративной среде, хотя, конечно, там с ним конкурирует технология .NET/С# от Microsoft. Очень много, на мой взгляд, для популяризации Java, в частности, применительно к веб-сервисам и приложениям, сделала организация Apache Fundation, поддерживая целый стек технологий на основе Apache Tomcat и другие разработки (Ant, Maven, Geronimo). Но это нас заведёт немного не туда. Сегодня я хотел рассказать вам об интересном продукте, помогающем создавать высоконагруженные проекты, строить кластерную архитектуру баз данных и обеспечивать отказоустойчивый уровень абстракции для доступа к СУБД. Все это работает на основе стандартного драйвера JDBC, предназначенного для унификации доступа к различным СУБД из Java приложений. Кстати, одним из типичных применений этого пакета является совместно с сервером Apache Tomcat предоставление доступа к кластеру баз данных для веб-приложений.

Проект имеет название HA-JDBC, которое, наверное, даже не стоит расшифровывать - и так ясно. Мы можем использовать любую СУБД, которая поддерживает доступ через JDBC, например, MySQL (по сути, получится некий аналог MySQL Proxy), PostgreSQL и другие (включая достаточно экзотические, вроде Apache Derby, Firebird, Ingres и другие, по сути любую стандартную СУБД, поддерживающую SQL 92). Высокая доступность означает, что в конфигурации кластера может произойти сбой или полное отключение любого узла, но выполнение текущей транзакции не будет прервано. Эта возможность является одной из базовой для проекта, но для обеспечения других (например, выстраивание пула коннектов к базе) необходимо дополнительное ПО. Читать далее...

Веб-обзор #8: Сегодня только бизнес, стартапы, и совсем немножко технологий.

236.pngПриветствуем наших читателей. Вот и настало время нового выпуска нашего веб-обозрения, где мы представляем вам интереснейшие ссылки со всего мира. К сожалению, наш традиционный спонсор выпусков, проект DevLinks.com.ua пока остановлен в связи с некоторыми техническими проблемами в движке, но обещаем, что в скором времени снова его запустим. А пока приготовьтесь, как всегда, налейте себе чашку вашего любимого напитка и устраивайтесь по удобнее и вперёд...

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

Работаем с кешами через ezComponents — файловый, APC, memcached.

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

ezcomponents.jpgПриветствую наших читателей. Не так давно мы подняли тему enterprise-ready фреймворков и компонент для РНР, которые можно использовать в больших и серьёзных проектах. А когда подняли, то исследовали немного довольно старый, но активно развивающийся проект ezComponents, кстати, на днях вышла первая бета последней версии - 2007.2.

Некоторое время я все присматривался к этим компонентам, теперь же буду планомерно внедрять его поддержку в свой текущий масштабный проект (кто не знает, онлайновая стратегическая игра, широко использующая AJAX). А результатами своих работ по части ezComponents буду делится с нашими читателями. Да, сразу предупрежу вопросы, почему я не использую популярный сейчас (да и мощный, да, тут нечего сказать) фреймоворк Zend Framework, который также обновился до версии 1.0.3. Для меня лично он неудобен тем, что навязывает свою парадигму реализации всей архитектуре на основе MVC. И хотя в ezComponents это также возможно, но гораздо удобнее чтобы библиотека просто предоставляла различные компоненты и возможности, что позволит встроить её в любое уже работающие приложение, а не перепроектировать его с нуля, даже если это позволит поднять разработку на новый качественный уровень (что, собственно, ещё тоже под вопросом). Поэтому мы выбрали в качестве базового фреймворка все же ezComponents, правда не весь, а пока всего лишь несколько компонент, в первую очередь модуль кёша, который в этой библиотеке просто отличный. Читать далее...

Синхронизация удалённых баз данных через интернет: Java, MySQL или Oracle, JDBC и SymmetricDS

16 ноября 2007 4 комментария

symmetric-chrome.pngПриветствую наших читателей. Если вы разрабатываете какую-то распределённую систему, или просто так сложилось, что существуют несколько баз данных (серверов), которые разнесены в пространстве, и между которыми нужно, с одной стороны, обеспечить синхронизацию данных, с другой - каналы связи не позволяют настроить полноценную репликацию, а над данными ещё бы хотелось и проводить какие-то несложные операции во время синхронизации, фильтровать их, да и избежать перегрузки как серверов, так и серверов, в случае если их несколько десятков или даже сотен. Вы считаете, что это редкая проблема и её только в NASA решают? Ну, к примеру, системы распределённых платёжных или торговых терминалов - их вполне в развитой сети может быть несколько тысяч, и нужно постоянно синхронизировать с одним или несколькими основными серверами, причём это вполне может быть и многоуровневая архитектура. А ещё хочется, чтобы такое решение было простое, бесплатное, то есть open-sourсe, и работало на любой платформе... Не спешите одёргивать себя от таких мыслей, все это вполне реально. Как? Используя SymmetricDS.
Читать далее...