Przejdź przez Memcached i Redis, oto Hollow Netflix

Po dwóch latach użytku wewnętrznego Netflix oferuje nowy projekt open source jako potężną opcję buforowania zestawów danych, które stale się zmieniają.

Hollow to biblioteka i zestaw narzędzi Java, których celem jest buforowanie w pamięci zestawów danych o rozmiarze do kilku gigabajtów. Netflix twierdzi, że cel Hollowa jest trojaki: ma być bardziej efektywny w przechowywaniu danych; może dostarczać narzędzia do automatycznego generowania API w celu wygodnego dostępu do danych; i może automatycznie analizować wzorce wykorzystania danych, aby wydajniej synchronizować się z zapleczem.

Zatrzymajmy to między nami

Większość scenariuszy buforowania danych w systemie, w którym nie są one przechowywane - system „konsumencki”, a nie system „producenta” - obejmuje użycie produktu takiego jak Memcached lub Redis. Hollow przypomina oba produkty, ponieważ wykorzystuje pamięć w pamięci do szybkiego dostępu, ale nie jest to rzeczywisty magazyn danych, taki jak Redis.

W przeciwieństwie do wielu innych systemów buforowania danych, Hollow jest przeznaczony do połączenia z określonym zestawem danych - danym schematem z określonymi polami, zwykle strumieniem JSON. Wymaga to trochę pracy przygotowawczej, chociaż Hollow zapewnia narzędzia do częściowej automatyzacji procesu. Powód tego: Hollow może przechowywać dane w pamięci jako fragmenty o stałej długości, silnie wpisane, które nie podlegają wyrzucaniu elementów bezużytecznych w Javie. W rezultacie są one szybciej dostępne niż konwencjonalne obiekty Java.

Kolejnym rzekomym dobrodziejstwem Hollow jest to, że zapewnia gamę narzędzi do pracy z danymi. Po zdefiniowaniu schematu danych Hollow może automatycznie utworzyć interfejs API języka Java, który może dostarczać dane autouzupełniania do IDE. Dane można również śledzić w miarę ich zmian, dzięki czemu programiści mają dostęp do migawek z określonego punktu w czasie, różnic między migawkami i wycofywania danych.

Szybciej dookoła

Wiele zalet Netflix dla Hollow obejmuje podstawową wydajność operacyjną, a mianowicie krótszy czas uruchamiania serwerów i mniejszą utratę pamięci. Ale narzędzia Hollow do modelowania i zarządzania danymi mają również pomóc w rozwoju, a nie tylko przyspieszyć produkcję.

„Wyobraź sobie, że możesz szybko przenieść cały zestaw danych produkcyjnych - aktualny lub z dowolnego miejsca w niedawnej przeszłości - do lokalnej stacji roboczej, załadować go, a następnie dokładnie odtworzyć określone scenariusze produkcyjne” - mówi Netflix we wprowadzającym poście na blogu.

Jedynym zastrzeżeniem jest to, że Hollow nie nadaje się do zbiorów danych o wszystkich rozmiarach - „KB, MB i GB, ale nie TB”, tak firma umieszcza to w swojej dokumentacji. To powiedziawszy, Netflix sugeruje również, że Hollow zmniejsza wielkość rozrostu wymaganą przez buforowany zestaw danych. „Przy odpowiedniej strukturze i odrobinie modelowania danych ten próg [pamięci] jest prawdopodobnie znacznie wyższy niż myślisz” - pisze Netflix.