Вы можете сделать очень простой тест. Например, я создал небольшое тестовое приложение, которое записывает и считывает 1000 файлов с 1000 байтами каждый на локальный диск и на сетевой диск. Вот код:
private void btnStart_Click(object sender, EventArgs e)
{
int count, size;
count = Int32.Parse(tbCount.Text);
size = Int32.Parse(tbSize.Text);
string path = tbPath.Text;
string stringToWrite = new string('A', size);
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
for(int i=0;i<count;i++)
{
string fileName = System.IO.Path.Combine(path, i.ToString() + ".tst");
System.IO.File.AppendAllText(fileName, stringToWrite);
}
sw.Stop();
tbLog.Text += String.Format("{0} files with length {1} saved to {2} in {3}ms"+Environment.NewLine, count, size, path, sw.ElapsedMilliseconds);
}
private void btnRead_Click(object sender, EventArgs e)
{
int count;
count = Int32.Parse(tbCount.Text);
string path = tbPath.Text;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
for (int i = 0; i < count; i++)
{
string fileName = System.IO.Path.Combine(path, i.ToString() + ".tst");
string temp = System.IO.File.ReadAllText(fileName);
}
sw.Stop();
tbLog.Text += String.Format("{0} files loaded from {1} in {2}ms" + Environment.NewLine, count, path, sw.ElapsedMilliseconds);
}
(Первая функция записывает файлы, вторая функция считывает файлы, размер, граф и путь определяется из пользовательского интерфейса).
Вот результаты:
Запись 1000 файлов 1000 байтов каждый:
Локальный диск: 800ms
Сетевой диск: 9000ms
Чтение 1000 файлов 1000 байтов каждый :
Местный привод: 500мс
Сетевой диск: 5000 мс
Таким образом, вы видите, что кто-то должен платить за удаленный доступ - писатель или читатель. Вы также видите, что запись в удаленное местоположение вдвое длиннее, чем чтение с удаленного места.
Я думаю, что решение должно быть принято на основе логики вашего приложения и функций сервера - какой сервер более занят, какой сервер должен быстро обрабатывать информацию? Например, если первый сервер получает данные с очень высокой скоростью и должен быстро сохранять все данные в файлах в реальном времени, а второй сервер может поставить очередь на обработку файлов и не спешить, - тогда файлы должны быть сохраненный локально на первом сервере. Если первый сервер просто пишет файлы, а его процессор/IO не слишком занят, а второй сервер загружается до максимума, обрабатывая файлы - пусть первый сервер доставляет файлы на локальный диск второго сервера.
Подумайте также о масштабируемости - что, если в будущем вам понадобятся 5 серверов типа «Сервер 1» для записи одного сервера 2? Или, 5 серверов типа «Сервер 2» одновременно обрабатывают файлы, написанные единственным сервером 1? Или много серверов записывают и читают файлы одновременно? Может быть, база данных или какое-то решение в очереди будет лучше, если эти параметры актуальны.
Но, если вам все это безразлично и просто нужно иметь лучшую общую производительность, то, опять же, запись локальных файлов и чтение из удаленного места происходит быстрее.
Что вы подразумеваете под «точкой хранения»? – Vikhram
Где файлы должны храниться. – Nick
Являются ли скорости записи на диск для обоих SSD одинаковыми? Re # 2, Что вы подразумеваете под «надежным»? У меня никогда не было проблем с надежностью для чтения/записи сетевых файлов (с точки зрения .NET API). – Vikhram