Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2011 09:49:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

Есть служба которая монопольно и постоянно пишет файл (точнее нечто файлоподобное но не файл). Хочется чтобы множество клиентов в локальной сети имели доступ к файлу на чтение. Те open,close,seek,read,write,tell.

Расшаривание ресурса средствами os кажется не очень удобным в настройке и не очень переносимым.

Как посоветуете сделать? Может есть что-то подобное?



Офлайн

#2 Июнь 2, 2011 10:36:20

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

Тогда ваш вариант или писать свой сервер, что-то на подобии БД.



Офлайн

#3 Июнь 2, 2011 11:05:48

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

Да это небольшой сервер. Базы данных рассматривал - но транзакционная целостность уж очень сильно снижает производительность - данных много (десятки гигабайт).



Офлайн

#4 Июнь 2, 2011 19:40:35

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

> множество клиентов в локальной сети имели доступ к файлу на чтение. Те open,close,seek,read,write,tell.

“на чтение” не вяжется с “write”.

запись клиентам нужна?
что за данные?

клиентам seek нужен в произвольные места или к блокам? например служба дописывает данные блоками (кусками), и клиентам читать тоже надо блоками.

Офлайн

#5 Июнь 3, 2011 08:11:55

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

ошибся
write только сервером только в конец.
остальные чтение с произвольных мест но последовательное - те велика вероятность последовательного чтения (как и во всех файлах)

Запросы не к блокам.

Данные - протоколы состояния физичекой установки. На сервер идет непрерывный поток данных, дальше он режется на блоки, чтобы создать solid архив, но по возможности с произвольным доступом. А запросы на получение данных - то запросы пользователей которые могут заинтересоваться некоторыми небольшими (по сравнению со всем архивом и может быть даже по сравнению с размером блока) кусочками архива.



Офлайн

#6 Июнь 3, 2011 08:25:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

Навскидку можно сделать так:
* Все данные хранятся в файлах по 1Гб: 1.dat, 2.dat
* Последний, записываемый “файл” хранится в оперативной памяти - для быстрой записи, чтения.

Для большей производительности файлы можно будет раскидать по разным разделам.
Обмен можно будет сделать через xmlRPC, если объем передаваемых данных будет не большим иначе можно на сокетах свой протокол потоковый сделать.

Ещё можно глянуть на MongoFS и подобные.

Офлайн

#7 Июнь 3, 2011 10:29:55

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как эмулировать файл в локальной сети.

Спасибо за наводку MongoDB. Меня интересовали в основном реализации потокового протокола на Сокетах, Примеры вобщем есть, но хотелось побольше :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version