Я бы не сказал, что это прям таки рейс — already_registered ничто не мешает обработать и отвалиться, под simple_one_for_one с temporary детьми это вполне нормально работать будет.
Не очень понял про рейс "регистрация после старта".
Как бы то ни было, без спец-процесса не выйдет — нужно де-регистривоать по 'DOWN', и ETS в любом случае завернут будет. Мой поинт однако в том, что ETS это инструмент, который активно пользуется и которым не стоит пренебрегать.
Мне кажется не стоит смешивать тёплое с мягким: в Akka любая библиотека, не умеющая в футуры (или хотя бы коллбэки) делает плохо. В Erlang/Elixir/Haskell поставить колом VM библиотекой только на этом языке (без вызовов в C) существенно тяжелее. Но есть общие для языков проблемы вроде "нужна библиотека которая не делает X, потому, что так нельзя под нагрузкой" (где X может быть специфично для языка или vm), которые внезапно выравнивают число юзабельных библиотек.
Тут либо то что вы озвучили, либо квазаропроблемы (назовём это так, хотя такие же проблемы у em-synchrony).
В первом случае у BEAM (Erlang) всё очень хорошо пока вы не зовёте С, при этом в FFI есть довольно много возможностей дружить с VM. В Haskell всё тоже отлично в пределах языка с его спарками. В Go можно смело блокироваться на IO, но вот на вычислениях не стоит. Больше — не в курсе.
Квазаро-проблемы это ситуация, когда в виртуальную машину где вообще-говоря не стоит блокировать притаскивают каким-то способом а-ля-эрланг вытесняющую многозадачность, но для поддержки этого типично оно переписывает байткод или делает какой-нибудь monkey-patching (в случае em-synchrony) и в результате у нас сторонняя библиотека оказывается не совсем тем, что написал и протестировал её автор.
Мы пришли к Erlang + Elixir (в тех местах где у вас python, а у нас ruby; ruby пока ещё есть местами). По поводу библиотек — проблема преувеличена, почти везде проблема найти хорошую: Python+Twisted или Ruby + EM или Scala + Akka и вы внезапно не можете нормально пользовать большинство библиотек, потому, что их авторы не знали, что иногда надо асинхронно.
Чтобы 5к машин не простаивали из за сбоя одной железки? Потому что для некоторых задач хорошо подходят всякие хитрые топологии (fat-tree)? В больших кластерах типично может быть 3-4 сети: 1) интернет через ethernet (если он нужен на каждом узле), 2) infiniband/10g ethernet для обмена данными 3) одна или несколько служебных сетей ehternet
Не надо бороться с CAP за ACID, Spanner это каноничная CP-система. Аппаратное решение там уменьшает время простоя, но система будет работать корректно и без него.
На практике если в сети 5к машин и роутеры выстроены в иерархию — как нефиг делать. Например когда вылетает верхнеуровневый коммутатор образуются несколько островов где 1) есть связь внутри каждого осторова 2) есть интернет потому, что он через другую сеть.
While group membership with the core Paxos algorithm is straightforward, the exact details are non-trivial when we introduce Multi-Paxos, disk corruptions, etc. Unfortunately the literature does not spell this out, nor does it contain a proof of correctness for algorithms related to group membership changes using Paxos. We had to fill in these gaps to make group membership work in our system. The details – though relatively minor – are subtle and beyond the scope of this paper.
автоматическая обработка отказов как вычислительных узлов, так и ДЦ;
автоматическая миграция данных как между вычислительными узлами, так и между ДЦ.
Мне казалось это как раз таки чаще свойства NoSQL, чем традиционных СУБД.
В самом же Spanner согласованность данных при проведении транзакций обеспечивается протоколом двухфазной фиксации транзакции (2-Phase Commit Protocol), реализованным с помощью алгоритма Paxos.
Это неверно. Paxos и 2PC используются независимо и для разного. Вообще вопрос организации tablets в группы вы как-то опустили. Paxos используется для репликации внутри группы (реплицируются одни и те же данные, в том числе между ДЦ), двухфазный коммит и двухфазные блокировки используются для организации транзакций, оперирующих с данными из нескольких tablet. Кроме этого рискну предположить, что всевозможные мастера используют Chubby и, как следствие, тоже Paxos.
Ещё хотел бы добавить, что ваш цикл совсем обходит стороной Megastore и Chubby, хотя второй послужил прототипом Zookeeper.
А может вы всё таки поглядите сколько эти 10 серверов занимают места? Сколько потребляют энергии? T-Platforms в данном случае делает примерно то же что supermicro в своих твин-серверах, только лучше.
already_registered
ничто не мешает обработать и отвалиться, подsimple_one_for_one
сtemporary
детьми это вполне нормально работать будет.Как бы то ни было, без спец-процесса не выйдет — нужно де-регистривоать по 'DOWN', и ETS в любом случае завернут будет. Мой поинт однако в том, что ETS это инструмент, который активно пользуется и которым не стоит пренебрегать.
И использование process dictionary вместо аккумулятора в свертке.
В первом случае у BEAM (Erlang) всё очень хорошо пока вы не зовёте С, при этом в FFI есть довольно много возможностей дружить с VM. В Haskell всё тоже отлично в пределах языка с его спарками. В Go можно смело блокироваться на IO, но вот на вычислениях не стоит. Больше — не в курсе.
Квазаро-проблемы это ситуация, когда в виртуальную машину где вообще-говоря не стоит блокировать притаскивают каким-то способом а-ля-эрланг вытесняющую многозадачность, но для поддержки этого типично оно переписывает байткод или делает какой-нибудь monkey-patching (в случае em-synchrony) и в результате у нас сторонняя библиотека оказывается не совсем тем, что написал и протестировал её автор.
К сожалению на самом интересном месте:
So trololo :(
Мне казалось это как раз таки чаще свойства NoSQL, чем традиционных СУБД.
Это неверно. Paxos и 2PC используются независимо и для разного. Вообще вопрос организации tablets в группы вы как-то опустили. Paxos используется для репликации внутри группы (реплицируются одни и те же данные, в том числе между ДЦ), двухфазный коммит и двухфазные блокировки используются для организации транзакций, оперирующих с данными из нескольких tablet. Кроме этого рискну предположить, что всевозможные мастера используют Chubby и, как следствие, тоже Paxos.
Ещё хотел бы добавить, что ваш цикл совсем обходит стороной Megastore и Chubby, хотя второй послужил прототипом Zookeeper.