Migracja Solr do Opensearch

May 06 2023
Migracja 100 milionów dokumentów z solr do opensearch
Użyliśmy solr do naszych przypadków użycia e-commerce/feed/autosuggest/personalization. Wyzwania z klastrem solr ELK jest teraz dostarczany z elastyczną licencją premium.

Użyliśmy solr do naszych przypadków użycia e-commerce/feed/autosuggest/personalization.

Wyzwania z klastrem solr

  • Zarządzanie infrastrukturą solr (zookeeper, JVM, analiza GC itp.) to wyzwanie. Ogólnie rzecz biorąc, potrzebujemy do tego dedykowanego programisty (SRE/SDE-3).
  • Aktualizacja do nowszej stabilnej wersji. Mniejsze wsparcie społeczności dla wszelkich krytycznych problemów.

ELK jest teraz dostarczany z elastyczną licencją premium. Zdecydowaliśmy się więc na opensearch, ponieważ jest to open source. Bazuje na wersji Elasticsearch 7.10. Posiada licencję Apache.

Większe wyzwania

  • Istniejący kod miał problemy projektowe. Ściśle sprzężony z solrem. Architektura mikroserwisów i zależność od wielu usług.
  • Duży rozmiar klastra w niektórych regionach i premiery w poszczególnych krajach.
  1. Użyliśmy terraform do tworzenia klastrów opensearch we wszystkich regionach.
  2. W kodzie użyliśmy fabrycznego wzorca projektowego i wzorca projektowego adaptera.
  3. Równoległe pozyskiwanie danych zarówno w opensearch, jak i solr.
  4. Migracja danych delta opensearch & solr przez naszą usługę reindeksowania.
  5. Uruchomienie usługi jeden po drugim z obsługą zarówno opensearch, jak i solr
  6. Gdy kroki od 1 do 5 były gotowe. Zaplanowaliśmy krajowe uruchomienie i monitorowanie na newRelic.

Główne wąskie gardło : chodziło o wybór maszyny typu węzła c5 AWS. Naprawiliśmy to przez testy porównawcze i zdecydowaliśmy się na c6g.

Wynik

Z powodzeniem przenieśliśmy ponad 100 milionów dokumentów z solr do opensearch bez przestojów. Migracja obejmowała ponad 100 węzłów na solr i opensearch. Udało nam się również zaoszczędzić około 0,8 mln USD.

Odniesienie

  1. Fabryczny wzór projektowy
  2. Terraformacja
  3. Otwórz wyszukiwanie
  4. Solr
  5. Wzorzec projektowy adaptera