LINUX.ORG.RU

История изменений

Исправление aist1, (текущая версия) :

Потому что система и ее утилиты написаны на C/C++, и потому программировать такую систему будет очень сложно.

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

Примерно как Virtual DOM в React.js, ЕВПОЧЯ.

Я понимаю, о чем ты. Ты понимаешь, что ФСД не являются lock-free в строгом смысле? В самом лучшем случае там будет куча блокировок/атомиков в сборщике мусора. Ты можешь реализовать распределенный сборщик мусора на идемпотентных распределенных атомарных счетчиках, но это уже довольно большое пространство разделяемого состояния. И уж ты точно не можешь реализовать распределенный децентрализованный сборщик мусора. По организационным соображениям.

Ну и в большинстве случаев тебе понадобится блокировка (строгая консистентность) на «голове» истории, как минимум. Если не на всей истории версий.

Все преимущество ФСД/ПСД в том, что как только новая версия создана, дальше вся работа будет идти уже в wait-free режиме, т.е. вообще без блокировок и атомиков до самого коммита, а данные версий могут свободно кэшироваться как угодно, потому что они иммутабельные. Но работа воркеров с историей требует транзакций. Метаданные версий должны становиться известными воркерам, и тут без транзакций не обойтись.

А так — да. Я даже такую распределенную систему делал. Где заменял в реакт-подобной («распределенный flux/redux») системе immutable.js на Меморию. И оно работало именно так, как ты говорил, только с теми нюансами, которые я привел))

Исправление aist1, :

Потому что система и ее утилиты написаны на C/C++, и потому программировать такую систему будет очень сложно.

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

Примерно как Virtual DOM в React.js, ЕВПОЧЯ.

Я понимаю, о чем ты. Ты понимаешь, что ФСД не являются lock-free в строгом смысле? В самом лучшем случае там будет куча блокировок/атомиков в сборщике мусора. Ты можешь реализовать распределенный сборщик мусора на идемпотентных распределенных атомарных счетчиках, но это уже довольно большое пространство разделяемого состояния.

Ну и в большинстве случаев тебе понадобится блокировка (строгая консистентность) на «голове» истории, как минимум. Если не на всей истории версий.

Все преимущество ФСД/ПСД в том, что как только новая версия создана, дальше вся работа будет идти уже в wait-free режиме, т.е. вообще без блокировок и атомиков до самого коммита, а данные версий могут свободно кэшироваться как угодно, потому что они иммутабельные. Но работа воркеров с историей требует транзакций. Метаданные версий должны становиться известными воркерам, и тут без транзакций не обойтись.

А так — да. Я даже такую распределенную систему делал. Где заменял в реакт-подобной («распределенный flux/redux») системе immutable.js на Меморию. И оно работало именно так, как ты говорил, только с теми нюансами, которые я привел))

Исходная версия aist1, :

Потому что система и ее утилиты написаны на C/C++, и потому программировать такую систему будет очень сложно.

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

Примерно как Virtual DOM в React.js, ЕВПОЧЯ.

Я понимаю, о чем ты. Ты понимаешь, что ФСД не являются lock-free в строгом смысле? В самом лучшем случае там будет куча блокировок/атомиков в сборщике мусора. Ты можешь реализовать распределенный сборщик мусора на идемпотентных распределенных атомарных счетчиках, но это уже довольно большое пространство разделяемого состояния.

Ну и в большинстве случаев тебе понадобится блокировка (строгая консистентность) на «голове» истории, как минимум. Если не на всей истории версий.

Все преимущество ФСД/ПСД в том, что как только новая версия создана, дальше вся работа будет идти уже в wait-free режиме, т.е. вообще без блокировок и атомиков до самого коммита, а данные версий могут свободно кэшироваться как угодно, потому что они иммутабельные. Но работа воркеров с историей требует транзакций. Метаданные версий должны становиться известными воркерам, и тут без транзакций не обойтись.

А так — да. Я даже такую распределенную систему делал. Где заменял в реакт-подобной системе immutable.js на Меморию. И оно работало именно так, как ты говорил, только с теми нюансами, которые я привел))