Как говорят некоторые коллеги: "тихо и незаметно"...
Дак вот, тихо и незаметно, проект www.mypicturetown.com перешел от простого кластера к полноценной "grid" архитектуре. Если ранее - это был кластер из нескольких серверов поверх условно "центральной" базы данных, то теперь - это большая сеть состоящая из множества, так называемых, "AB" пар (primary-secondary).
Каждая "AB" пара в гриде представляет собой клатер из 2-х хостов (primary - secondary). Причем, кластеризация самопальная. Каждый AB хост имеет как файловое хранилище, так и базу данных (PostgreSQL). Разделение между ними, скорее, master-master нежели master-slave. Дублирование в файловом хранилище реализовано на уровне бизнес логики, а вот дублирование в базу выполняется посредством собственной имплементации JDBC драйвера (на основе HA-JDBC). Конечно же, каждый пользователь (его данные и файлы) "привязан" (размещается) на конкретной AB паре. Ничего удивительного :) Тем более, что это довольно распространенная практика. Конечно встает вопрос о неком "центральном" реестре пользователей. Где хранится информация о том что данный пользователь (с таким то UID) размещается на такой то AB паре.
Однажды, Иван Блинков (кстати, рекомендую посетить его блог) задавал мне вопросы связанные с деталями реализации наших AB кластеров и центрального реестра пользователей (у нас в системе его называют CDC). Теперь, когда мы уже зарелизилист, могу рассказать некоторые "секреты" :)
Итак, про JDBC репликацию я уже рассказал. Конечно же, процедуры восстановления базы данных после сбоя выписаны "руками" поверх все того же HA-JDBC.
Центральный реестр пользователей (CDC) - реализован как кластер из одного или более хостов. В качестве хранилища, использующий Berkeley DB (Java Edition) от ORACLE. Я, как автор CDC, могу "похвастать" еще и тем - что механизм распределенных транзакций сделан собственный. Кроме того, сервис полностью удовлетворяет требованиям "zero administration" и умеет "самовосстанавливаться" и "самореплицироваться".
Для построения кластеров мы активно используем JGroups.
Вот пожалуй и все "секреты", остальное - дело техники :)
Желаю удачи, коллеги!
Комментариев нет:
Отправить комментарий