Как стать автором
Обновить

Комментарии 18

НЛО прилетело и опубликовало эту надпись здесь

А потом начинается — нужно разделение этого ключа по правам доступа для разных клиентов. Ограничение на размер ключа ( а если там 1КБ таких значений?). Консистентность в том же консуле можно реализовать через "косвенную адресацию". Что-то типа симлинка. Мы создаём под /key/rev_v1 пачку ключей. Потом мы хотим их обновить. Пишем в /key/rev_v2 новую пачку ключей, но приложение наше о них сейчас не знает. Как записали — меняем /key/revision, чтобы оно указывало, что приложение должно смотреть в поддерево rev_v2. Задача решена. Это, конечно, не спасает от ИзМЕНЕНИЯ ключей, которое несогласованное. Но можно попросту договориться на уровне организации, что мы ключи не меняем, а создаём новое поддерево (rev_v3, rev_v4 и и.т.д.). Проблема решена.

НЛО прилетело и опубликовало эту надпись здесь
этим может заниматься админка.

Админка чего, простите? У меня само приложение лезет за своей конфой в etcd/consul/zk. Но очевидно, что не каждый инстанс приложения и даже не каждый его компонент одинаков в своих правах.


решение 1: выполнение всех шагов ещё до стадии "отправка в реплику". фиксация всех изменений и отправка в реплику нового значения конфига целиком (или блока).

Это очень интересный вопрос. Потому что если etcd гарантирует то, что сначала происходит запись во все живые члены кластера, то это не совсем асинхронная KV схема с Ваших слов. А вполне синхронная — запись была? Была. Надежная? Да, вполне, в несколько узлов. И только после того, как большинство участников кластера подтвердили запись — мы увидим "новое" значение ключа. Или у Вас смещение терминологии и реплика — это клиент etcd? Ну, тогда извините — говорить не о чем

НЛО прилетело и опубликовало эту надпись здесь

Етсд кластер на 300 нод никто в здравом уме делать не будет. Обычно делают 3,5. Я уж не говорю, что в условиях кроссдц там начинаются интересные (на самом деле нет) эффекты

НЛО прилетело и опубликовало эту надпись здесь

А это тут причем? Одно дело — кластер с конфигурацией. Другое дело — кластер с рабочими узлами. Посмотрите на кубернетес — количество мастер нод вполне ограничено разумными значениями. Никто не собирает кубернетес с количеством мастеров 500 нод. Зато 5 мастеров вполне тянут кластер на 1000-5000 рабочих узлов

НЛО прилетело и опубликовало эту надпись здесь

Даже не знаю, что в это комментарии наиболее безграмотно:


  1. Предложения, начинающиеся с маленькой буквы.
  2. Отделение отдельных предложений абзацами.
  3. Использование выдуманных терминов: "АСИНХРОННОЕ ключ-значение хранилище", ""доехать" по репликации", "конфигфайле", "ключ-значение-хранилище".
  4. И наконец, отсутствие понимание исходной задачи, какие гарантии хотим предоставлять с точки зрения консистентности, доступности и отказоустойчивости.

По поводу оригинальной статьи. Ее автор — небезызвестный Aphyr, который каждый раз находит проблемы в распределенных системах, начиная от документации, и заканчивая разбором крайне нетривиальных сценариев обработки запросов и моделирование сбоев системы. В данном случае можно констатировать, что etcd выстояла очень достойно и решила свою главную задачу на отлично.

НЛО прилетело и опубликовало эту надпись здесь
исходная задача — обеспечить консистентность частей старого и нового конфига приложения между собой. При том что едет на хост он частями.

Мне не очень понятно, откуда взялась такая задача. В исходной статье решается задача консистентной репликации KV-хранилища. При этом под консистентностью здесь понимается вполне определенное поведение — это линеаризумость операций чтений и записи. Помимо этого здесь вводится сериализумость и транзакционное поведение. Можно доказать, что для решения этой задачи необходимо использовать консенсус, который и будет являться строительным блоком для подобного рода хранилищ.


Если не использовать консенсус в качестве базы, то можно легко показать (и Aphyr это не раз демонстрировал), что данные разъезжаются, реплики будут содержать разные данные, что может приводить к конфликтам и некорректной работе всей системы. Именно поэтому важно поддерживать согласованность данных, и консенсус — это единственный способ этого достичь.


Уровень дискуссии в стиле "всё реализовывать не обязательно в KV хранилище, а например вообще в админке" говорит о фундаментальном непонимании, что такое админка и как она взаимодействует с хранилищем. Не говоря уже про саму задачу консенсуса, свойств живучести и безопасности, и способов верификации полученного решения.

НЛО прилетело и опубликовало эту надпись здесь

У вас разная трактовка понятия "разъезжаются".
Это и "данные распределяются по кластеру", и "данные неконсистентны". Вы уж определитесь, что в конкретном контексте

НЛО прилетело и опубликовало эту надпись здесь

Первое не является проблемой. Это решается, например, тем, что мы всегда будем читать с "лидера" (я не про етсд, а вообще) — у него всегда будет актуальная копия данных.
Второе — вообще не понял, в чем проблема. Вы про атомарность обновления нескольких связанных key?

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий