Przetwarzanie dużej ilości danych

W dużych firmach IT spotyka się z problemem przetwarzania dużej ilości danych, które pochodzą z różnych źródeł. Przykłady takich sytuacji dotyczą SMS Center czy analizy logów. W takich sytuacjach, ważne jest podzelenie zadania analizy wpisów na mniejsze, stworzenie aplikacji pozwalających na wykonanie prostych zadań na porcji danych oraz stworzenie systemu kolejek przekazujących dane pomiędzy tymi aplikacjami.

Kiedyś stowrzyłem taki system dla przetwarzania SMSów. Otóż całość działała na klastrze p630 (dwie maszyny). System służył do zliczania smsów przesyłanych w ramach konkursów (Big Brother, etc). Całe przetwarzanie zostało podzielone na małe części / aplikacje, które zostały stworzone w oparciu o język C++ oraz C. Komunikacja pomiędzy aplikacjami odbywała się poprzez kolejki SHM. Wydajność “gołego” systemu była na poziomie 100 000 komunikatów na sekundę. W tym teście nie było zapiętych baz danych (aplikacje nie zapisywały danych do baz). Później okazało się, że włączenie zapisu do baz spowalnia system. Ponieważ system był obciążany w sposób nie deteministyczny, podobna kolejka SHM została zastosowana do osłonięcia zleceń zapisu do bazy danych. W efekcie końcowym, wydajność gotowego systemu spadła do 30 000 komunikatów SMS na sekundę.

Po co klaster? Dodatkowym wymaganiem była pełna odporność na awarię maszyny przetwarzającej. W związku z tym, mechanizm kolejek został wyposażony w funkcjonalność pozwalającą na kopiowanie zawartości kolejek na drugą maszynę. Kopiowany był pełen stan kolejek. Dzięki temu, w przypadku awarii podstawowej maszyny, system przełączał się na drugą i natychmiast startował z przetwarzaniem.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
= 4 + 7

Easy AdSense by Unreal