Pull to refresh

Краткий обзор membase — нового NoSQL решения от авторов memcached

Reading time 3 min
Views 5.5K
MemBase — открытое, распределенное персистентное хранилище ключ-значение оптимизированное для хранения данных веб-приложений.

  • персистентен
  • имеет квази-постоянное (quasi-deterministic) малое время отклика
  • высокая скорость работы
  • линейно масштабируется с одного сервера до тысяч
  • не имеет схемы данных (только ключ-значение)
  • совместим по протоколу с memcached




Ключевые характеристики системы:



Простота. Все серверы кластера MemBase одинаковы. Клонируйте любой сервер, присоедините его к кластеру и нажмите кнопку Rebalance в веб-интерфейсе. Больше ничего делать не нужно. Протокол совместим с memcached, а значит может немедленно использоваться на множестве платформ. Фактически, в системе использована достаточно большая часть кода memcached + код для хранения данных на диске. Установка сервера и запуск MemBase занимают около 5 минут

Скорость. MemBase автоматически распределяет и данные и запросы на манипуляцию ими между серверами кластера. Данные реплицируются для обеспечения высокой доступности даже в случае выхода части серверов из строя, а также автоматически перемещаются внутри хранилища в память с соответствующим временем доступа (часто используемые данные при этом попадают в самую быструю память, а наименее часто — на медленные диски). Вся архитектура системы оптимизирована для высочайшей скорости работы.

Гибкость. MemBase масштабируется линейно. Серверы можно добавлять / удалять из кластера прямо в процессе работы.

Надежность. Любое количество серверов системы (вплоть до значения replication count, которое можно изменять) может отказать в любой момент времени, но кластер все равно будет продолжать свою работу. Даже в случае, если сервер-лидер кластера выйдет из строя, его замена будет подобрана автоматически без вмешательства пользователя.

Полная совместимость с memcached по протоколу. Для общения с membase приложения используют библиотеку memcached и memcached протокол.

Алгоритм выполнения операции SET


При выполнении операции установки значения ключа происходит следующее:
  1. Приложение обращается к memcached API с информацией о ключе и значении
  2. API хеширует ключ и определяет мастер-сервер кластера для данного ключа
  3. Запрос через сеть направляется мастер-серверу данного ключа
  4. Мастер-сервер выполняет операцию
  5. Мастер-сервер выполняет репликацию на другие серверы кластера
  6. Кеширует сохраняемое значение в памяти (как memcached)
  7. Данные помещаются в очередь на запись в персистентное хранилище, если такой запрос на запись ключа с таким значением еще не отправлялся
  8. Приложению возвращается ответ


Архитектура


На самом высоком уровне MemBase состоит из двух частей: Data Manager и Cluster Manager. Причем, наличие Cluster Manager на всех машинах кластера не обязательно, хотя для того, чтобы его исключить, придется пересобирать MemBase.

Data Manager



MemBase DataManager использует два порта для общения с клиентами. 11211 для клиентов, поддерживающих только версию 1.0 memcapable API и порт 11210 для более продвинутых клиентов с memcapable API 2.0 и выше. Такие клиенты умеют сами хешировать ключи для определения их мастер-серверов. Ключи от клиентов 1.0 хешируются с помощью части кода, которая называется Moxi.


Система хранения данных MemBase устроена таким образом, чтобы наиболее часто используемые данные хранились в наиболее быстрой памяти (оперативная), а наименее часто — в медленной (обычные диски). Если в вашей системе есть другие типы хранилищ (SSD), вы можете указать их приоритет. При определении какие данные где должны храниться используется LRU алгоритм.

Cluster Manager



Веб-интерфейс MemBase и REST-подобный интерфейс висят на порту 8080 (можно менять). Утилита membase умеет отправлять REST запросы. Таким образом, управлять кластером можно и с командной строки.

Службы, работающие на всех серверах кластера одновременно:

Heartbeat — это монитор, который периодически обменивается информацией с сервер-лидером кластера для получения информации о состоянии всей системы
ProcessMonitor — следит за состоянием Data Manager, перезапуская службу в случае сбоев и стучит обо всем Heartbeat.
Configuration Manager — следит за конфигурацией кластера — картой хеширования ключей, активными запросами на репликацию, картой ребалансировки и так далее.
Global Singleton Supervisor — следит за сервер-лидером кластера и участвует в его переизбрании в случае чего.

Службы, работающие только на одном сервере кластера в каждый момент времени:

Rebalance Orchestrator — напрямую управляет процессом ребалансировки кластера
Node Health Monitor или The Doctor — собирает информацию от процессов Heartbeat всех машин кластера, обрабатывает ее и реагирует соответствующим образом (например, отправляя уведомления)
vBucket state and replication manager — мониторит процессы репликации в кластере

FAQ


Q: Кто стоит за membase?
A: NorthScale, Zynga (Веселую ферму / FarmVille все помнят?) and NHN.

Q: Используется ли membase на production серверах?
A: Zynga использует его для работы серверов, поддерживающих игру FarmVille. Другие крупные внедрения мне пока неизвестны.
Tags:
Hubs:
+77
Comments 42
Comments Comments 42

Articles