Pull to refresh

Comments 6

Спасибо, статья очень интересна! Хотелось бы увидеть продолжение с практической частью.

Спасибо! Мне тоже хотелось бы это увидеть!

Спасибо за статью.


1) Отмечу, что даже если бы популярные системы поточной обработки (например Flink, Spark) поддерживали параллельное дублированное исполнение, которое называется в статье concurrent, его бы мало кто включал на практике, потому что цена ресурсов как правило оказывается важнее, чем гарантия отсутствия затупов. Кроме того, даже с дублированием такой гарантии нет, потому что --


2)


Если запустить параллельно два обработчика, то вероятность того, что обоим поплохеет ≃ 1e-8. А значит это событие наступит через 23 года! Да системы столько не живут, а значит этого не произойдет никогда!

Большинство причин падений и затупов коррелируют. Проблемы с сетью в облаке, деградация одного из транзакционных хранилищ (в которое будут пытаться писать оба дубля обработчика, дополнительно его нагружая). Например, вспомните глобальную катастрофу Amazon S3.


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

1) Отмечу, что даже если бы популярные системы поточной обработки (например Flink, Spark) поддерживали параллельное дублированное исполнение, которое называется в статье concurrent,

Оно не зря называется concurrent, потому что если обработчик взаимодействует с одним и тем же набором данных, то возникает конкуренция за обновление, а не параллелизация действия.


его бы мало кто включал на практике, потому что цена ресурсов как правило оказывается важнее, чем гарантия отсутствия затупов.

Я предоставляю пользователям выбор: можно запускать в одном экземпляре, а можно в двух или даже более. Другие системы такого выбора не предоставляют от слова совсем.


Кроме того, даже с дублированием такой гарантии нет, потому что большинство причин падений и затупов коррелируют.

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


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

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


Но это, понятно, серьезно бы увеличило размер и без того немаленькой статьи.

Не совсем понятен момент с полутранзакциями — что это такое, с чем их есть и чем они отличаются от отсутствия транзакций?

Пункт "Фундаментальность подхода" подробно описывает возможность разбиения транзакций на полутранзакции. Каждая полутранзакция — атомарная операция, суммарное действие полутранзакций составляет исходную транзакцию.

Sign up to leave a comment.

Articles