Generowanie zdarzeń w czasie zbliżonym do rzeczywistego za pomocą Fleet Engine i rozwiązania referencyjnego zdarzeń floty

Sygnały z floty działającej na ziemi w prawie rzeczywistym czasie są przydatne dla firm na wiele sposobów. Firmy mogą na przykład używać tych funkcji, aby:

  • monitorować wydajność swojej floty i wcześnie wykrywać potencjalne problemy;
  • poprawa obsługi klienta dzięki dokładnym informacjom o przewidywanym czasie dostawy i informacjach śledzenia;
  • obniżyć koszty przez identyfikowanie i rozwiązywanie problemów z nieefektywnością,
  • Zwiększanie bezpieczeństwa dzięki monitorowaniu zachowań kierowców i identyfikowaniu potencjalnych zagrożeń
  • Optymalizowanie tras i harmonogramów kierowców w celu zwiększenia efektywności
  • Zadbaj o zgodność z przepisami, śledząc lokalizację pojazdu i godziny pracy

Ten dokument pokazuje, jak deweloperzy mogą przekształcać sygnały z platformy Mapy Google dotyczące „usług mobilności” (czyli „rozwiązania Last Mile Fleet” lub „rozwiązania On-demand Rides and Deliveries”), w działające zdarzenia niestandardowe. Omówione są też kluczowe zagadnienia i decyzje projektowe dotyczące referencyjnej rozwiązania Zdarzenia floty dostępnego na GitHubie.

Ten dokument dotyczy:

Po przeczytaniu tego dokumentu powinieneś mieć podstawową wiedzę o kluczowych elementach i uwzględnianych kwestiach dotyczących systemu strumieniowego oraz o elementach składowych Map Google Platform i Google Cloud, które tworzą rozwiązanie referencyjne Zdarzenia floty.

Omówienie rozwiązania referencyjnego Zdarzenia floty

Modułowy system referencyjny zdarzeń floty to rozwiązanie typu open source, które umożliwia klientom i partnerom Mobility generowanie kluczowych zdarzeń na podstawie komponentów Fleet Engine i Google Cloud. Obecnie rozwiązanie referencyjne obsługuje klientów korzystających z rozwiązania ostatniej mili Fleet Engine. W przyszłości zostanie dodane wsparcie dla przejazdów i dostaw na żądanie.

Rozwiązanie automatycznie generuje zdarzenia na podstawie zmian w określonych danych powiązanych z zadaniami lub podróżami. Z tych zdarzeń możesz korzystać, aby wysyłać powiadomienia, na przykład do zainteresowanych osób, lub uruchamiać inne działania w Twojej flocie.

  • Zmiana szacowanego czasu dotarcia
  • Zmiana względnego szacowanego czasu dotarcia do zadania
  • Czas pozostały do przybycia
  • Odległość do pokonania do zadania
  • Zmiana stanu TaskOutcome

Każdy komponent rozwiązania referencyjnego można dostosować do potrzeb swojej firmy.

Elementy składowe logiczne

Diagram : diagram ten przedstawia ogólne elementy składowe, z których zbudowano referencyjne rozwiązanie Zdarzenia floty.

Omówienie przeglądu zdarzeń floty i logicznych bloków konstrukcyjnych

Rozwiązanie referencyjne zawiera te komponenty:

  • Źródło zdarzeń: miejsce pochodzenia oryginalnego strumienia zdarzeń. Zarówno rozwiązanie „Last Mile Fleet Solution”, jak i „On-demand Rides and Deliveries Solution” są zintegrowane z Cloud Logging, co pozwala przekształcać dzienniki wywołań RPC Fleet Engine w strumienie zdarzeń dostępne dla programistów. To główne źródło danych do analizowania.
  • Przetwarzanie: w ramach tego bloku nieprzetworzone logi wywołania RPC są konwertowane na zdarzenia zmiany stanu, które są obliczane na podstawie strumienia zdarzeń z dziennika. Aby wykryć taką zmianę, ten komponent wymaga magazynu stanu, który umożliwia porównywanie nowych i poprzednich zdarzeń w celu wykrycia zmiany. Zdarzenia nie zawsze zawierają wszystkich istotnych informacji. W takich przypadkach ten blok może w razie potrzeby wywoływać odpowiednie funkcje w systemie zaplecza.
    • Stan pamięci: niektóre platformy przetwarzania zapewniają dane pośrednie, które są trwałe same w sobie. Jeśli nie, możesz przechowywać stan samodzielnie, ponieważ stan powinien być unikalny dla pojazdu i typu zdarzenia. W takim przypadku odpowiednia będzie usługa trwałego przechowywania danych typu klucz-wartość.
  • Sink (Custom Events): wykryty stan powinien być udostępniany każdej aplikacji lub usłudze, która może z niego korzystać. Dlatego naturalnym wyborem jest opublikowanie tego zdarzenia niestandardowego w systemie dostarczania zdarzeń do dalszego przetwarzania.
  • Usługa w dół łańcucha: kod, który wykorzystuje wygenerowane zdarzenia i podejmuje działania odpowiednie do Twojego przypadku użycia.

Wybór usługi

Jeśli chodzi o wdrażanie rozwiązania referencyjnego „Rozwiązanie dotyczące ostatniej mili floty” lub „Rozwiązanie dotyczące przejazdów i dostaw na żądanie” (które zostanie udostępnione pod koniec trzeciego kwartału 2023 r.), wybór technologii dla „źródła” i „zbiornika” jest prosty. Z drugiej strony, w sekcji „Przetwarzanie” jest wiele opcji. Rozwiązanie referencyjne korzysta z tych usług Google:

Diagram : diagram pokazujący usługę Google Cloud do implementowania rozwiązania referencyjnego.

Elementy składowe rozwiązania referencyjnego Fleet Events

Układ projektu w Cloud

Zalecamy domyślne wdrożenie wielu projektów. Dzięki temu można wyraźnie oddzielić wykorzystanie Google Maps Platform i Google Cloud oraz powiązać je z wybranym przez Ciebie sposobem rozliczeń.

Źródło zdarzeń

Rozwiązanie dotyczące ostatniej milirozwiązanie dotyczące przejazdów i dostaw na żądanie zapisują żądania interfejsu API i ładunki odpowiedzi w dzienniku Cloud. Cloud Logging dostarcza logi do co najmniej 1 usługi. Przekierowywanie do Cloud Pub/Sub to idealny wybór, ponieważ pozwala przekształcać logi w strumień zdarzeń bez konieczności kodowania.

Ujście

W Google Cloud usługa Cloud Pub/Sub jest preferowanym systemem do przesyłania wiadomości w czasie zbliżonym do rzeczywistego. Podobnie jak zdarzenia ze źródła były dostarczane do Pub/Sub, zdarzenia niestandardowe są również publikowane w Pub/Sub do dalszego przetwarzania.

Przetwarzam

W przetwarzaniu zdarzeń biorą udział te komponenty: Podobnie jak inne elementy składowe, komponenty przetwarzania są całkowicie bezserwerowe i można je skalować w górę i w dół.

  • Cloud Functions jako platforma obliczeniowa w przypadku wersji początkowej (*)
    • bezserwerowe, skalowane w górę i w dół za pomocą ustawień skalowania, co pozwala zarządzać kosztami;
    • Java jako język programowania ze względu na dostępność bibliotek klienta dla interfejsów API związanych z Fleet Engine, które ułatwiają implementację.
  • Cloud Firestore jako pamięć stanu
    • Bezserwerowy magazyn klucz-wartość
  • Cloud Pub/Sub jako punkt integracji z komponentami w górę i w dół
    • luźno sprzężona integracja w prawie rzeczywistym czasie,

Funkcji można używać w postaci domyślnej z ustawieniami domyślnymi, ale można je też przekonfigurować. Parametry konfiguracji są ustawiane za pomocą skryptów wdrażania i są szczegółowo opisane w README odpowiednich modułów Terraform.

*Uwaga: w ramach tego rozwiązania referencyjnego planujemy udostępnić alternatywne implementacje, które mogą pomóc w spełnianiu różnych wymagań.

Wdrożenie

Aby proces wdrażania rozwiązania referencyjnego był powtarzalny, dostosowywalny, bezpieczny i umożliwiał kontrolę kodu źródłowego, jako narzędzie automatyzacji wybrano Terraform. Terraform to powszechnie stosowane narzędzie IaC (infrastruktura jako kod) z bogatym wsparciem dla Google Cloud.

Moduły Terraform

Zamiast tworzyć jeden duży, monolityczny moduł wdrażania rozwiązania referencyjnego, można zaimplementować powtarzalne bloki automatyzacji jako moduły Terraform, które można stosować niezależnie. Moduł zawiera wiele konfigurowalnych zmiennych, z których większość ma wartości domyślne, dzięki czemu możesz szybko rozpocząć pracę, a zarazem masz możliwość dostosowania ich do swoich potrzeb i preferencji.

Modułach zawartych w rozwiązaniu referencyjnym:

  • Konfiguracja logowania Fleet Engine: automatyzowanie konfiguracji związanych z Cloud Logging na potrzeby korzystania z Fleet Engine. W rozwiązaniu referencyjnym służy do kierowania logów związanych z Fleet Engine do określonego tematu Pub/Sub.
  • Wdrażanie funkcji w chmurze Fleet Events: zawiera przykładowe wdrożenie kodu funkcji, a także automatyzuje ustawienia uprawnień wymagane do bezpiecznej integracji między projektami.
  • Wdrożenie całego rozwiązania referencyjnego: wywołuje 2 poprzednie moduły i obejmuje całe rozwiązanie.

Bezpieczeństwo

System zarządzania dostępem jest stosowany do stosowania zasady jak najmniejszych uprawnień wraz ze sprawdzonymi metodami zapewniania bezpieczeństwa Google Cloud, takimi jak podszywanie się pod konto usługi. Aby lepiej zrozumieć, co Google Cloud oferuje, aby zapewnić Ci większą kontrolę nad bezpieczeństwem, zapoznaj się z tymi artykułami.

Dalsze działania

Możesz teraz otworzyć i użyć narzędzia do analizowania zdarzeń floty. Aby rozpocząć, otwórz stronę GitHub.

Dodatek

Gromadzenie wymagań

Zalecamy zebranie wymagań na wcześniejszym etapie procesu.

Najpierw podaj szczegóły dotyczące tego, dlaczego chcesz używać zdarzeń w zbliżonym czasie rzeczywistym lub dlaczego Ci to odpowiada. Oto kilka pytań, które pomogą Ci sprecyzować Twoje potrzeby.

  • Jakie informacje są wymagane, aby strumień zdarzeń był przydatny?
    • Czy wynik może być uzyskany wyłącznie na podstawie danych zebranych lub wygenerowanych w usługach Google? Czy wzbogacanie danych z integrowanych systemów zewnętrznych jest wymagane? Jeśli tak, jakie to systemy i jakie interfejsy integracji oferują?
    • Jakie dane chcesz mierzyć w swojej firmie? Jak są one zdefiniowane?
    • Jeśli musisz obliczać dane na podstawie zdarzeń, jakiego rodzaju agregacji będzie to wymagać? Spróbuj ułożyć sekwencję działań. (np. Porównaj ETA/ATA z wartościami SLO w podgrupie floty w godzinach szczytowego zapotrzebowania na zasoby, aby obliczyć wydajność przy ograniczonych zasobach.
  • Dlaczego interesuje Cię model oparty na zdarzeniach, a nie na partiach? Czy chodzi o krótszy czas reakcji (czas do wykonania akcji) czy luźno połączoną integrację (zwinność)?
    • Jeśli opóźnienie ma być niskie, określ je jako „low”. Minuty? Sekundy? Mniej niż sekunda? I jaki jest czas oczekiwania?
  • Czy Twój zespół zainwestował już w technologię i powiązane z nią umiejętności? Jeśli tak, jakie są to rozwiązania i jakie zapewniają punkty integracji?
    • Czy istnieją jakieś wymagania, których nie spełniają Twoje obecne systemy lub z którymi mogą mieć problemy podczas przetwarzania zdarzeń pochodzących z Twojej floty?

Zasady projektowania

Zawsze warto znać proces myślenia. Pomaga to w podejmowaniu spójnych decyzji projektowych, zwłaszcza gdy masz do wyboru wiele opcji.

  • Domyślnie wybieraj prostsze opcje.
  • Domyślnie krótszy czas do wartości. Mniej kodu, krótsza krzywa uczenia.
  • W przypadku opóźnień i wydajności staraj się osiągnąć ustawiony próg, a nie maksymalną optymalizację. Unikaj też nadmiernej optymalizacji, ponieważ często prowadzi ona do zwiększenia złożoności.
  • To samo dotyczy kosztów. Utrzymaj koszty na rozsądnym poziomie. Być może nie jesteś jeszcze w takim położeniu, aby móc korzystać z wartościowych, ale stosunkowo drogich usług.
  • W fazie eksperymentalnej zmniejszanie skali może być równie ważne jak zwiększanie. Rozważ platformę, która daje elastyczność skalowania w górę z limitem i skalowania w dół (najlepiej do zera), aby nie wydawać pieniędzy, gdy nic się nie dzieje. Wysoką wydajność z infrastrukturą działającą bez przerwy można rozważyć w późniejszej fazie wdrażania, gdy będziesz mieć pewność, że spełnia ona Twoje potrzeby.
  • Obserwuj i mierz, aby później móc określić, nad czym należy jeszcze popracować.
  • Utrzymywanie luźnego połączenia usług. Dzięki temu łatwiej będzie Ci później zamienić poszczególne elementy.
  • I wreszcie, nie mniej ważne, bezpieczeństwo nie może być zaniedbywane. Usługa działa w środowisku publicznej chmury, więc nie może być żadnych niezabezpieczonych wejść do systemu.

Pojęcia związane ze strumieniowaniem

Jeśli dopiero zaczynasz korzystać z metody opartej na zdarzeniach lub strumieniowego przesyłania danych, warto poznać najważniejsze pojęcia, z których niektóre mogą się znacznie różnić od przetwarzania w partiach.

  • Skalowanie : w odróżnieniu od przetwarzania wsadowego, w którym zwykle masz dobrą orientację w ilości danych do przetworzenia, w przypadku przetwarzania strumieniowego nie możesz tego określić. Korki w mieście mogą nagle generować dużą liczbę zdarzeń z określonego obszaru, które trzeba będzie przetworzyć.
  • Okna : zamiast przetwarzania zdarzeń pojedynczo często zdarza się, że chcesz grupować zdarzenia na osi czasu w mniejsze „okna” jako jednostki do obliczeń. Do wyboru są różne strategie okna, np. „okno stałe (np. każdy dzień kalendarzowy)”, „okno przesuwające się (ostatnie 5 minut)” czy „okno sesji (podczas tej podróży)”. Im dłuższe okno, tym dłuższy czas oczekiwania na wyniki. Wybierz odpowiedni model i konfigurację, które spełniają Twoje wymagania.
  • Reguły : w niektórych przypadkach nie masz innego wyjścia, jak tylko stosować stosunkowo dłuższe okna. Nie chcesz jednak czekać do końca tego okna, aby generować zdarzenia, ale raczej emitować wyniki pośrednie w międzyczasie. Tę koncepcję można zastosować w przypadkach, gdy warto najpierw zwrócić szybkie wyniki, a potem je skorygować. Wyobraź sobie, że wysyłasz stan pośredni na poziomie 25%, 50% i 75% ukończenia dostawy.
  • Kolejność : zdarzenia niekoniecznie docierają do systemu w kolejności, w jakiej zostały wygenerowane. Szczególnie w przypadku przypadków użycia, w których wykorzystywana jest komunikacja w sieciach mobilnych, co powoduje opóźnienia i skomplikowane ścieżki routingu. Musisz zdawać sobie sprawę z różnicy między „czasem zdarzenia” (kiedy zdarzenie rzeczywiście miało miejsce) a „czasem przetwarzania” (kiedy zdarzenie dotarło do systemu) i odpowiednio obsługiwać zdarzenia. Ogólnie zdarzenia należy przetwarzać na podstawie „czasu zdarzenia”.
  • Dostarczanie wiadomości – co najmniej raz a dokładnie raz: różne platformy obsługują te opcje w różny sposób. W zależności od przypadku użycia musisz rozważyć strategię ponownego próbowania lub deduplikacji.
  • Pełnowartość : podobnie jak w przypadku zmiany kolejności wiadomości, istnieje ryzyko ich utraty. Może to być spowodowane wyłączeniem aplikacji i urządzenia z powodu czasu pracy baterii urządzenia, niezamierzonego uszkodzenia telefonu, utraty połączenia w tunelu lub wiadomości, która została odebrana, ale poza dozwolonym oknem. Jak niepełne dane wpłyną na Twoje wyniki?

Ta lista nie jest pełna, ale stanowi wprowadzenie. Oto kilka bardzo polecanych artykułów, które pomogą Ci lepiej zrozumieć poszczególne tematy.

Współtwórcy

Dokument jest utrzymywany przez Google. Pierwotnie napisali go autorzy wymienieni poniżej.

Główni autorzy: