All streams
Search
Write a publication
Pull to refresh
2
0

Пользователь

Send message
Я бы не сказал, что это прям таки рейс — already_registered ничто не мешает обработать и отвалиться, под simple_one_for_one с temporary детьми это вполне нормально работать будет.
Не очень понял про рейс "регистрация после старта".

Как бы то ни было, без спец-процесса не выйдет — нужно де-регистривоать по 'DOWN', и ETS в любом случае завернут будет. Мой поинт однако в том, что ETS это инструмент, который активно пользуется и которым не стоит пренебрегать.
В приведённом примере он нужен как минимум чтобы найти процесс, отвечающий за стейт пользователя.
Отнюдь, stateful app + sticky sessions = приложение которому не надо ходить в базу на каждый чих. Очень полезно например в играх.
Ха ха, аналогично мне не развидеть код вроде:

case [1 || my_option <- Options] of
  [] -> false;
  _ -> true
end

И использование process dictionary вместо аккумулятора в свертке.
Мне кажется не стоит смешивать тёплое с мягким: в 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 и вы внезапно не можете нормально пользовать большинство библиотек, потому, что их авторы не знали, что иногда надо асинхронно.
jimenezrick/vimerl + ctrl_p мены устраивают для проекта из примерно 80 erlang applications
Чтобы 5к машин не простаивали из за сбоя одной железки? Потому что для некоторых задач хорошо подходят всякие хитрые топологии (fat-tree)? В больших кластерах типично может быть 3-4 сети: 1) интернет через ethernet (если он нужен на каждом узле), 2) infiniband/10g ethernet для обмена данными 3) одна или несколько служебных сетей ehternet
Не надо бороться с CAP за ACID, Spanner это каноничная CP-система. Аппаратное решение там уменьшает время простоя, но система будет работать корректно и без него.
На практике если в сети 5к машин и роутеры выстроены в иерархию — как нефиг делать. Например когда вылетает верхнеуровневый коммутатор образуются несколько островов где 1) есть связь внутри каждого осторова 2) есть интернет потому, что он через другую сеть.
Мне казалось, что CAP справедлива в любых сетях :) От того что сеть не локальная она только чаще ведёт себя как asynchronous network.
Минималистичный это не когда в 10 строчек кода, а когда только игроки + физика + минимальный рендер (например как тут шарики по ландшафту).
А немогли бы вы поделиться ссылками на примеры хорошего кода. А то в теории всё сто раз описано, а вот хороших минималистичных примеров не встречал.
www.cs.utexas.edu/users/lorenzo/corsi/cs380d/papers/paper2-1.pdf

К сожалению на самом интересном месте:

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.
So trololo :(
автоматическая обработка отказов как вычислительных узлов, так и ДЦ;
автоматическая миграция данных как между вычислительными узлами, так и между ДЦ.

Мне казалось это как раз таки чаще свойства NoSQL, чем традиционных СУБД.

В самом же Spanner согласованность данных при проведении транзакций обеспечивается протоколом двухфазной фиксации транзакции (2-Phase Commit Protocol), реализованным с помощью алгоритма Paxos.

Это неверно. Paxos и 2PC используются независимо и для разного. Вообще вопрос организации tablets в группы вы как-то опустили. Paxos используется для репликации внутри группы (реплицируются одни и те же данные, в том числе между ДЦ), двухфазный коммит и двухфазные блокировки используются для организации транзакций, оперирующих с данными из нескольких tablet. Кроме этого рискну предположить, что всевозможные мастера используют Chubby и, как следствие, тоже Paxos.

Ещё хотел бы добавить, что ваш цикл совсем обходит стороной Megastore и Chubby, хотя второй послужил прототипом Zookeeper.
А может вы всё таки поглядите сколько эти 10 серверов занимают места? Сколько потребляют энергии? T-Platforms в данном случае делает примерно то же что supermicro в своих твин-серверах, только лучше.

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity