diff --git a/docs/cluster.png b/docs/cluster.png deleted file mode 100644 index fbf86ab61ffa0757aeb865d1090fa6d7284e2d38..0000000000000000000000000000000000000000 Binary files a/docs/cluster.png and /dev/null differ diff --git a/docs/cluster.svg b/docs/cluster.svg new file mode 100644 index 0000000000000000000000000000000000000000..68aa307760ecebc2ad5912dda63eec60522df84f Binary files /dev/null and b/docs/cluster.svg differ diff --git a/docs/description.md b/docs/description.md index 11d67865eceea75252ee4b22783c8a621226ef0c..bd91bbe7a56cbef34a58b509f1a2e3942ac991ab 100644 --- a/docs/description.md +++ b/docs/description.md @@ -4,7 +4,7 @@ Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… и платформу Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ перÑиÑтентных приложений на Ñзыке Rust и ÑредÑтва ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¡Ð£Ð‘Ð” на Ñзыке SQL. ## Ðазначение -ОÑновным предназначением продукта Picodata ÑвлÑетÑÑ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾ маÑштабируемое хранение Ñтруктурированных и неÑтруктурированных данных, управление ими, предоÑтавление Ñреды вычиÑлений внутри клаÑтера. +ОÑновным предназначением продукта Picodata ÑвлÑетÑÑ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾ маÑштабируемое хранение Ñтруктурированных и неÑтруктурированных данных, управление ими, предоÑтавление Ñреды вычиÑлений внутри клаÑтера, ÑоÑтоÑщего из реплицированных отдельных узлов. Такие узлы называют ÑкземплÑрами Picodata или *инÑтанÑами*. ## Задачи Задачи, решаемые ПО Picodata, включают в ÑебÑ: @@ -12,7 +12,7 @@ Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… * Реализацию общего линеаризованного хранилища конфигурации, Ñхемы данных и топологии клаÑтера, вÑтроенного в раÑпределенную ÑиÑтему ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ð°Ð¼Ð¸ данных. * ПредоÑтавление графичеÑкого интерфейÑа и интерфейÑа командной Ñтроки по управлению топологией клаÑтера. * Реализацию runtime-библиотек по работе Ñ Ñетью, файловому вводу-выводу, Ñозданию зеленых потоков (green threads) и управлению ими, работе Ñо вÑтроенной СУБД ÑредÑтвами Ñзыка Rust. -* Поддержку Ñзыка SQL Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ как Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ одного узла клаÑтера, так и Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вÑего клаÑтера. +* Поддержку Ñзыка SQL Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ как Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ отдельного инÑтанÑа, так и Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вÑего клаÑтера. * Управление клаÑтером. * Поддержку жизненного цикла Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² клаÑтере, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²ÐµÑ€Ñионирование, управление завиÑимоÑÑ‚Ñми, упаковку диÑтрибутива, развертывание и обновление запущенных приложений. @@ -27,34 +27,48 @@ Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… * и многое другое! ## ПреимущеÑтва -Picodata позволÑет развёртывать и управлÑÑ‚ÑŒ клаÑтерами Ñ Ð¡Ð£Ð‘Ð” Tarantool, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñледующие возможноÑти: +КлаÑтер Ñ Ð¡Ð£Ð‘Ð” Picodata имеет Ñледующие преимущеÑтва: + +* автоматичеÑкое горизонтальное маÑштабирование клаÑтера; +* более проÑÑ‚Ð°Ñ Ð½Ð°Ñтройка Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка шардированного клаÑтера. ТребуетÑÑ Ð¼ÐµÐ½ÑŒÑˆÐµ файлов конфигурации; +* ÑовмеÑтимоÑÑ‚ÑŒ Ñ Ð»ÑŽÐ±Ñ‹Ð¼Ð¸ инÑтрументами Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½ÑтанÑов (Ansible, Chef, Puppet); +* обеÑпечение выÑокой доÑтупноÑти данных без необходимоÑти в клаÑтере Etcd и дополнительных наÑтройках; +* автоматичеÑкое определение активного инÑтанÑа в репликаÑетах любого размера; +* ÐµÐ´Ð¸Ð½Ð°Ñ Ñхема данных во вÑех репликаÑетах клаÑтера; +* возможноÑÑ‚ÑŒ обновлÑÑ‚ÑŒ Ñхему данных и менÑÑ‚ÑŒ топологию работающего клаÑтера, например добавлÑÑ‚ÑŒ новые инÑтанÑÑ‹. Picodata автоматичеÑки управлÑет верÑиÑми Ñхемы; +* вÑтроенные инÑтрументы Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ запуÑка приложений. -* горизонтальное маÑштабирование клаÑтера Ñ Ð¸Ñпользованием библиотеки логичеÑкого ÑˆÐ°Ñ€Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ VShard и ÑобÑтвенных выÑокоуровневых инÑтрументов, облегчающих работу админиÑтраторов и разработчиков. -* гибкое управление вычиÑлительной нагрузкой за Ñчёт Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐ·Ð»Ð¾Ð² клаÑтера и автоматизированной баланÑировки. -* гибкое удаление уÑтаревших данных. -* гибкое обновление Ñхемы данных и изменение топологии клаÑтера,в например добавление новых узлов к уже работающему клаÑтеру. -* обеÑпечение выÑокой доÑтупноÑти и перÑиÑтентноÑти данных Ñразу, без иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ инÑтрументариÑ. ## Ðрхитектура -Ðрхитектура клаÑтера под управлением Picodata предполагает ÑиÑтему узлов, входÑщих в ÑоÑтав клаÑтера. Каждый узел может выполнÑÑ‚ÑŒ различные роли, например роль Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, роль Ñервера приложениÑ, или Ñлужебную роль координатора клаÑтера. -Ð’Ñе узлы работают Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¹ Ñхемой данных и кодом приложениÑ. Каждый процеÑÑ Ð±Ð°Ð·Ñ‹ данных выполнÑетÑÑ Ð½Ð° одном процеÑÑорном Ñдре и хранит вÑе Ñвои данные в оперативной памÑти. -Любой отдельный узел ÑвлÑетÑÑ Ñ‡Ð°ÑÑ‚ÑŒ набора реплик, который также называют *репликаÑетом*. РепликаÑет может ÑоÑтоÑÑ‚ÑŒ из одного узла или неÑкольких дубликатов одного и того же набора данных. Внутри репликаÑета вÑегда еÑÑ‚ÑŒ *лидер* (оÑновной узел) и — еÑли реплик больше 1 — то некоторое чиÑло вÑпомогательных узлов, обеÑпечивающие отказоуÑтойчивоÑÑ‚ÑŒ ÑиÑтемы в Ñлучае выхода из ÑÑ‚Ñ€Ð¾Ñ Ð¸Ð»Ð¸ недоÑтупноÑти лидера. ЧиÑло реплик определÑетÑÑ *фактором репликации*, заданным Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° в глобальных наÑтройках Picodata. +### СоÑтавные чаÑти клаÑтера +Ðрхитектура клаÑтера Picodata предполагает ÑиÑтему отдельных *инÑтанÑов* — программных узлов, входÑщих в ÑоÑтав клаÑтера. Каждый такой узел может выполнÑÑ‚ÑŒ различные роли, например роль Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, роль Ñервера приложениÑ, или Ñлужебную роль координатора клаÑтера. +Ð’Ñе инÑтанÑÑ‹ работают Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¹ Ñхемой данных и кодом приложениÑ. Каждый процеÑÑ Ð±Ð°Ð·Ñ‹ данных выполнÑетÑÑ Ð½Ð° одном процеÑÑорном Ñдре и хранит иÑпользуемый набор данных в оперативной памÑти. +Любой отдельный инÑÑ‚Ð°Ð½Ñ ÑвлÑетÑÑ Ñ‡Ð°Ñтью набора реплик, который также называют *репликаÑетом*. РепликаÑет может ÑоÑтоÑÑ‚ÑŒ из одного или неÑкольких инÑтанÑов — дубликатов одного и того же набора данных. Внутри репликаÑета вÑегда еÑÑ‚ÑŒ *активный* инÑÑ‚Ð°Ð½Ñ Ð¸ — еÑли реплик больше 1 — то некоторое чиÑло дополнительных инÑтанÑов, обеÑпечивающих отказоуÑтойчивоÑÑ‚ÑŒ ÑиÑтемы в Ñлучае выхода из ÑÑ‚Ñ€Ð¾Ñ Ð¸Ð»Ð¸ недоÑтупноÑти активного инÑтанÑа. ЧиÑло реплик определÑетÑÑ *фактором репликации*, заданным в глобальных наÑтройках Picodata. + +Ðа риÑунке ниже показана Ñхема проÑтого клаÑтера из двух репликаÑетов, каждый из которых ÑоÑтоит из двух инÑтанÑов (активного и резервного): -Ðа риÑунке ниже показана Ñхема проÑтого клаÑтера из двух репликаÑетов, каждый из которых ÑоÑтоит из двух узлов (активного и в ожидании): + - +РепликаÑеты ÑвлÑÑŽÑ‚ÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°Ð¼Ð¸ горизонтального маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера. Данные баланÑируютÑÑ Ð¼ÐµÐ¶Ð´Ñƒ ними автоматичеÑки. -РепликаÑеты ÑвлÑÑŽÑ‚ÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°Ð¼Ð¸ физичеÑкого маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера. Данные баланÑируютÑÑ Ð¼ÐµÐ¶Ð´Ñƒ ними автоматичеÑки. -Внутри каждого репликаÑета еÑÑ‚ÑŒ *bucket* — Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ð¸Ð¼Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° хранениÑ, обеÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾ÑÑ‚ÑŒ данных (например, хранение неÑкольких ÑвÑзанных Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ запиÑей на одном физичеÑком узле). Таким образом, при горизонтальном маÑштабировании клаÑтера данные раÑпределÑÑŽÑ‚ÑÑ Ð¿Ð¾ уÑтройÑтвам Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ напрÑмую, а внутри bucket'ов. Ðто позволÑет увеличить ÑкороÑÑ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов к БД и одновременно Ñ Ñтим Ñнизить нагрузку на Ñетевую инфраÑтруктуру клаÑтера. Bucket вÑегда хранитÑÑ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑки на одном узле и ÑвлÑетÑÑ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ звеном между данными и уÑтройÑтвом хранениÑ. Ð’ каждом репликаÑете может быть много bucket'ов (или не быть не одного). Внутри bucket'а данные задублированы по вÑем узлам в рамках репликаÑета в ÑоответÑтвие Ñ Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ репликации. +### Хранение данных +Внутри каждого репликаÑета еÑÑ‚ÑŒ *bucket* — Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ð¸Ð¼Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° хранениÑ, обеÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾ÑÑ‚ÑŒ данных (например, хранение неÑкольких ÑвÑзанных Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ запиÑей на одном физичеÑком узле Ñети). Сам по Ñебе bucket не имеет ограничений по ёмкоÑти и может Ñодержать любой объём данных. Горизонтальное маÑштабирование позволÑет раÑпределить bucket'Ñ‹ по разным шардам, оптимизировав производительноÑÑ‚ÑŒ клаÑтера путём Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… реплицированных инÑтанÑов. Чем больше репликаÑетов входит в ÑоÑтав клаÑтера, тем меньше нагрузка на каждый из них. Bucket хранитÑÑ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑки на одном репликаÑете и ÑвлÑетÑÑ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ звеном между данными и уÑтройÑтвом хранениÑ. Ð’ каждом репликаÑете может быть много bucket'ов (или не быть не одного). Внутри bucket'а данные задублированы по вÑем инÑтанÑам в рамках репликаÑета в ÑоответÑтвии Ñ Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ репликации. КоличеÑтво bucket'ов задаётÑÑ Ð¿Ñ€Ð¸ первоначальной наÑтройке клаÑтера. Ðа Ñхеме ниже показан пример Ñхемы Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… внутри репликаÑета: - + -Узлы внутри репликаÑета обеÑпечивают его отказоуÑтойчивоÑÑ‚ÑŒ. Однако, Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð½Ð°Ð´Ñ‘Ð¶Ð½Ð¾Ñти каждый узел внутри репликаÑета находитÑÑ Ð½Ð° разных физичеÑких Ñерверах, а также, как правило, в разных, географичеÑки удалённых друг от друга датацентрах. Таким образом, репликаÑет ÑтановитÑÑ *раÑпределённым* и в Ñлучае недоÑтупноÑти или выходы из ÑÑ‚Ñ€Ð¾Ñ Ð´Ð°Ñ‚Ð°Ñ†ÐµÐ½Ñ‚Ñ€Ð° продолжает работать, Ð´ÐµÐ»Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¼ другой узел. За раÑпределение узлов между разными Ñерверами отвечает библиотека Tarantool vShard, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð² Picodata. +### ОтказоуÑтойчивоÑÑ‚ÑŒ +Ðаличие неÑкольких реплик внутри репликаÑета обеÑпечивают его отказоуÑтойчивоÑÑ‚ÑŒ. Дополнительно Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð½Ð°Ð´Ñ‘Ð¶Ð½Ð¾Ñти каждый инÑÑ‚Ð°Ð½Ñ ÐºÐ»Ð°Ñтера внутри репликаÑета находитÑÑ Ð½Ð° разных физичеÑких Ñерверах, а в некоторых ÑлучаÑÑ… — в удалённых друг от друга датацентрах. Таким образом, в Ñлучае недоÑтупноÑти датацентра в репликаÑете проиÑходит переключение на резервную реплику (инÑтанÑ) без Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹. Пример географичеÑкого раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñета показан на Ñхеме ниже: - + + +### Шардирование +Шардирование — Ñто раÑпределение bucket'ов между различными репликаÑетами. Ð’ Picodata иÑпользуетÑÑ Ð¾Ñнованное на Ñ…Ñшах шардирование Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸ÐµÐ¼ данных в виртуальных bucket'ах. Каждый репликаÑет ÑвлÑетÑÑ *шардом*, и чем больше репликаÑетов имеетÑÑ Ð² клаÑтере, тем Ñффективнее Ð´Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ разделить маÑÑив данных на отдельные наборы данных меньшего размера. При добавлении новых инÑтанÑов в клаÑтер и/или формировании новых репликаÑетов, Picodata автоматичеÑки равномерно раÑпределит bucket'Ñ‹ Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ новой конфигурации. +Пример автоматичеÑкого ÑˆÐ°Ñ€Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ добавлении в клаÑтер новых инÑтанÑов показан на Ñхеме ниже: + + -Таким образом, каждый узел ÑвлÑетÑÑ *репликаÑетом*, а каждый репликаÑет — *шардом*. \ No newline at end of file +Таким образом, каждый инÑÑ‚Ð°Ð½Ñ (ÑкземплÑÑ€ Picodata) ÑвлÑетÑÑ *чаÑтью репликаÑета*, а каждый репликаÑет — *шардом*, а шарды раÑпределены между неÑколькими Ñерверами. \ No newline at end of file diff --git a/docs/failover.svg b/docs/failover.svg new file mode 100644 index 0000000000000000000000000000000000000000..fe7e3a9443c68921920916cd2eb61edb97c46481 Binary files /dev/null and b/docs/failover.svg differ diff --git a/docs/sharding.png b/docs/sharding.png deleted file mode 100644 index 8859c926fbb333a90309d36eb19af5d85f6c0778..0000000000000000000000000000000000000000 Binary files a/docs/sharding.png and /dev/null differ diff --git a/docs/sharding.svg b/docs/sharding.svg new file mode 100644 index 0000000000000000000000000000000000000000..c403d1e8e47484e33a0962c88bfc1b19f4f7ae30 Binary files /dev/null and b/docs/sharding.svg differ diff --git a/docs/source_images/cluster.svg b/docs/source_images/cluster.svg new file mode 100644 index 0000000000000000000000000000000000000000..48ede2600e9be237113f47b1f267cbdfaaf130ee Binary files /dev/null and b/docs/source_images/cluster.svg differ diff --git a/docs/source_images/cluster_ru.svg b/docs/source_images/cluster_ru.svg new file mode 100644 index 0000000000000000000000000000000000000000..6cec4f8b026db9513ac21e2aa6bbad571fb99bb8 Binary files /dev/null and b/docs/source_images/cluster_ru.svg differ diff --git a/docs/source_images/failover.svg b/docs/source_images/failover.svg new file mode 100644 index 0000000000000000000000000000000000000000..aadee796166d52f58602f5366e7fe332b4bff99d Binary files /dev/null and b/docs/source_images/failover.svg differ diff --git a/docs/source_images/failover_ru.svg b/docs/source_images/failover_ru.svg new file mode 100644 index 0000000000000000000000000000000000000000..348369dc6288b1e9fee9a7c4d21c14f422408252 Binary files /dev/null and b/docs/source_images/failover_ru.svg differ diff --git a/docs/source_images/sharding.svg b/docs/source_images/sharding.svg new file mode 100644 index 0000000000000000000000000000000000000000..cf074972006c61cbbaa078072ee396c2ed32b113 Binary files /dev/null and b/docs/source_images/sharding.svg differ diff --git a/docs/source_images/sharding_ru.svg b/docs/source_images/sharding_ru.svg new file mode 100644 index 0000000000000000000000000000000000000000..c2acc93d3cbc8d5f31314a00838477283842f859 Binary files /dev/null and b/docs/source_images/sharding_ru.svg differ diff --git a/docs/source_images/storage.svg b/docs/source_images/storage.svg new file mode 100644 index 0000000000000000000000000000000000000000..ddd3a2d8cec1476c30d4ceecc0080e1b536ec728 Binary files /dev/null and b/docs/source_images/storage.svg differ diff --git a/docs/source_images/storage_ru.svg b/docs/source_images/storage_ru.svg new file mode 100644 index 0000000000000000000000000000000000000000..d0dc6721ce4f065237f4ed796a742666eb78d67e Binary files /dev/null and b/docs/source_images/storage_ru.svg differ diff --git a/docs/startup.md b/docs/startup.md new file mode 100644 index 0000000000000000000000000000000000000000..2d628a6ed226226c6b95265a13c6aaef16c9a3e5 --- /dev/null +++ b/docs/startup.md @@ -0,0 +1,17 @@ +## ÐаÑтройка и запуÑк клаÑтера +Picodata позволÑет запуÑтить отдельные ÑкземплÑры Tarantool (инÑтанÑÑ‹) и тут же Ñобрать их в один клаÑтер. Каждый инÑÑ‚Ð°Ð½Ñ Ð¿Ñ€Ð¸ запуÑке Ñодержит Ñ€Ñд обÑзательных параметров, включаÑ: + +* идентификатор клаÑтера (должен Ñовпадать у вÑех инÑтанÑов); +* уникальный идентификатор Ñамого инÑтанÑа; +* фактор репликации (чиÑло инÑтанÑов в репликаÑете); +* Ñетевой Ð°Ð´Ñ€ÐµÑ Ð¸ порт текущего инÑтанÑа (*peer*) и желательно какого-либо другого инÑтанÑа; +* домен отказа (принадлежноÑÑ‚ÑŒ инÑтанÑа физичеÑкому Ñерверу). + +Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы вÑе инÑтанÑÑ‹ Ñформировали один клаÑтер, нужно Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из них указать набор peer'ов Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ из двух позиций: текущего инÑтанÑа и какого-либо другого (или неÑколько других). Picodata Ñможет Ñобрать клаÑтер при выполнении Ñледующего уÑловиÑ: **у любой пары инÑтанÑов должен быть Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один общий *peer***. + +ИÑпользование параметра *домен отказа* (failure domain) необходимо Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы в репликаÑет попали инÑтанÑÑ‹, запущенные на разных Ñерверах или датацентрах. Ðто обеÑпечит необходимую отказоуÑтойчивоÑÑ‚ÑŒ. +Ð”Ð»Ñ Ñборки и Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ клаÑтера Picodata иÑпользует алгоритм Raft, который хранит глобальную конфигурацию вÑех инÑтанÑов в Ñпециальном журнале Raft Log. Из него Ñти данные автоматичеÑки попадают в локальные конфигурации отдельных ÑкземплÑров Tarantool. Ð’ чаÑтноÑти, Ñти данные включают в ÑÐµÐ±Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÑŽ о репликаÑетах и адреÑа находÑщихÑÑ Ð² них инÑтанÑах, что необходимо Ð´Ð»Ñ ÑˆÐ°Ñ€Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ bucket'ов по репликаÑетам). + +*Что именно хранитÑÑ Ð² рафт-логе?* + +Picodata позволÑет работать Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¹ конфигурацией клаÑтера и админиÑтрировать его без трудоёмкой и ненадёжной перенаÑтройки отдельных инÑтанÑов. \ No newline at end of file diff --git a/docs/storage.png b/docs/storage.png deleted file mode 100644 index aa2e836b8a46a41afc69c44cce78c29e259a795f..0000000000000000000000000000000000000000 Binary files a/docs/storage.png and /dev/null differ diff --git a/docs/storage.svg b/docs/storage.svg new file mode 100644 index 0000000000000000000000000000000000000000..34555a73cbaa5a7aed0fbe35496460043db98688 Binary files /dev/null and b/docs/storage.svg differ