cassandra #distributed-system #etcd
#cassandra #распределенная система #etcd
Вопрос:
В моем понимании распределенные KVS обычно выглядят так:
- Существует лидер, который управляет метаданными
- Есть несколько подписчиков, которые управляют данными
- Клиент взаимодействует с лидером
- Когда клиент просит ЗАПИСАТЬ данные лидеру, он решает, какому узлу должны принадлежать данные, а затем передает их с помощью некоторого алгоритма хеширования (например, согласованного хеширования)
- Кроме того, лидер копирует данные на некоторые другие узлы, чтобы не потерять данные в случае сбоя
Это мое понимание. Я хочу сказать, что в этой архитектуре данные копируются не на все узлы-подписчики.
Однако в etcd он реплицирует все данные с помощью Raft. В моем понимании это следует называть не распределенными kvs, а просто репликацией мастер-реплики.
Существует ли какое-либо определение распределенных kv? Следует ли их называть распределенными kv, если они состоят из нескольких серверов? Пожалуйста, дайте мне знать, что я упускаю некоторые моменты.
Ответ №1:
Я считаю, что ваше определение распределенных KVS (хранилище значений ключей) действительно специфично. Вот вики-определение распределенного хранилища данных:
Распределенное хранилище данных — это компьютерная сеть, в которой информация хранится более чем на одном узле, часто реплицируемым образом. Обычно он специально используется для обозначения либо распределенной базы данных, в которой пользователи хранят информацию на нескольких узлах, либо компьютерной сети, в которой пользователи хранят информацию на нескольких узлах одноранговой сети.
Etcd вписывается в это определение. Я бы также сказал, что etcd — это нечто большее, чем репликация, поскольку в его основе лежит алгоритм консенсуса (raft, как вы упомянули). Это дает некоторые гарантии, которые (я полагаю) репликация не дает:
- Допуск сбоев до (n-1) / 2 узлов
- Ни одно из зафиксированных значений не будет потеряно при сбое любого узла (пока мы находимся на границе отказоустойчивости)
Комментарии:
1. Спасибо за ваш комментарий. Согласно определению вики, похоже, что слово «распределенные KVS» может указывать больше материалов, чем я думал. Я думал, что обычно распределенные KVS подразделяются на 2; 1. согласованная хешированная БД, такая как Cassandra 2. реплицируемая БД, такая как Redis или etcd. Но, похоже, это не так просто. Я буду продолжать изучать различные архитектуры KVS. Еще раз спасибо. > в его основе есть алгоритм консенсуса (raft, как вы упомянули), это звучит вполне правильно.