From 893f881d2337fd177885d879f37b560331c864b8 Mon Sep 17 00:00:00 2001 From: "a.tolstoy" <a.tolstoy@picodata.io> Date: Tue, 19 Apr 2022 12:00:38 +0300 Subject: [PATCH] Fixed some typos --- docs/description.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/description.md b/docs/description.md index bd91bbe7..520eed3a 100644 --- a/docs/description.md +++ b/docs/description.md @@ -1,28 +1,28 @@ # Общее опиÑание продукта ## Что такое Picodata? -Программное обеÑпечение Picodata — Ñто Ñервер приложений Ñо вÑтроенной базой данных Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ в раÑпределённых ÑиÑтемах. +Программное обеÑпечение Picodata — Ñто Ñервер приложений Ñо вÑтроенной базой данных Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ в раÑпределенных ÑиÑтемах. Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… и платформу Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ перÑиÑтентных приложений на Ñзыке Rust и ÑредÑтва ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¡Ð£Ð‘Ð” на Ñзыке SQL. ## Ðазначение -ОÑновным предназначением продукта Picodata ÑвлÑетÑÑ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾ маÑштабируемое хранение Ñтруктурированных и неÑтруктурированных данных, управление ими, предоÑтавление Ñреды вычиÑлений внутри клаÑтера, ÑоÑтоÑщего из реплицированных отдельных узлов. Такие узлы называют ÑкземплÑрами Picodata или *инÑтанÑами*. +ОÑновным назначением продукта Picodata ÑвлÑетÑÑ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾ маÑштабируемое хранение Ñтруктурированных и неÑтруктурированных данных, управление ими, предоÑтавление Ñреды вычиÑлений внутри клаÑтера, ÑоÑтоÑщего из реплицированных отдельных узлов. Такие узлы называют ÑкземплÑрами Picodata или *инÑтанÑами*. ## Задачи -Задачи, решаемые ПО Picodata, включают в ÑебÑ: +Программное обеÑпечение Picodata решает Ñледующие задачи: -* Реализацию общего линеаризованного хранилища конфигурации, Ñхемы данных и топологии клаÑтера, вÑтроенного в раÑпределенную ÑиÑтему ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ð°Ð¼Ð¸ данных. -* ПредоÑтавление графичеÑкого интерфейÑа и интерфейÑа командной Ñтроки по управлению топологией клаÑтера. -* Реализацию runtime-библиотек по работе Ñ Ñетью, файловому вводу-выводу, Ñозданию зеленых потоков (green threads) и управлению ими, работе Ñо вÑтроенной СУБД ÑредÑтвами Ñзыка Rust. -* Поддержку Ñзыка SQL Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ как Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ отдельного инÑтанÑа, так и Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вÑего клаÑтера. -* Управление клаÑтером. -* Поддержку жизненного цикла Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² клаÑтере, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²ÐµÑ€Ñионирование, управление завиÑимоÑÑ‚Ñми, упаковку диÑтрибутива, развертывание и обновление запущенных приложений. +* реализацию общего линеаризованного хранилища конфигурации, Ñхемы данных и топологии клаÑтера, вÑтроенного в раÑпределенную ÑиÑтему ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ð°Ð¼Ð¸ данных; +* предоÑтавление графичеÑкого интерфейÑа и интерфейÑа командной Ñтроки по управлению топологией клаÑтера; +* реализацию runtime-библиотек по работе Ñ Ñетью, файловому вводу-выводу, Ñозданию зеленых потоков (green threads) и управлению ими, работе Ñо вÑтроенной СУБД ÑредÑтвами Ñзыка Rust; +* поддержку Ñзыка SQL Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ как Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ отдельного инÑтанÑа, так и Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вÑего клаÑтера; +* управление клаÑтером; +* поддержку жизненного цикла Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² клаÑтере, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²ÐµÑ€Ñионирование, управление завиÑимоÑÑ‚Ñми, упаковку диÑтрибутива, развертывание и обновление запущенных приложений. ## ОблаÑÑ‚ÑŒ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ -Хранилище данных Ñ Ð¸Ñпользованием ПО Picodata обладает Ñвными преимущеÑтвами, которые во многом определÑÑŽÑ‚ наиболее выгодные облаÑти применениÑ. Речь идёт о быÑтром доÑтупе к данным внутри раÑпределённого хранилища. Примерами могут Ñлужить: +КлаÑтер Picodata обеÑпечивает быÑтрый доÑтуп к данным внутри раÑпределенного хранилища. Ðто позволÑет иÑпользовать его в Ñледующих облаÑÑ‚ÑÑ…: * управление телекоммуникационным оборудованием; * банковÑкие и в целом финанÑовые уÑлуги, биржевые торги, аукционы; * формирование перÑональных маркетинговых предложений Ñ Ð¿Ñ€Ð¸Ð²Ñзкой ко времени и меÑту; -* обработка больших объёмов данных в реальном времени Ð´Ð»Ñ ÑиÑтем клаÑÑа "интернет вещей" (IoT); +* обработка больших объемов данных в реальном времени Ð´Ð»Ñ ÑиÑтем клаÑÑа "интернет вещей" (IoT); * игровые рейтинговые таблицы; * и многое другое! @@ -31,7 +31,7 @@ Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… * автоматичеÑкое горизонтальное маÑштабирование клаÑтера; * более проÑÑ‚Ð°Ñ Ð½Ð°Ñтройка Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка шардированного клаÑтера. ТребуетÑÑ Ð¼ÐµÐ½ÑŒÑˆÐµ файлов конфигурации; -* ÑовмеÑтимоÑÑ‚ÑŒ Ñ Ð»ÑŽÐ±Ñ‹Ð¼Ð¸ инÑтрументами Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½ÑтанÑов (Ansible, Chef, Puppet); +* ÑовмеÑтимоÑÑ‚ÑŒ Ñ Ð»ÑŽÐ±Ñ‹Ð¼Ð¸ инÑтрументами Ñ€Ð°Ð·Ð²ÐµÑ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½ÑтанÑов (Ansible, Chef, Puppet и др.); * обеÑпечение выÑокой доÑтупноÑти данных без необходимоÑти в клаÑтере Etcd и дополнительных наÑтройках; * автоматичеÑкое определение активного инÑтанÑа в репликаÑетах любого размера; * ÐµÐ´Ð¸Ð½Ð°Ñ Ñхема данных во вÑех репликаÑетах клаÑтера; @@ -43,7 +43,7 @@ Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… ### СоÑтавные чаÑти клаÑтера Ðрхитектура клаÑтера Picodata предполагает ÑиÑтему отдельных *инÑтанÑов* — программных узлов, входÑщих в ÑоÑтав клаÑтера. Каждый такой узел может выполнÑÑ‚ÑŒ различные роли, например роль Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, роль Ñервера приложениÑ, или Ñлужебную роль координатора клаÑтера. Ð’Ñе инÑтанÑÑ‹ работают Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¹ Ñхемой данных и кодом приложениÑ. Каждый процеÑÑ Ð±Ð°Ð·Ñ‹ данных выполнÑетÑÑ Ð½Ð° одном процеÑÑорном Ñдре и хранит иÑпользуемый набор данных в оперативной памÑти. -Любой отдельный инÑÑ‚Ð°Ð½Ñ ÑвлÑетÑÑ Ñ‡Ð°Ñтью набора реплик, который также называют *репликаÑетом*. РепликаÑет может ÑоÑтоÑÑ‚ÑŒ из одного или неÑкольких инÑтанÑов — дубликатов одного и того же набора данных. Внутри репликаÑета вÑегда еÑÑ‚ÑŒ *активный* инÑÑ‚Ð°Ð½Ñ Ð¸ — еÑли реплик больше 1 — то некоторое чиÑло дополнительных инÑтанÑов, обеÑпечивающих отказоуÑтойчивоÑÑ‚ÑŒ ÑиÑтемы в Ñлучае выхода из ÑÑ‚Ñ€Ð¾Ñ Ð¸Ð»Ð¸ недоÑтупноÑти активного инÑтанÑа. ЧиÑло реплик определÑетÑÑ *фактором репликации*, заданным в глобальных наÑтройках Picodata. +Любой отдельный инÑÑ‚Ð°Ð½Ñ ÑвлÑетÑÑ Ñ‡Ð°Ñтью набора реплик, который также называют *репликаÑетом*. РепликаÑет может ÑоÑтоÑÑ‚ÑŒ из одного или неÑкольких инÑтанÑов — дубликатов одного и того же набора данных. Внутри репликаÑета вÑегда еÑÑ‚ÑŒ *активный* инÑÑ‚Ð°Ð½Ñ Ð¸ — еÑли реплик больше 1 — то некоторое чиÑло *резервных* инÑтанÑов, обеÑпечивающих отказоуÑтойчивоÑÑ‚ÑŒ ÑиÑтемы в Ñлучае выхода из ÑÑ‚Ñ€Ð¾Ñ Ð¸Ð»Ð¸ недоÑтупноÑти активного инÑтанÑа. ЧиÑло реплик определÑетÑÑ *фактором репликации*, заданным в глобальных наÑтройках Picodata. Ðа риÑунке ниже показана Ñхема проÑтого клаÑтера из двух репликаÑетов, каждый из которых ÑоÑтоит из двух инÑтанÑов (активного и резервного): @@ -52,21 +52,21 @@ Picodata предоÑтавлÑет ÑиÑтему Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… РепликаÑеты ÑвлÑÑŽÑ‚ÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°Ð¼Ð¸ горизонтального маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера. Данные баланÑируютÑÑ Ð¼ÐµÐ¶Ð´Ñƒ ними автоматичеÑки. ### Хранение данных -Внутри каждого репликаÑета еÑÑ‚ÑŒ *bucket* — Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ð¸Ð¼Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° хранениÑ, обеÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾ÑÑ‚ÑŒ данных (например, хранение неÑкольких ÑвÑзанных Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ запиÑей на одном физичеÑком узле Ñети). Сам по Ñебе bucket не имеет ограничений по ёмкоÑти и может Ñодержать любой объём данных. Горизонтальное маÑштабирование позволÑет раÑпределить bucket'Ñ‹ по разным шардам, оптимизировав производительноÑÑ‚ÑŒ клаÑтера путём Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… реплицированных инÑтанÑов. Чем больше репликаÑетов входит в ÑоÑтав клаÑтера, тем меньше нагрузка на каждый из них. Bucket хранитÑÑ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑки на одном репликаÑете и ÑвлÑетÑÑ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ звеном между данными и уÑтройÑтвом хранениÑ. Ð’ каждом репликаÑете может быть много bucket'ов (или не быть не одного). Внутри bucket'а данные задублированы по вÑем инÑтанÑам в рамках репликаÑета в ÑоответÑтвии Ñ Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ репликации. КоличеÑтво bucket'ов задаётÑÑ Ð¿Ñ€Ð¸ первоначальной наÑтройке клаÑтера. +Внутри каждого репликаÑета еÑÑ‚ÑŒ *bucket* — Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ð¸Ð¼Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° хранениÑ, обеÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾ÑÑ‚ÑŒ данных (например, хранение неÑкольких ÑвÑзанных Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ запиÑей на одном физичеÑком узле Ñети). Сам по Ñебе bucket не имеет ограничений по емкоÑти и может Ñодержать любой объем данных. Горизонтальное маÑштабирование позволÑет раÑпределить bucket'Ñ‹ по разным шардам, оптимизировав производительноÑÑ‚ÑŒ клаÑтера путем Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… реплицированных инÑтанÑов. Чем больше репликаÑетов входит в ÑоÑтав клаÑтера, тем меньше нагрузка на каждый из них. Bucket хранитÑÑ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑки на одном репликаÑете и ÑвлÑетÑÑ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ звеном между данными и уÑтройÑтвом хранениÑ. Ð’ каждом репликаÑете может быть много bucket'ов (или не быть ни одного). Внутри bucket'а данные задублированы по вÑем инÑтанÑам в рамках репликаÑета в ÑоответÑтвии Ñ Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ репликации. КоличеÑтво bucket'ов задаетÑÑ Ð¿Ñ€Ð¸ первоначальной наÑтройке клаÑтера. Ðа Ñхеме ниже показан пример Ñхемы Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… внутри репликаÑета:  ### ОтказоуÑтойчивоÑÑ‚ÑŒ -Ðаличие неÑкольких реплик внутри репликаÑета обеÑпечивают его отказоуÑтойчивоÑÑ‚ÑŒ. Дополнительно Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð½Ð°Ð´Ñ‘Ð¶Ð½Ð¾Ñти каждый инÑÑ‚Ð°Ð½Ñ ÐºÐ»Ð°Ñтера внутри репликаÑета находитÑÑ Ð½Ð° разных физичеÑких Ñерверах, а в некоторых ÑлучаÑÑ… — в удалённых друг от друга датацентрах. Таким образом, в Ñлучае недоÑтупноÑти датацентра в репликаÑете проиÑходит переключение на резервную реплику (инÑтанÑ) без Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹. +Ðаличие неÑкольких реплик внутри репликаÑета обеÑпечивают его отказоуÑтойчивоÑÑ‚ÑŒ. Дополнительно Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð½Ð°Ð´ÐµÐ¶Ð½Ð¾Ñти каждый инÑÑ‚Ð°Ð½Ñ ÐºÐ»Ð°Ñтера внутри репликаÑета находитÑÑ Ð½Ð° разных физичеÑких Ñерверах, а в некоторых ÑлучаÑÑ… — в удаленных друг от друга датацентрах. Таким образом, в Ñлучае недоÑтупноÑти датацентра в репликаÑете проиÑходит переключение на резервную реплику/инÑÑ‚Ð°Ð½Ñ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹. Пример географичеÑкого раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñета показан на Ñхеме ниже:  ### Шардирование -Шардирование — Ñто раÑпределение bucket'ов между различными репликаÑетами. Ð’ Picodata иÑпользуетÑÑ Ð¾Ñнованное на Ñ…Ñшах шардирование Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸ÐµÐ¼ данных в виртуальных bucket'ах. Каждый репликаÑет ÑвлÑетÑÑ *шардом*, и чем больше репликаÑетов имеетÑÑ Ð² клаÑтере, тем Ñффективнее Ð´Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ разделить маÑÑив данных на отдельные наборы данных меньшего размера. При добавлении новых инÑтанÑов в клаÑтер и/или формировании новых репликаÑетов, Picodata автоматичеÑки равномерно раÑпределит bucket'Ñ‹ Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ новой конфигурации. +Шардирование — Ñто раÑпределение bucket'ов между различными репликаÑетами. Ð’ Picodata иÑпользуетÑÑ Ð¾Ñнованное на Ñ…Ñшах шардирование Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸ÐµÐ¼ данных в виртуальных bucket'ах. Каждый репликаÑет ÑвлÑетÑÑ *шардом*, и чем больше репликаÑетов имеетÑÑ Ð² клаÑтере, тем Ñффективнее Ð´Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ разделить маÑÑив данных на отдельные наборы данных меньшего размера. При добавлении новых инÑтанÑов в клаÑтер и/или формировании новых репликаÑетов Picodata автоматичеÑки равномерно раÑпределит bucket'Ñ‹ Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ новой конфигурации. Пример автоматичеÑкого ÑˆÐ°Ñ€Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ добавлении в клаÑтер новых инÑтанÑов показан на Ñхеме ниже:  -- GitLab