Как выглядят типичные распределенные KV?

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, как вы упомянули), это звучит вполне правильно.