W oparciu o nasze obserwacje zebrane w trakcie wielu wdrożeń systemów masowej przepustowości, skonstruowaliśmy własny model budowy takich rozwiązań. U jego podstaw stoi – stworzona przez nas – platforma programistyczna, umożliwiająca tworzenie niezwykle wydajnych i skalowalnych systemów dla szczególnie wymagających klientów. Platforma ta jest fundamentem wielu naszych wdrożeń.

Podstawę naszych rozwiązań stanowi zunifikowana platforma programistyczna (a więc taka sama w wielu instalacjach), na której uruchamiane są mikrousługi (nazywane przez nas kiedyś, zanim powstało pojęcie mikrousługi,  modułami lub konwerterami) dostosowane do potrzeb naszego klienta (a więc różne w zależności od instalacji). Z jednej więc strony oznacza to, że nie budujemy systemów od zera, bo korzystamy ze stabilnej, przetestowanej i funkcjonującej w wielu wdrożeniach platformy. Z drugiej strony, taka metoda działania pozwala nam na maksymalne dostosowanie się do potrzeb klienta i tworzenie rozwiązań precyzyjnie zoptymalizowanych pod kątem jego oczekiwań.

Stworzona przez nas platforma Atom jest naszą dumą. Powstała z myślą o wydajności i skalowalności tak, by można było na jej podstawie budować wyrafinowane systemy, w tym w szczególności systemy masowej przepustowości.

Wystarczy powiedzieć, że platforma Atom w typowych przypadkach pozwoli na przetwarzanie w gridzie dziesiątek tysięcy transakcji na sekundę, przy zastosowaniu zupełnie zwyczajnego sprzętu komputerowego. Przy odpowiednim zaprojektowaniu struktur danych i zapewnieniu sprzętu komputerowego do pracy w gridzie, Atom może procesować nawet setki tysięcy i miliony transakcji w ciągu sekundy.

Dowiedz się więcej o platformie Atom:

Konstrukcja platformy Atom

Atom jest zunifikowaną platformą programistyczną (a więc taka sama w wielu instalacjach), na której powstają mikrousługi dostosowane do potrzeb naszego klienta (a więc różne w zależności od instalacji). Z jednej więc strony oznacza to, że nie budujemy systemów od zera, bo korzystamy ze stabilnych, przetestowanych i funkcjonujących w wielu wdrożeniach platform. Z drugiej strony, taka metoda działania pozwala nam na maksymalne dostosowanie się do potrzeb klienta i tworzenie rozwiązań precyzyjnie zoptymalizowanych pod kątem jego oczekiwań.

Wspierane systemy operacyjne i bazodanowe

Wspierane systemy operacyjnie i bazodanowe.

Cały system został napisany w języku C++ i został osobno zopotymalizowany do pracy w środowisku Windows i osobno do pracy w środowisku Linux.

Co więcej, system został tak zaprojektowany, iż możliwy jest jednoczesny serwis kodu źródłowego dla obu środowisk. Zdecydowana większość kodu źródłowego jest bowiem przenaszalna, co ułatwia wspieranie obu tych kluczowych systemów operacyjnych.

Możliwa jest także praca w heterogenicznych środowiskach – jednocześnie pod kontrolą obu tych systemów operacyjnych. W takim przypadku jednak moduły uruchamiane na platformie Atom powinny być tworzone w osobnej wersji na oba systemy operacyjne, co gwarantuje osiągnięcie maksymalnej wydajności.

System używa dwóch kategorii serwerów bazodanowych. Jeden typ serwera używany jest do wewnętrznej konfiguracji samej platformy, a drugi do fizycznego procesowania danych. Serwerami tymi mogą być w praktyce wszystkie liczące się obecnie na rynku marki – od MS SQL Servera, po rozwiązania typu mySQL i PostgreSQL. W celu uzyskania maksymalnej wydajności doradzamy używanie specjalizowanego serwera bazodanowego VoltDB, choć ostateczna decyzja należy oczywiście do naszego klienta.

Dzięki kooperacji VoltDB z platformą Atom, osiągamy skalowalność zupełnie nierealizowalną za pomocą innych metod. Jesteśmy w stanie zaprezentować takie rozwiązania, w których możliwe jest osiągnięcie wydajności rzędu milionów rekordów lub wręcz całych transakcji na sekundę. Co więcej, mogą być to również operacje o znacznym stopniu komplikacji.

VoltDB wraz z platformą Atom umożliwia też niezrównaną skalowalność. Jeśli jest problem z wydajnością – systemy masowej przepustowości wykorzystujące Atom i VoltDB mogą skalować się znacząco w górę.

Moduły na platformę atom

Kluczowym pojęciem w platformie Atom są moduły (realizowane w formie mikrousług). Są to relatywnie małe i proste skompilowane bloki programów tworzone w naszej firmie najczęściej bezpośrednio przy użyciu języka C++, po to by zapewnić maksymalną wydajność. W praktyce moduły tworzone mogą być w dowolnym języku programowania.

Na platformie Atom uruchamiać można dwa typu modułów:

  • moduły on-line, które działając przez cały czas na bieżąco procesują dane bez zwłoki,
  • moduły off-line, które działają tylko co pewien czas i procesują dane, dla których nie jest potrzebne natychmiastowe przeprocesowanie (czyli np. akceptowalne jest minutowe opóźnienie).

Moduły realizują proste, niemal atomowe operacje. W efekcie są stosunkowo proste do programowania oraz, co ważniejsze – prostsze w testowaniu.

Załóżmy, że konieczne jest skonstruowanie systemu, który odbierać będzie dane ze wskazanego konta pocztowego IMAP. Następnie należy zdeszyfrować załącznik do maila za pomocą algorytmu AES, zdekompresować oraz wczytać do bazy danych tak otrzymany plik CSV. Następnie po wyliczeniu agregacji należy stworzyć plik XML, skompresować go, zaszyfrować algorytmem 3DES i przesłać pod wskazany adres na serwer FTP. W takim przypadku konieczne jest zbudowanie następujących modułów:

  1. Moduł odbioru danych ze wskazanego serwera IMAP
  2. Moduł deszyfracji (AES)
  3. Moduł dekompresji (zip)
  4. Moduł importu do bazy danych
  5. Moduł obliczenia agregacji
  6. Moduł eksportu do pliku .xml
  7. Moduł kompresji
  8. Moduł szyfrowania (AES)
  9. Moduł transmisji danych (FTP)

Jak widać moduły 1,2,3,7,8,9 zupełnie nie muszą wnikać w logikę danych jakie przekazują. W efekcie moduły takie mogą być uruchamiane wielokrotnie w różnych kontekstach dla zupełnie różnych danych.

Ewentualna zmiana sposobu agregacji danych wymaga zmiany wyłącznie modułu 5. Wszystkie pozostałe moduły mogą pozostać bez zmian.

Jeśli w podanym wyżej zadaniu konieczna będzie zmiana sposobu komunikacji z docelowym systemem – np. poprzez transmisje danych za pomocą specjalizowanego protokołu, to wtedy trzeba będzie po prostu zastąpić nowym modułem moduły 6-9. Wszystkie inne elementy pozostaną bez zmian.

Moduły można rozumieć jak plug-in. W taki też sposób są one instalowane na platformie Atom, która sama dystrybuuje kod wykonywalny plugin-ów na wszystkie komputery, nad którymi sprawuje kontrolę.

Procesy

Moduł uruchomiony na platformie Atom otrzymuje konkretną konfigurację. Taki moduł wraz z konfiguracją nazywamy procesem. Tak więc np. moduł deszyfracji danych może tworzyć różne procesy – za każdym razem uruchomiony może być w zupełnie innej konfiguracji (inne hasła, inne lokalizacje plików itd.). W efekcie moduł raz stworzony można wykorzystywać jako składnik niezliczonej ilości procesów.

W oczywisty sposób ułatwia to testowanie systemu stworzonego przy użyciu platformy Atom oraz zapewnia możliwośc realnego wykorzystania tego samego kodu źródłowego w różnych biznesowych zastosowaniach.

Zadania

Z założenia procesy są zbyt proste by bezpośrednio za ich pomocą realizować prawdziwe wymagania dzisiejszego biznesu. Platforma Atom pozwala natomiast na tworzenie powiązań pomiędzy procesami. W ten sposób powstają całe grafy powiązań.

W przykładzie podanym w sekcji „Moduły na platformie Atom” graf jest dość prosty – jest to po prostu zwyczajna sekwencja procesów od 1 do 9. Ale można sobie wyobrazić np. specjalny proces uruchamiany wtedy, jeśli deszyfracja pliku się nie powiedzie, albo proces w inny sposób transmitujący dane, kiedy serwer FTP nie jest dostępny.

Graf powiązań pomiędzy konkretnymi procesami nazywamy zadaniem. Zadanie może być właściwie dowolnie skomplikowane i zawierać dowolnie wiele procesów. Procesy mogą być praktycznie dowolnie powiązane (np. mogą być uruchamiane kaskadowo, cykliczne itd. itp.). W każdym zadaniu trzeba wyznaczyć jedynie pierwszy proces, który ma być uruchamiany. Platforma Atom sama zadba, by procesy były uruchamiane w odpowiedniej kolejności, oczywiście w pełni kontrolując wyniki ich działania, ewentualne awarie itd.

Co więcej, mechanizm taki działa zarówno w odniesieniu do zadań off-line (wtedy otrzymujemy klasyczny, lecz niezwykle wydajny mechanizm zadań wsadowych – batch jobs), jak i w odniesieniu do zadań on-line. Ten drugi przypadek jest niezwykle ciekawy. Oznacza to bowiem, że w platformie Atom można zdefiniować sekwencje on-linowych połączeń pomiędzy jednocześnie uruchomionymi procesami. W takim przypadku graf połączeń nie jest prostym grafem informującym o kolejności powiązań, ale grafem wskazującym na to, jakie procesy kierują zapytania do jakich procesów. Platforma Atom może dzięki temu kontrolować obciążenie tych procesów, odpowiednio je uruchamiając na nowych maszynach (lub zamykając bezużyteczne procesy).

Grupy zadań

Skonfigurowane zadania łączone są w platformie Atom w większe struktury nazywane Grupami zadań. Ogromnie ułatwia to administrację systemem. Dla każdej grupy zadań możliwe jest też zdefiniowanie osobnych zadań klasy Beginning-of-Day (BOD) i End-of-Day (EOD).

Strefy czasowe

System obsługuje oczywiście różne strefy czasowe i to jednocześnie. Dane grupy zadań można więc przypisać do strefy czasowej i zdefiniować czas i sposób procesowania w zależności od lokalnych uwarunkowań. W efekcie platforma Atom idealnie sprawdzi się też we wszystkich przedsiębiorstwach globalnych, działających w wielu strefach czasowych, a potrzebujących centralnego przetwarzania pewnych danych.

Grid kontrolowany przez platformę Atom

Platforma Atom jest kompletnym rozwiązaniem, pozwalającym na stworzenie czegoś na kształt chmury lub gridu umieszczonego na farmie serwerów. Platforma Atom przejmuje kontrolę nad tymi maszynami (fizycznymi lub wirtualnymi) i samodzielnie pozwala panować nad strukturą w taki sposób, jak gdyby był to jeden system.

Dzięki platformie Atom możliwe jest w pełni centralne zarządzanie systemem, przez co rozumiemy nie tylko jego konfigurację (a nawet centralne instalowanie modułów), ale również kontrolę jego pracy.

Atom jako kompletne narzędzie dedykowane przetwarzaniu danych jest wyposażona w:

  • system konfiguracyjny (Atom Config) – pozwalający centralnie skonstruować dowolny proces biznesowy w oparciu o grupy zadań, zadania i procesy budowane w oparciu o specjalistyczne moduły,
  • system monitorowania pracy (Atom Console). Praca platformy monitorowana jest we wszystkich kluczowych aspektach tj. system raportuje zarówno parametry maszyn fizycznych, jak i podstawowe aspekty procesowania danych. Dane są dostępne poprzez specjalnie do tego skonstruowany panel administracyjny,
  • system zarządzania obciążeniem (Atom Load Balancing). Jest to jeden z kluczowych elementów platformy. System ten aktywnie zarządza zajętością procesorów i optymalizuje pracę całej platformy, dzięki czemu możliwe jest wykorzystanie maksimum możliwości sprzętowych, jak również priorytetyzowanie poszczególnych procesów poprzez dostarczenie im większej ilości zasobów.

Idź do góry