Хочется на 10К серверах менять файлик размером 1 кб путём изменения его на одной мастер-ноде. Видеть этот файлик доехавшим до всех 10К «когда-нибудь» (секунды за 2 в реальности). Запись только на мастер-ноде, остальные 10К серверов монтируют её только в режиме readonly.
Хочется:
- работа по UDP; пока не ясно зачем что-то сложнее
- без зависаний вида: «потерялся сетевой пакет (в любом месте) и на всех клиентах операции с этой directiry заблокировались навсегда пока не перемонтируют через force». Как этого достичь точно - плохо понимаю: например настраиваемый параметр timeout, который заставит все вызовы open,read,close вернуться через N миллисек.
- передать по сети 10-гиговый файл только 1 раз, если его надо прочитать 10 раз. Нейросеточка прочитала этот файл, 20 минут думала, потом упала в корку на записи результата и пошла читать 10 гиговый файл заново. Сетевая файловая система должна обменяться с мастером какими-то хешами 64M-блоков этого файла, а данные второй раз читать уже из локальной копии, поняв, что ничего не поменялось.
- для некоторых файлов будет полезно иметь опции «его могут дописать только в конец, так что можно не проверять поменялись ли блоки где-то в середине», но это не точно и не сильно важно.
- в идеале: записывать могут все на всех хостах, но только в свои каталоги; readonly всего чужого, кроме своего.