|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Есть сервер который по запросу передает клиентам файлы. Клиент А кэширует на диске скачанный файл. В этот момент клиент В изменяет на сервере этот файл. Как клиент А может узнать, что версия файла в его локальном кэше устарела? Файлы могут быть большого размера, сотни мегабайт. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:19 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Время последнего изменения проверяй. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:28 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Eolt, у кешируемого объекта есть время жизни, как оно истечет закачается новый файл, до этого момент пользователь будет работать со старой версией файла. я так понимаю 2 пользователь так же имеет доступ на запись этого файла? тогда делайте checking\checkout и пока пользователь 1 держит файл в checkout'е, 2 его не может изменить, какая бы версия у него не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:37 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Dima TВремя последнего изменения проверяй. Ок, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад. Не поломает ли это алгоритм завязанный на время? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:41 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Eolt, конечно поломает, особенно, если он переведет время назад, но я бы после этого поломал руки админу, так как время менять на сервере крайне противопоказано не только по этой причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:48 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Roman MejtesEolt, у кешируемого объекта есть время жизни, как оно истечет закачается новый файл, до этого момент пользователь будет работать со старой версией файла. я так понимаю 2 пользователь так же имеет доступ на запись этого файла? тогда делайте checking\checkout и пока пользователь 1 держит файл в checkout'е, 2 его не может изменить, какая бы версия у него не было. У каждого пользователя есть права на закачку, скачивание, изменение и удаленией файлов. Время жизни файла в кеше - до тех пор пока файл не изменился на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:49 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
EoltDima TВремя последнего изменения проверяй. Ок, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад. Не поломает ли это алгоритм завязанный на время? Не поломает. Надо проверять на равно, а не на больше-меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:50 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
можно просто привязаться к версии файла в системе. к примеру, в АД, каждый объект имеет счетчик изменений, любое изменение приведет к его изменению, меняется это значение на номер который хранится в "корне" ад. Меняя любой объект, вы изменяете этот центральный сиквенс, после измененному элементу присваивается этот номер. Таким образом, можно получить все измененные объекты, с момента X, если в момент X запомнить этот сиквенс ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:51 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Если речь о виндовой сети, то ОС может сообщать об изменении файлов FindFirstChangeNotification() ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:55 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Ок, с временем понятно. А как управлять размером кэша? Если размер накопителя клиента меньше, чем размер хранилища файлов на сервере, то клиент исчерпает все место на своем диске ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 15:19 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
EoltDima TВремя последнего изменения проверяй. Ок, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад. Не поломает ли это алгоритм завязанный на время? Для хорошего контроля консистентности в серверах баз данных используют вместо времени счетчик транзакций. Это может быть просто целое число. Это делает систему нечувствительной к переводу часов. А вообще знаешь очень сложно обсуждать файловый кеш безотносительно сервера и протокола. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 19:34 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
EoltОк, допустим пришел злой админ Вася и начал переводить время на работающем сервере. Вперед, назад. Не поломает ли это алгоритм завязанный на время?Как "тот самый админ" ответственно заявляю, что отметка даты времени, записанная в файловой системе не меняется при изменении (локального) времени операционной системы сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 19:38 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
EoltЕсть сервер который по запросу передает клиентам файлы. Клиент А кэширует на диске скачанный файл. В этот момент клиент В изменяет на сервере этот файл. Как клиент А может узнать, что версия файла в его локальном кэше устарела? Файлы могут быть большого размера, сотни мегабайт. Хэш сохранять вместе с файлом Его и проверять при обращении ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 19:59 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
EoltЕсть сервер который по запросу передает клиентам файлы. Клиент А кэширует на диске скачанный файл. В этот момент клиент В изменяет на сервере этот файл. Как клиент А может узнать, что версия файла в его локальном кэше устарела? Файлы могут быть большого размера, сотни мегабайт. Использовать HTTP для передачи файлов. Там кеширование поддерживается из коробки (читайте про Etag, If-None-Match). И есть готовый софт - например nginx на серверной стороне, curl на клиентской. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 20:16 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
ИзопропилХэш сохранять вместе с файлом Его и проверять при обращении А если файл 1 гигабайт? А если таких файлов сотня? Сколько будет по-времени считать его хэш? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 22:26 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
EoltИзопропилХэш сохранять вместе с файлом Его и проверять при обращении А если файл 1 гигабайт? А если таких файлов сотня? Сколько будет по-времени считать его хэш? Столько-же сколько и без кеша. Современные технологии бро... Процессор уже SHA считает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 22:29 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
mayton, Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы. Сразу видно что такой вариант не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 22:45 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Eoltmayton, Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы. Сразу видно что такой вариант не работает. А теперь давай посмотрим на задачу критически. Тебе тут накидали всяких советов. Они - правильные. Это как советы одевать тёплые штаны зимой. Тебе надо обеспечить конкурентный доступ к файлу? По какому протоколу? Последнее важно т.к. замечено выше что условные хедеры ( https://developer.mozilla.org/ru/docs/Web/HTTP/Conditional_requests) решают часть твоих задач для HTTP. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 22:51 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Eoltmayton, Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы. Сразу видно что такой вариант не работает. Это означает, что этот файл кэшировать бесполезно Попытайся изначальную задачу сформулировать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 23:48 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
ИзопропилEoltmayton, Чтобы банально прочитать с hdd диска файл в 1 гигабайт уйдет секунд 20 наверное. А если какой то клиент постоянно дописывает к такому файлу по несколько килобайт данных, то сервер будет непрерывно читать его чтобы пересчитать хэш поглотив все ресурсы системы. Сразу видно что такой вариант не работает. Это означает, что этот файл кэшировать бесполезно Попытайся изначальную задачу сформулировать Есть наверное много путей как решать эту задачу. Если кто-то чего-то дописывает то можно эти дописи формировать как отдельные файлы. Тогда задача контрольных сумм решена. Можно поискать инкрементальные хеш-функции. Кажется на эту тему были монографии. Вообще конкурентный доступ на запись к файлу по сети - это мега-плохо. Это вызывает вопросы по дизайну приложения в целом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 00:12 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
maytonВообще конкурентный доступ на запись к файлу по сети - это мега-плохо.Эк вы сейчас SMB/NFS опустили ... Прямо ниже плинтуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 02:20 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Чтобы гигабайты не гонять из-за мелких дописок, можно задействовать rsync ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 07:06 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonВообще конкурентный доступ на запись к файлу по сети - это мега-плохо.Эк вы сейчас SMB/NFS опустили ... Прямо ниже плинтуса. Чел. Этот юзкейс даже для локального файла плох. Несколько разных процессов в произвольное время что-то пишут. Пускай даже в режиме APPEND. Просто плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 10:58 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
maytonЧел. Этот юзкейс даже для локального файла плох.Донесите своё мнение до разрабочиков Firebird (режим Classic), PostgreSQL и Oracle (Linux). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 18:58 |
|
Алгоритм файлового кэша
|
|||
---|---|---|---|
#18+
Oracle работает атомарно и блочно. И не поверх Samba/NFS. А разработки "ушастого кота с сигаретой" (автор не обижайся я это с иронией) очень напоминают строительство БД на файлах. Был там. Знаю. Строили свою такую систему. Но у нах проще было. Не было конкурентных модификаций. И документы были single-write-only. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 19:09 |
|
|
start [/forum/topic.php?fid=16&fpage=10&tid=1339951]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 228ms |
total: | 384ms |
0 / 0 |