Я использую C ++ для резервного копирования файлов с моих систем клиентов. Каждую секунду файлы загружаются с машин моего клиента, и мне нужно получить файловые дескрипторы для каждого файла, который нужно записать на сервер. Иногда я получаю даже 10K файлов за минуту, так как я могу на самом деле использовать файловые дескрипторы для эффективной записи нескольких файлов.
У меня есть C ++ Socket Listener, каждый клиентский компьютер подключается к серверу и начинает загружать файлы. Можно ли написать несколько файлов с ограниченными файловыми дескрипторами. Я попытался записать все файлы в один большой файл, но я отслеживаю конец файла и запускаю байты в большом файле для каждого файла, который я записываю в него. Это была бы какая-то чертова работа ,
Я хочу иметь возможность записывать файлы с высокой производительностью, а также хранить диск в безопасности. Есть идеи, чтобы поделиться ..?
Кажется, вы должны, вероятно, поставить в очередь запросы.
Таким образом, вы можете иметь ограниченное количество работников (скажем, 16, в зависимости от аппаратного обеспечения в вашей системе), чтобы фактически передавать файлы и заставлять остальных ждать.
Это, вероятно, улучшит пропускную способность и производительность, так как
он не работает одновременно с дисками (на старомодном оборудовании (то есть чаще всего с вращением дисков), это может привести к значительному снижению производительности, если вы вызываете многократный поиск дисков).
независимо от того, при записи последовательных загрузок на общие тома, обычно использование полосы пропускания будет оптимальным, когда
sum(upload rates) ~= effective disk write bandwitdh
На очереди:
backlog
параметр к listen
функцияпосмотри на производитель / потребитель реализации
Смотрите также потребитель / производитель в c ++ или другие поисковые системы
Других решений пока нет …