diff --git a/docs/cluster.png b/docs/cluster.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f95527833a48b6d2c11549ede3645ae5d3c120 Binary files /dev/null and b/docs/cluster.png differ diff --git a/docs/cluster_scheme1.png b/docs/cluster_scheme1.png deleted file mode 100644 index 663bde14ecbfacaff86087e9975c8a3e12f574a0..0000000000000000000000000000000000000000 Binary files a/docs/cluster_scheme1.png and /dev/null differ diff --git a/docs/description.md b/docs/description.md index 5520d30638b495991a53057c6d051cb5ea876d87..19cd30086a04996cdd45b8583f050c97d96d4517 100644 --- a/docs/description.md +++ b/docs/description.md @@ -36,12 +36,20 @@ Picodata позволÑет развёртывать и управлÑÑ‚ÑŒ кл * обеÑпечение выÑокой доÑтупноÑти и перÑиÑтентноÑти данных Ñразу, без иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ инÑтрументариÑ. ## Ðрхитектура -Ðрхитектура клаÑтера под управлением Picodata предполагает ÑиÑтему гомогенных узлов, входÑщих в ÑоÑтав клаÑтера. Каждый узел может выполнÑÑ‚ÑŒ различные роли, например роль Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, роль Ñервера приложениÑ, или Ñлужебную роль координатора клаÑтера. -Ð’Ñе узлы работают Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¹ Ñхемой данных и кодом приложениÑ. Каждый узел выполнÑетÑÑ Ð½Ð° одном процеÑÑорном Ñдре (1 Ñдро - 1 процеÑÑ). ЕÑли раÑÑматривать клаÑтер именно как хранилище, то в нём вÑе данные раÑпределены между узлами, Ñ‚.е. реплицированы, что означает, что у каждого узла еÑÑ‚ÑŒ как минимум одна реплика. Такие наборы реплицированных узлов называютÑÑ *репликаÑетами*, которые ÑчитаютÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°Ð¼Ð¸ физичеÑкого маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера. ЧиÑло реплик определÑетÑÑ Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ репликации, заданным Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° в глобальных наÑтройках Picodata. У каждого набора вÑегда еÑÑ‚ÑŒ оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°, или *лидер*. Ð’ Ñлучае отказа лидера репликаÑета, лидером автоматичеÑки ÑтановитÑÑ Ð¾Ð´Ð½Ð° из оÑтавшихÑÑ Ñ€ÐµÐ¿Ð»Ð¸Ðº. Данные автоматичеÑки баланÑируютÑÑ Ð¼ÐµÐ¶Ð´Ñƒ репликаÑетами. +Ðрхитектура клаÑтера под управлением Picodata предполагает ÑиÑтему узлов, входÑщих в ÑоÑтав клаÑтера. Каждый узел может выполнÑÑ‚ÑŒ различные роли, например роль Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, роль Ñервера приложениÑ, или Ñлужебную роль координатора клаÑтера. +Ð’Ñе узлы работают Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¹ Ñхемой данных и кодом приложениÑ. Каждый процеÑÑ Ð±Ð°Ð·Ñ‹ данных выполнÑетÑÑ Ð½Ð° одном процеÑÑорном Ñдре и хранит вÑе Ñвои данные в оперативной памÑти. +Любой отдельный узел ÑвлÑетÑÑ Ñ‡Ð°ÑÑ‚ÑŒ набора реплик, который также называют *репликаÑетом*. РепликаÑет может ÑоÑтоÑÑ‚ÑŒ из одного узла или неÑкольких дубликатов одного и того же набора данных. Внутри репликаÑета вÑегда еÑÑ‚ÑŒ *лидер* (оÑновной узел) и - еÑли реплик больше 1 - то некоторое чиÑло вÑпомогательных узлов, обеÑпечивающие отказоуÑтойчивоÑÑ‚ÑŒ ÑиÑтемы в Ñлучае выхода из ÑÑ‚Ñ€Ð¾Ñ Ð¸Ð»Ð¸ недоÑтупноÑти лидера. ЧиÑло реплик определÑетÑÑ *фактором репликации*, заданным Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° в глобальных наÑтройках Picodata. + +Ðа риÑунке ниже показана Ñхема проÑтого клаÑтера из двух репликаÑетов, каждый из которых ÑоÑтоит из двух узлов (активного и в ожидании): + +{ align=left } + +РепликаÑеты ÑвлÑÑŽÑ‚ÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°Ð¼Ð¸ физичеÑкого маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера. Данные баланÑируютÑÑ Ð¼ÐµÐ¶Ð´Ñƒ ними автоматичеÑки. Внутри каждого репликаÑета еÑÑ‚ÑŒ *bucket* - Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° хранениÑ, обеÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾ÑÑ‚ÑŒ данных (например, хранение неÑкольких ÑвÑзанных Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ запиÑей на одном физичеÑком узле). Таким образом, при горизонтальном маÑштабировании клаÑтера данные раÑпределÑÑŽÑ‚ÑÑ Ð¿Ð¾ уÑтройÑтвам Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ напрÑмую, а внутри bucket'ов. Ðто позволÑет увеличить ÑкороÑÑ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов к БД и одновременно Ñ Ñтим Ñнизить нагрузку на Ñетевую инфраÑтруктуру клаÑтера. -Ðа Ñхеме ниже показано уÑтройÑтво шардированного клаÑтера, раÑпределенного по трем датацентрам: -{ align=left } +Ðа Ñхеме ниже показан пример ÑˆÐ°Ñ€Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлементов клаÑтера путём раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñетов по неÑкольким Ñерверам: + +{ align=left } -КраÑным показана ÑвÑзь активных узлов (инÑтанÑов) поÑредÑтвом вÑтроенной библиотеки шардированиÑ, а Ñерым - ÑвÑзь узлов, находÑщихÑÑ Ð² режиме hot standby, Ñ‚.е. готовых вÑтупить в работу в Ñлучае роÑта объёмов Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… или ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ‡Ð¸Ñлительной нагрузки. -Каждый bucket в любой момент времени может находитьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в одном репликаÑете. Ð’ то же времÑ, в репликаÑете может быть неÑколько bucket'ов, или не быть ни одного. Внутри bucket'а данные раÑпределены по двум или более узлам в рамках репликаÑета. \ No newline at end of file +Ð’ Ñвою очередь, Ñервера могут находитьÑÑ Ð² разных дата-центрах и быть географичеÑки раÑпределены. С точки Ð·Ñ€ÐµÐ½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора клаÑтера, данные Ñначала попадают в опредёленный bucket и лишь затем оказываютÑÑ Ð½Ð° физичеÑком уÑтройÑтве хранениÑ. +Каждый bucket в любой момент времени может находитьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в одном репликаÑете. Ð’ то же времÑ, в репликаÑете может быть неÑколько bucket'ов, или не быть ни одного. Внутри bucket'а данные задублированы по вÑем узлам в рамках репликаÑета в ÑоответÑтвие Ñ Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ репликации. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index f561ef5d1db3624715ccec4e9dcc4465f0957112..81a9525d61eb2030cd2a3c2c6818d8eed93ad1e6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ Picodata — Ñто раÑпределенный Ñервер приложен ## ДоÑтупные документы и Ñтатьи -* Общее опиÑание продукта +* Общее [опиÑание](description) продукта * [ПреимущеÑтва](benefits) иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Picodata * ÐдминиÑтрирование БД как [уÑлуга](services) * СиÑтемные Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ diff --git a/docs/sharding.png b/docs/sharding.png new file mode 100644 index 0000000000000000000000000000000000000000..b23a8dad1473ebb0a2cce5c3e4ecf909eb6e9389 Binary files /dev/null and b/docs/sharding.png differ