У меня есть централизованная папка на сетевом диске (традиционный жесткий диск), которая используется несколькими веб-службами, запущенными на разных серверах приложений. Сервисы будут постоянно обрабатывать входящие файлы через HTTP-запросы и писать в это место.
Каждый запрос получит свою собственную подпапку с уникальным именем. После того, как все файлы для определенного запроса сохранены, служба, сохранившая файлы, уведомит другую внутреннюю службу, которая будет читать эти файлы из этой папки запроса и выполнять дальнейшие задачи.
Например,
Если D:/MyNetworkFolder/
является родительским каталогом, и если ServiceA обрабатывает Request1, а ServiceB обрабатывает Request2, обе службы будут пытаться сохранить входящие файлы этого запроса (общий размер до 2 ГБ) в D:/MyNetWorkFolder/Request1
и D:/MyNetworkFolder/Request2
соответственно. Как только все файлы будут сохранены для запроса, другая служба будет читать файлы из D:/MyNetworkFolder/RequestNumber.
и выполнять свои задачи.
Таким образом, в часы пик всегда будет набор служб, пытающихся записать новые файлы в сетевую папку, и другой набор служб, пытающихся читать из сохраненных файлов в сетевой папке. И, возможно, другой сервис пытается удалить полностью обработанные файлы.
Возможен ли этот тип параллельной обработки файлов? Повлияет ли это на производительность ввода-вывода приложения или состояние жесткого диска, поскольку несколько служб одновременно пытаются читать / писать из одного и того же родительского местоположения? Другой вариант, который у нас есть, - убедиться, что каждая служба получает свой собственный физический сетевой диск, или рассмотреть возможность использования SSD.
Все серверы работают под управлением Windows Server 2008 и выше, а веб-службы написаны с использованием C # и .NET.
Is this type of parallel file processing possible? Would it affect the application's I/O performance or the hard disk's health because multiple services are trying to read/write from the same Parent location at the same time?
Вы по существу описали, как общие сетевые папки работали с момента появления ... общих сетевых папок. Производительность будет зависеть от вашей инфраструктуры, но это не влияет на производительность.
Все это прекрасно, возможно и стандартно. Файловые серверы могут иметь дело с несколькими клиентами, которые хотят одновременно запрашивать чтение и запись.
Что касается производительности и здоровья, оба они сводятся к показателям ...
Производительность: вы определяете приемлемые показатели производительности для файлового сервера, для приложений или для обоих и используете инструменты мониторинга производительности, чтобы убедиться, что эти показатели сохраняются.
Здоровье: если вы покупаете компоненты приемлемого качества, вы сможете добиться приличного времени безотказной работы. Как только вы пройдете определенный этап, вам следует подумать о решениях высокой доступности, поскольку нет никаких гарантий, что компоненты никогда не выйдут из строя, и все операционные системы в конце концов нуждаются в простое для обслуживания.
Возможно ли, чтобы несколько веб-сервисов одновременно вели запись в централизованный сетевой каталог / папку?
Короче да.
На практике вам понадобится протестируйте свои приложения и хранилище и правильно их размер.
Вы также можете рассмотреть:
Кстати, в 2016 году я бы не стал создавать новое пользовательское приложение с Windows Server 2008 в качестве целевой платформы ...