Что алгоритмы там для обработки отказа в распределенной системе?

Как уже упоминалось, при использовании необработанного HTML-кода с сервера могут возникнуть реальные проблемы с безопасностью. Тем не менее, есть моменты, которые действительно необходимы, и вы можете захотеть, чтобы этот сырой HTML работал с системой событий Ember.

Самый простой способ сделать это - визуализировать необработанный HTML-код внутри компонента. В компонент также добавьте метод click в тело основного компонента. Это дает вам возможность перехватывать необработанные события DOM вместо того, чтобы работать в системе действий, которую разрешает Handlebars.

Большую часть времени проще всего жить в мире Handlebars, но иногда вам нужно возвращаться к необработанным событиям JS.

Подробнее о руководствах здесь: https://guides.emberjs.com/release/components/handling-events/

19
задан Anony-Mousse 15 January 2012 в 13:22
поделиться

5 ответов

Вы задаете абсолютно значительный вопрос и многое из того, что Вы хотите знать, находится все еще в активном исследовании.

Некоторые мысли:

  • Распределенные системы являются трудными, потому что нет никаких надежных систем для контакта с отказами; в асинхронной системе нет никакого способа быть уверенным, что узел снижается или существует ли сетевая задержка. Это может звучать тривиальным, но это действительно не.
  • согласие Достижения может быть сделано семейство Паксоса алгоритмов , версии которого используются в bigtable Google, и в других местах.

Вы захотите копаться в учебнике распределенных систем (или несколько). Мне нравится Распределенные системы Tannenbaum: Принципы и Парадигмы

10
ответ дан 30 November 2019 в 02:56
поделиться
* What algorithms there are for doing failover in a distributed system?

Возможно не алгоритмы, так как системы. Необходимо разработать архитектуру на основе вопросов, которые Вы задали.

* What algorithms there are for consensus in a distributed system?

Вы, вероятно, хотите реализовать Паксос. Простой Паксос не слишком труден для разбираний. Если Вы, пытаются сделать это пуленепробиваемым, Google чтения 'Паксос Сделанная Живая' бумага. Если Вы надеетесь сделать это высокоэффективным, посмотрите на мульти-Паксос.

* How should the nodes in the cluster determine that a node is down?

Зависит. Heartbeat являются на самом деле довольно хорошим способом сделать это. Проблема состоит в том, что у Вас есть ложные положительные стороны, но это довольно неизбежно, и в кластере на той же LAN с управляемой загрузкой они точны. Хорошая вещь о Паксосе состоит в том, что с ложными положительными сторонами имеют дело автоматически. Однако при фактической необходимости в информации об отказах для некоторой другой цели тогда, необходимо удостовериться, что все в порядке, что Вы обнаруживаете узел, как отказавший, но она на самом деле просто является объектом загрузки и занимающий время для ответа на heartbeat.

* How should the nodes determine that what database entries had their master copy on the failed node at the time of failure, so that other nodes may recover those entries?
* How to decide that which node(s) has the latest secondary copy of some entry?
* How to decide that which node's secondary copy should be promoted to be the new master copy?

я думаю, что Вы могли бы действительно извлечь выгоду из того, чтобы читать газету Google FileSystem. В GFS существует специализированный главный узел, который отслеживает, которых узлы имеют который блоки. Эта схема могла бы работать на Вас, но ключ должен сохранить доступы к этому ведущему устройству минимальными.

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

* How to handle it, if the node which was though to be down, suddenly comes back as if nothing happened?

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

* How to avoid split-brain scenarios, where the network is temporarily split into two, and both sides think that the other side has died?

Паксос работает здесь путем предотвращения прогресса в случае идеального разделения. Иначе, как прежде, необходимо быть очень осторожными.

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

Не стесняются стрелять в меня почта от строки, если Вы хотите знать больше деталей. Мой блог http://the-paper-trail.org соглашения с большим количеством этого материала.

аплодисменты,

Henry

30
ответ дан 30 November 2019 в 02:56
поделиться

Большой блог, который говорит много о распределенных системах и распределенных алгоритмах - включая реализацию Паксоса - http://the-paper-trail.org/

3
ответ дан 30 November 2019 в 02:56
поделиться

Эта проблема была решена DEC для VMS с Распределенный Менеджер блокировок . Современные решения основаны на этом дизайне. Прочитайте статью Wikipedia для некоторых текущих решений. Необходимо посмотреть OCFS2, который является теперь частью ядра Linux.

2
ответ дан 30 November 2019 в 02:56
поделиться

Занятие просто небольшая часть Вашего вопроса: нет никакого пути в сценарии, который Вы описываете для решения (в кратком обзоре), какой узел (узлы) имеют последнюю вторичную копию. В лучшем случае некоторый узел может опросить и определить (после небольшого количества коммуникации), кого среди узлов, которые они знают / видят, и которые знают о / видят их, и что не видят , у старого мастера есть актуальнейшая копия. Но:

  • Они не могут узнать состояние узлов, которых они не могут достигнуть
  • , Они не могут узнать состояние узлов, которые не могут достигнуть их
  • , Они не могут быть уверены, что то, что они думают, что знают о состоянии узла, который видит старого мастера, когда они не могут, является текущим - ведущее устройство, возможно, обновило общего соседа после того, как сосед сообщил о состоянии.

По более широким проблемам, можно хотеть посмотреть на то, как что-то как memcached и т.п. обрабатывает проблемы и особенно прочитывает списки для наблюдения, с какими проблемами они встретились, когда теория встретила практику.

0
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: