RkBlog

Hardware, programming and astronomy tutorials and reviews.

MogileFS - rozproszony system plików dla aplikacji webowych

MogileFS to rozproszony system plików stworzony na potrzeby składowania i replikowania plików statycznych w aplikacjach webowych.

MogileFS to rozproszony system plików od Danga Interactive stworzony na potrzeby składowania plików statycznych w aplikacjach webowych. Używany jest m.in. na Digg, LiveJournal, czy Picknik.com.

Jak to działa

Całym systemem zarządzają trakery (jeden lub więcej) przetrzymujące swoje dane w bazie MySQL. Odpowiedzialne są one także za replikowanie, dodawanie nowych plików do węzłów składowania, czy zwracanie wszystkich URLi dla danego pliku.

Konfiguracja MogileFS

Skonfigurowanie MogileFS wymaga skonfigurowania i odpalenia trakera jak i węzłów składowania, którymi będzie zarządzał. Wymaga to trochę prac administratorskich na (najlepiej) kilku serwerach. Poniżej zbiór przepisów konfiguracji znalezionych w sieci:

Obsługa Trakerów w PHP

Dla PHP istnieje binarne rozszerzenie na pecl.php.net, które kompilujemy standardowo:
phpize
./configure
make
make install
Nastepnie do php.ini dodajemy:
extension=mogilefs.so;
Poniżej przykładowe wykorzystanie API trakera MogileFS (z prezentacji "all the little pieces - distributed systems with PHP")
<?php
$hosts = array('172.10.1.1', '172.10.1.2');
$m = new File_Mogile($hosts, 'profiles');
$m->storeFile('user1234', 'image',
              '/tmp/image1234.jpg');
...
$paths = $m->getPaths('user1234');
W sieci dostępna jest dokumentacja tego rozszerzenia.

Obsługa Trakerów w Pythonie

W przypadku Pythona dostępna jest jest biblioteka mogilefs.py zapewniająca obsługę trakerów, jak i biblioteka MogileLocal posiadająca zgodne API z mogilefs.py, lecz nie wykorzystująca MogileFS (zamiast tego lokalny system plików), którą można wykorzystać do testów, lub w mniejszych projektach (nie wymaga konfiguracji całej infrastruktury MogileFS). W sieci dostępny jest także opis jak wykorzystać ten system plików w Django - mogileFS for Django.
RkBlog

11 October 2009;

Comment article