Вставка видео в HTML выглядит следующим образом:
<video width="320" height="240" controls>
<source src="../static/data/israel/jerusalem.mp4" type="video/mp4">
</video>
Согласно моему собственному ответу исследования для вопроса - он выберет последний раз связанный узел. Я буду благодарен за указание, что ошибки, если найдено - mnesia являются действительно сложной системой!
Как Dan Gudmundsson указал на алгоритме списка рассылки выбора удаленного узла для запросов, определяется в mnesia_lib:set_remote_where_to_read/2
. Это следующее
set_remote_where_to_read(Tab, Ignore) ->
Active = val({Tab, active_replicas}),
Valid =
case mnesia_recover:get_master_nodes(Tab) of
[] -> Active;
Masters -> mnesia_lib:intersect(Masters, Active)
end,
Available = mnesia_lib:intersect(val({current, db_nodes}), Valid -- Ignore),
DiscOnlyC = val({Tab, disc_only_copies}),
Prefered = Available -- DiscOnlyC,
if
Prefered /= [] ->
set({Tab, where_to_read}, hd(Prefered));
Available /= [] ->
set({Tab, where_to_read}, hd(Available));
true ->
set({Tab, where_to_read}, nowhere)
end.
Таким образом, это получает список active_replicas (т.е. список кандидатов), дополнительно уменьшает список к главным узлам для таблицы, удалите таблицы, которые будут проигнорированы (по любой причине), уменьшает список к в настоящее время связанным узлам и затем выбирает в следующем порядке:
disc_only_copies
Самая важная часть является на самом деле списком active_replicas
, так как это определяет порядок узлов в списке кандидатов.
Список active_replicas
формируется удаленными вызовами mnesia_controller:add_active_replica/*
от недавно связанных узлов до старых узлов (т.е. тот, которые были в кластере прежде), который сводится к функции add/1
который добавляет объект как заголовок списка.
Следовательно ответ для вопроса - он выберет последний раз связанный узел.
Примечания: Для проверки списка активных копий на данном узле, можно использовать это (грязный взлом) код:
[ {T,X} || {{T,active_replicas}, X} <- ets:tab2list(mnesia_gvar) ].
Ну, узел C должен был бы связаться или с узлом A или с узлом B, чтобы сделать запрос. Таким образом узел C должен будет решить себя который копия таблицы выполнить запрос на.
Если бы Вам нужно что-то большее, чем это у Вас должен был бы или быть некоторый алгоритм, который решит, какой узел запросить на, или даже копируют таблицу на узле C (это обычно зависело бы от того, какие характеристики Вы хотите / потребность).
Если узел A и узел B формируются или являются частью кластера баз данных, хорошее начало является, вероятно, круговым алгоритмом (или случайный, как Вы предполагаете).