poniedziałek, 9 sierpnia 2010

Oracle Coherence - zabawy z in memory data grid

Obiecałem tematykę o skalowalności w bardziej praktyczny sposób to czas się z tego wywiązać i zacząć pisać! Przy okazji oczywiście samemu się ucząc, bo po to głównie to miejsce powstało.

Przy okazji GeeCONa podczas University Day w wolnej chwili dosiadłem się na szkolenie Waldemara Kota o Oracle Coherence. To było moje pierwsze zetknięcie z tak zwanym in memory data grid, temat mnie zaciekawił i postanowiłem coś więcej o tym poczytać (przy okazji szkolenia dostałem książkę;)
Oracle Coherence jest (komercyjnym:-/) narzędziem które w łatwy sposób pozwala nam poprawić skalowalność, wydajność oraz dostępność aplikacji.
Umieszczane jest pomiędzy warstwą danych a aplikacją. Najczęściej między bazą danych a klastrem serwerów aplikacyjnych. Komunikacja między tymi warstwami odbywa się tylko poprzez Coherence (konfigurowalne) co w znacznym stopniu odciąża bazy danych i zwiększa czas odpowiedzi do warstwy aplikacji. Coherence przechowuje takie same obiekty jakie używane są w aplikacji, co eliminuje potrzebę ciągłego ładowania i przetwarzania danych w obiekty. Obiekty te rozprowadzane są pomiędzy węzły w klastrze co równoważy obciążenie przy czym dla aplikacji klaster pozostaje widoczny jako pojedynczy system. Zapewniona jest wysoka dostępność i odporność na błędy poprzez przechowywanie więcej niż jednej kopii danego obiektu w różnych miejscach. Co więcej, przechowywane są w pamięci co w znacznym stopniu poprawia czas dostępu do nich.
Co możemy robić z Coherence?
  • rozproszony cache - to chyba podstawowe zastosowanie, nie trzeba się martwić o synchronizację, w bardzo łatwy sposób można też podpiąć się pod wybrany ORM
  • rozproszone zapytania - dane można wyciągać nie tylko wg nadanego klucza głównego, ale także możliwe jest wykonywania zapytań na klastrze. Np wybrać klientów powyżej 35 lat, którzy dodatkową posiadają kwotę na koncie pomiędzy 4000 a 6000 PLN
  • współbieżne operacje i procedury składowane - podobnie jak w bazach danych możliwe jest tworzenie procedur i wykonywanie ich wewnątrz klastra, bez potrzeby przesyłania wszystkich danych do aplikacji. Co więcej możliwe jest też wykonywania operacji współbieżnie
  • zdarzenia - możliwe jest skonfigurowanie Coherence tak by informował i wykonywał podane operacje gdy wybrane dane zostały zmienione
Teraz możemy przejść do zabawy :)
Ze strony Oracle Coherence Download pobieramy paczkę "Oracle Coherence for Java Version 3.6.0" i rozpakowujemy gdzie nam pasuje. Następnie uruchamiamy konsolę, przechodzimy do katalogu coherence/bin i uruchamiamy skrypt cache-server. Po chwili powinien pojawić się napis "Started DefaultCacheServer..." - oznacza to, że węzeł Coherence został uruchomiony.
Ponieważ dzisiaj jest tylko takie małe wprowadzanie, nie będziemy używać Javy tylko wbudowanej konsoli, na początek starczy. Uruchamiamy skrypt coherence. Na konsoli uruchomionego wcześniej węzła powinno na końcu pojawić się coś w stylu: "2010-08-09 20:34:43.552/180.953 Oracle Coherence GE 3.6.0.0 <D5> (thread=Cluster, member=1): Member 2 joined Service Management with senior member 1". Oznacza to, że konsola podłączyła się pod węzeł.
Korzystając z Coherence należy najpierw utworzyć cache w którym będą przechowywane będą obiekty. Można tworzyć ich wiele oraz (co trochę później) konfigurować zgodnie z wymaganiami. Z konsoli utworzenie cache wykonuje się poleceniem: cache [nazwa]. Po utworzeniu jesteśmy automatycznie do niego podłączani. Co jest bardzo fajne - API korzystania z cache jest identyczne ze standardową mapą Javową. Aby coś włożyć do cache używamy put [klucz] [wartosc], aby wyciągnąć get [klucz], aby wypisać całą zawartość cache należy wpisać list. Poniżej zamieszczam bardzo prostą sesję z użyciem Coherence:
To tyle słowem wstępu. Polecam pobawić się konsolą. Uruchomić nawet więcej niż jedną oraz więcej węzłów i sprawdzić jak to działa. Polecam testy z zamykaniem kolejno węzłów i sprawdzaniem czy jakieś obiekty straciliśmy.

Więcej o tym jak Coherence działa i jak go używać w następnych odcinkach ;)

Brak komentarzy:

Prześlij komentarz