Найти - Пользователи
Полная версия: Как эмулировать файл в локальной сети.
Начало » Python для новичков » Как эмулировать файл в локальной сети.
1
doza_and
Есть служба которая монопольно и постоянно пишет файл (точнее нечто файлоподобное но не файл). Хочется чтобы множество клиентов в локальной сети имели доступ к файлу на чтение. Те open,close,seek,read,write,tell.

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

Как посоветуете сделать? Может есть что-то подобное?
evilempirer
Тогда ваш вариант или писать свой сервер, что-то на подобии БД.
doza_and
Да это небольшой сервер. Базы данных рассматривал - но транзакционная целостность уж очень сильно снижает производительность - данных много (десятки гигабайт).
o7412369815963
> множество клиентов в локальной сети имели доступ к файлу на чтение. Те open,close,seek,read,write,tell.

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

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

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

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

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

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

Ещё можно глянуть на MongoFS и подобные.
doza_and
Спасибо за наводку MongoDB. Меня интересовали в основном реализации потокового протокола на Сокетах, Примеры вобщем есть, но хотелось побольше :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB