2016-11-02 27 views
5

Mam pracownika w regionie głównym (USA-Wschód), który oblicza dane o ruchu w naszych lokalizacjach brzegowych. Chcę przenieść dane z regionu brzegowego do naszego głównego regionu kafka.Jaki jest najlepszy sposób przekazywania wiadomości kafka z moich węzłów brzegowych?

Przykładem jest Polska, Australia, USA-Zachód. Chcę przesunąć wszystkie te statystyki na wschód-wschód. Nie chcę zwiększać dodatkowego opóźnienia podczas zapisywania z obszarów krawędzi do podstawowego.

Inną opcją jest utworzenie kolejnego klastra kafka i pracownika działającego jako przekaźnik. Wymagałoby to od nas utrzymania poszczególnych klastrów w każdym regionie i znacznie bardziej skomplikowałoby nasze wdrożenia.

Widziałem Mirror Maker, ale tak naprawdę nie chcę Lustro nic, Chyba szukam więcej dla systemu przekazywania. Jeśli nie jest to zaprojektowany sposób, w jaki sposób można zebrać wszystkie dane dotyczące aplikacji do regionu głównego, który ma być obliczany i sortowany?

Dziękuję za poświęcony czas.

+0

Trochę wyjaśnienia, czy szukasz czegoś, co możesz uruchomić na swoim węźle (krawędziach) w celu opublikowania wiadomości z powrotem do centralnego klastra Kafki? czy szukasz czegoś, co działałoby w bardziej centralny sposób, który mógłby dotrzeć do każdego węzła brzegowego, poprosić o aktualizację, a następnie opublikować te aktualizacje w klastrze Kafki? – JDP10101

Odpowiedz

1

O ile mi wiadomo, są tu opcje:

  1. Konfiguracja lokalnego klastra Kafka w każdym regionie i mają węzły brzegowe zapisu do lokalnego klastra Kafka pisze o niskiej latencji. Od tam ustawisz kreator lustrzany, który pobiera dane z lokalnej Kafki do zdalnej Kafki w celu agregacji.
  2. Jeśli obawiasz się przerwać swoją ścieżkę żądania aplikacji za pomocą ukrytych żądań blokowania, możesz skonfigurować producentów tak, aby zapisywali asynchronicznie (bez blokowania) do zdalnego klastra Kafka. W zależności od wyboru języka programowania może to być proste lub złożone ćwiczenie.
  3. Uruchomić usługę hosta przekaźnikowego (lub bufor danych), która może być tak prosta, jak plik dziennika i demon, który przesyła do zdalnego klastra Kafka (jak wspomniano powyżej). Alternatywnie, uruchom kontener pojedynczego instancji Kafka/Zookeeper (są obrazy doków, które łączą oba razem), które buforują dane w celu dalszego przeciągania.

Opcja 1. jest zdecydowanie najbardziej standardowym rozwiązaniem tego problemu, aczkolwiek nieco uciążliwym. Podejrzewam, że w przyszłości pojawi się więcej narzędzi dla użytkowników Confluent/Kafka, którzy będą wspierać opcję 3..

1

Napisz wiadomości do lokalnego pliku dziennika na dysku. Napisz małego demona, który czyta plik dziennika i przesyła zdarzenia do głównego demona kafka.

Aby zwiększyć czasochłonność i ograniczyć efekt opóźnienia, można również co minutę obracać plik dziennika. Następnie rsync logfile z cronjob do twojego głównego kafka regionu drobiazgowo. Niech uruchamia się demon importu.