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 lądzie w prawie rzeczywistym czasie są przydatne dla firm na wiele sposobów. Firmy mogą na przykład używać tych danych, 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 koncepcje 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 przesyłania strumieniowego oraz elementy konstrukcyjne Map Google i Google Cloud, które składają się na 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 przejazdami. Z tych zdarzeń możesz korzystać, aby wysyłać powiadomienia, takie jak te, do zainteresowanych osób lub wywoływać inne działania w Twojej flocie.

  • Zmiana szacowanego czasu dotarcia
  • Zmiana przewidywanego czasu dotarcia do zadania
  • Czas pozostały do rozpoczęcia zadania
  • 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

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

Omówienie zdarzeń floty i logicznych bloków konstrukcyjnych

Rozwiązanie referencyjne zawiera te komponenty:

  • Źródło zdarzenia: miejsce pochodzenia pierwotnego strumienia zdarzeń. Zarówno rozwiązanie „Last Mile Fleet Solution”, jak i „On-demand Rides and Deliveries Solution” są zintegrowane z Cloud Logging, co ułatwia przekształcanie logów wywołań RPC Fleet Engine w strumienie zdarzeń dostępne dla deweloperów. To główne źródło danych do analizowania.
  • Przetwarzanie: w tym bloku nieprzetworzone logi wywołań RPC są konwertowane na zdarzenia zmiany stanu. Blok ten wykonuje obliczenia na podstawie strumienia zdarzeń logowania. Aby wykryć taką zmianę, ten komponent wymaga magazynu stanu, który umożliwia porównanie nowych i poprzednich zdarzeń w celu wykrycia zmiany. Zdarzenia nie zawsze zawierają wszystkich interesujących informacji. W takich przypadkach ten blok może w razie potrzeby wykonywać zapytania do backendów.
    • 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 dla floty ostatniej mili” lub „Rozwiązanie dla przejazdów i dostaw na żądanie” (które będzie dostępne pod koniec trzeciego kwartału 2023 r.), wybór technologii dla „źródła” i „zbiornika” jest prosty. Z drugiej strony, opcja „Przetwarzanie” oferuje szeroki zakres opcji. Rozwiązanie referencyjne korzysta z tych usług Google:

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

Elementy składowe rozwiązania referencyjnego Fleet Events

Układ projektu w Google Cloud

Zalecamy domyślne wdrożenie wielu projektów. Dzięki temu zużycie w Google Maps Platform i Google Cloud można wyraźnie rozdzielić oraz powiązać 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 w tym przypadku, 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 stanowa pamięć masowa
    • Bezserwerowy magazyn klucz-wartość
  • Cloud Pub/Sub jako punkt integracji z komponentami w górę i w dół
    • luźno sprzężoną integrację w czasie zbliżonym do rzeczywistego.

Funkcji można używać w postaci domyślnej z ustawieniami domyślnymi, ale można je też ponownie skonfigurować. Parametry konfiguracji są ustawiane za pomocą skryptów wdrożeniowych 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 zmiennych, które można konfigurować. Większość z nich ma wartości domyślne, dzięki czemu możesz szybko rozpocząć pracę, ale jednocześnie masz możliwość dostosowania ich do swoich potrzeb i preferencji.

Modułach zawartych w rozwiązaniu referencyjnym:

  • Konfiguracja logowania Fleet Engine: automatyzuj konfiguracje związane z logowaniem w chmurze 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 dowiedzieć się więcej o tym, co Google Cloud oferuje, aby zapewnić Ci większą kontrolę nad bezpieczeństwem, zapoznaj się z poniższymi artykułami.

Dalsze kroki

Możesz teraz uzyskać dostęp do narzędzia do analizowania zdarzeń floty i sprawdzić jego działanie. 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 SLO w podgrupie floty w godzinach szczytowego zapotrzebowania, 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 chcesz ustawić niskie opóźnienie, 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 wybierane są 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 gotowy na korzystanie z usług o wysokiej wartości, ale stosunkowo drogich.
  • 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 nie robisz. Wysoką wydajność przy użyciu infrastruktury zawsze aktywnej można wziąć pod uwagę w późniejszej fazie, 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 powiązania usług. Ułatwia to późniejszą wymianę poszczególnych elementów.
  • Ważną kwestią jest też bezpieczeństwo. Usługa działa w środowisku chmury publicznej, więc nie może być żadnych niezabezpieczonych drzwi do systemu.

Pojęcia związane ze strumieniowaniem

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

  • Skala : w odróżnieniu od przetwarzania wsadowego, w którym zwykle masz dobrą orientację w ilości danych do przetworzenia, w przypadku przetwarzania strumieniowego nie masz takiej możliwości. Korki w mieście mogą nagle generować dużo zdarzeń z określonego obszaru, które musisz przetworzyć.
  • Okna : zamiast przetwarzania zdarzeń pojedynczo często zdarza się, że chcesz grupować zdarzenia na osi czasu w mniejsze „okna” jako jednostki obliczeniowe. Do wyboru są różne strategie stosowania okien, takie jak „okna stałe (np. każdy dzień kalendarzowy)”, „okna przesuwne (ostatnie 5 minut)” czy „okna sesji (podczas tej podróży)”. Im dłuższe okno, tym dłuższy czas oczekiwania na wyniki. Wybierz model i konfigurację, które spełniają Twoje wymagania.
  • Wyzwalanie : 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 zamiast tego 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% realizacji 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 przez sieci komórkowe, 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. Zwykle zdarzenia są przetwarzane na podstawie „czasu zdarzenia”.
  • Dostarczanie wiadomości – zasada „przynajmniej raz” a zasada „dokładnie raz”: różne platformy obsługują te zasady w różny sposób. W zależności od przypadku użycia musisz rozważyć strategie ponownego próby lub usuwania duplikatów.
  • Pełnowartość : podobnie jak w przypadku zmiany kolejności wiadomości, istnieje ryzyko ich utraty. Może to być spowodowane wyłączeniem aplikacji lub urządzenia z powodu wyczerpania baterii, przypadkowego uszkodzenia telefonu, utraty połączenia w tunelu lub otrzymania wiadomości poza dozwolonym oknem. Jak niepełne dane wpłyną na Twoje wyniki?

To nie jest pełna lista, ale wprowadzenie. Oto kilka bardzo polecanych materiałów, które pomogą Ci lepiej zrozumieć te tematy.

Współtwórcy

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

Główni autorzy: