Fleet Engine ve Fleet Etkinlikleri Referans Çözümü ile neredeyse gerçek zamanlı etkinlikler oluşturun

Karada çalışan filodan gelen neredeyse gerçek zamanlı sinyaller, işletmeler için pek çok açıdan yararlıdır. Örneğin, işletmeler bu uygulamaları şu amaçlarla kullanabilir:

  • Filolarının performansını izlemek ve olası sorunları erkenden tespit etmek
  • Doğru tahmini varış süreleri ve izleme bilgileri sağlayarak müşteri hizmetlerini iyileştirme
  • Verimsizlikleri belirleyip ele alarak maliyetleri azaltma
  • Sürücü davranışını izleyerek ve potansiyel tehlikeleri belirleyerek güvenliği artırın
  • Verimliliği artırmak için sürücü rotalarını ve tarifelerini optimize edin
  • Araçların konumunu ve hizmet saatlerini takip ederek düzenlemelere uyun

Bu belgede, geliştiricilerin Google Haritalar Platformu'nun "Mobilite Hizmetleri" ("Last Mile Fleet Solutions" (LMFS) veya "İsteğe Bağlı Yolculuk ve Teslimat Çözümü) (ODRD) çözümlerinden (ODRD) gelen sinyalleri işlem yapılabilir özel etkinliklere nasıl dönüştürebileceği gösterilmektedir. GitHub'da kullanılabilen Filo Etkinlikleri Referans Çözümü ile ilgili temel kavramlar ve tasarım kararları da ele alınmaktadır.

Bu belge aşağıdakilerle alakalı:

  • Google Haritalar Platformu'nun "Mobilite hizmetleri" ve temel bileşenlerinden biri "Fleet Engine" hakkında bilgi sahibi olan mimarlar. "Mobilite hizmetlerine" yeni katılanların, ihtiyaçlarına bağlı olarak Son Mile Filo Çözümü ve/veya İsteğe Bağlı Yolculuklar ve Teslimatlar Çözümü hakkında bilgi sahibi olmalarını öneririz.
  • Google Cloud'a aşina olan mimarlar. Google Cloud'u kullanmaya yeni başlayanların Google Cloud'da akış verisi ardışık düzenleri derleme başlıklı makaleyi okuması önerilir.
  • Diğer ortamları veya yazılım yığınlarını hedefliyorsanız Fleet Engine'in entegrasyon noktalarını ve hâlâ geçerli olması gereken önemli noktaları anlamaya odaklanın.
  • Filolardan gelen etkinliklerin nasıl oluşturulup kullanılabileceğini öğrenmek isteyen reklamverenler.

Bu belgenin sonunda, akış sisteminin temel öğeleri ve dikkat edilmesi gereken noktaları hakkında temel bilgileri edinmiş ve Google Haritalar Platformu ile Google Cloud'da bulunan ve Filo Etkinlikleri Referans Çözümü'nü oluşturan yapı bloklarını öğrenmiş olacaksınız.

Filo Etkinlikleri Referans Çözümlerine Genel Bakış

Fleet Etkinlikleri Referans Çözümü, Mobilite müşterilerinin ve iş ortaklarının Fleet Engine ve Google Cloud bileşenleri üzerine önemli etkinlikler oluşturmasını sağlayan açık kaynaklı bir çözümdür. Günümüzde bu referans çözüm, Son Mil Filo Çözümü'nü kullanan müşterileri desteklemektedir. Ayrıca isteğe bağlı yolculuk ve teslimat hizmeti de bunu destekler.

Çözüm, görevler veya gezilerle ilişkili belirli verilerde yapılan değişikliklere göre etkinlikleri otomatik olarak oluşturur. Bu etkinlikleri paydaşlara aşağıdaki gibi bildirimler göndermek veya filonuz için başka eylemleri tetiklemek amacıyla kullanabilirsiniz.

  • Görevin tamamlanmasıyla ilgili tahmini varış süresi değişikliği
  • Göreve ulaşana kadar göreli tahmini varış süresi değişikliği
  • Görevin tamamlanması için kalan süre
  • Göreve varmaya kalan mesafe
  • Görev Sonucu durum değişikliği

Referans çözümünün her bir bileşeni, işletmenizin ihtiyaçlarına göre özelleştirilebilir.

Mantıksal Yapı Taşları

Şema : Aşağıdaki şemada, Filo Etkinlikleri referans çözümünü oluşturan üst düzey yapı taşları gösterilmektedir

Filo Etkinliklerine genel bakış ve mantıksal
yapı taşları

Referans çözüm aşağıdaki bileşenleri içerir:

  • Etkinlik Kaynağı: Orijinal etkinlik akışının kaynağı. Hem "Last Milil Filo Çözümü" hem de "İsteğe Bağlı Yolculuklar ve Teslimat Çözümü", Cloud Logging ile entegredir. Bu entegrasyon, Fleet Engine RPC çağrı kayıtlarının geliştiricilerin kullanımına sunulan etkinlik akışlarına dönüştürülmesine yardımcı olur. Bu, tüketilmesi gereken temel kaynaktır.
  • İşleme: Ham RPC çağrı günlükleri, bu blok içinde günlük etkinlikleri akışı üzerinde hesaplama yapan durum değişikliği etkinliklerine dönüştürülür. Bu bileşen, böyle bir değişikliği algılamak için bir durum deposuna ihtiyaç duyar. Böylece yeni gelen etkinlikler, değişikliğin algılanması için öncekilerle karşılaştırılabilir. Etkinlikler her zaman ilgili tüm bilgileri içermeyebilir. Böyle durumlarda bu blok, gerektiğinde arka uçlara yapılan çağrıları arayabilir.
    • Durum deposu: Bazı işleme çerçeveleri kendi başına kalıcı veri sağlar. Ancak böyle bir durum yoksa durumu kendiniz depolamak için K-V türü veri kalıcı hizmeti kullanmak uygun bir seçenektir.
  • Havuz (Özel Etkinlikler): Algılanan durum değişikliği, bundan yararlanabilecek tüm uygulama veya hizmetlere sunulmalıdır. Bu nedenle, bu özel etkinliği aşağı akış tüketimi için bir etkinlik yayınlama sisteminde yayınlamak doğal bir seçimdir.
  • Aşağı akış hizmeti: Oluşturulan etkinlikleri kullanan ve kullanım alanınıza özel işlemleri gerçekleştiren kod.

Hizmet seçimi

"Son Mile Filo Çözümü" veya "İsteğe Bağlı Yolculuk ve Teslimat Çözümü" (2023'ün 3. çeyreğinde kullanıma sunulacak) referans çözümünün uygulanması söz konusu olduğunda"Kaynak " ve "Havuz" için teknoloji seçimi oldukça basittir. Diğer yandan, "İşleme"de çok çeşitli seçenekler vardır. Referans çözüm aşağıdaki Google hizmetlerini seçti.

Şema : Aşağıdaki şemada, referans çözümünü uygulayacak Google Cloud hizmeti gösterilmektedir.

Filo Etkinlikleri referans çözümü
yapı taşları

Cloud Projesi düzeni

Varsayılan olarak çoklu projeli bir dağıtımı kullanmanızı öneririz. Böylece Google Haritalar Platformu ve Google Cloud tüketimlerinin sorunsuz bir şekilde ayrılabilmesi ve tercih ettiğiniz faturalandırma ayarına bağlı olması sağlanabilir.

Etkinlik Kaynağı

"Last Mile Fleet Solution" ve "İsteğe Bağlı Yolculuk ve Teslimat Çözümü" API isteklerini ve yanıt yüklerini Cloud Logging'e yazar. Cloud Logging, günlükleri seçtiğiniz bir veya daha fazla hizmete gönderir. Cloud Pub/Sub'a yönlendirme bu açıdan mükemmel bir seçenektir ve günlüklerin kod yazmadan etkinlik akışına dönüştürülmesini sağlar.

Sink

Google Cloud'da Cloud Pub/Sub tercih edilen, neredeyse gerçek zamanlı mesaj teslim sistemidir. Kaynaktaki etkinliklerin Pub/Sub'a iletilme şekli gibi, özel etkinlikler de aşağı akış kullanımı için Pub/Sub'da yayınlanır.

İşleniyor

Aşağıdaki bileşenler etkinlik işlemede rol oynar. Diğer yapı taşları gibi işleme bileşenleri de tamamen sunucusuzdur ve hem yukarı hem de aşağı ölçeklenir.

  • İlk sürüm için işlem platformu olarak Cloud Functions (*)
    • Sunucusuzdur, maliyetleri yönetmek için ölçeklendirme kontrolleriyle ölçeği artırır ve azaltır
    • Fleet Engine ile ilgili API'lerin uygulama kolaylığına katkıda bulunan istemci kitaplıklarının mevcut olması nedeniyle programlama dili olarak Java
  • Eyalet mağazası olarak Cloud Firestore
    • Sunucusuz Anahtar/Değer deposu
  • Yukarı akış ve aşağı akış bileşenleriyle entegrasyon noktası olarak Cloud Pub/Sub
    • Gevşek bağlantılı, neredeyse gerçek zamanlı entegrasyon

İşlevler varsayılan ayarlarla olduğu gibi kullanılabileceği gibi yeniden yapılandırılabilir. Yapılandırma parametreleri, dağıtım komut dosyaları aracılığıyla ayarlanır ve ilgili terraform modülü README'lerinde ayrıntılı olarak belgelenmiştir.

*Not: Bu referans çözümü, farklı gereksinimleri karşılamaya yardımcı olabilecek alternatif uygulamalar yayınlamayı planlamaktadır.

Dağıtım

Referans çözümü dağıtım sürecini tekrarlanabilir, özelleştirilebilir, kaynak kodu kontrol edilebilir ve güvenli hale getirmek için otomasyon aracı olarak Terraform seçilmiştir. Terraform, Google Cloud için zengin destek sunan ve yaygın olarak benimsenen bir IaC (Kod Olarak Altyapı) aracıdır.

Terraform modülleri

Yeniden kullanılabilir otomasyon blokları, tek bir büyük monolitik referans çözümü dağıtım modülü oluşturmak yerine bağımsız olarak kullanılabilen Terraform modülleri olarak uygulanır. Modüller, hızlı bir şekilde başlangıç yapabilmeniz için çoğunda varsayılan değerlere sahip olan çok çeşitli yapılandırılabilir değişkenler sunar. Ayrıca, ihtiyaçlarınıza ve tercihlerinize göre özelleştirme yapma esnekliğine de sahip olursunuz.

Referans çözüme dahil edilen modüller:

  • Fleet Engine günlük kaydı yapılandırması: Fleet Engine ile kullanım için Cloud Logging ile ilgili yapılandırmaları otomatikleştirin. Referans çözümünde, Fleet Engine ile ilgili günlükleri belirli bir Pub/Sub konusuna yönlendirmek için kullanılır.
  • Filo Etkinlikleri bulut işlevi dağıtımı: Örnek işlev kodu dağıtımını içerir ve aynı zamanda projeler arası güvenli entegrasyon için gerekli izin ayarlarının otomasyonunu yönetir.
  • Tüm referans çözümü dağıtımı: Önceki iki modülü çağırır ve çözümün tamamını sarmalar.

Güvenlik

IAM, en az ayrıcalık ilkelerinin yanı sıra Google Cloud'un Hizmet Hesabı kimliğe bürünme gibi güvenlik en iyi uygulamalarıyla birlikte uygulanır. Google Cloud'un güvenlik üzerinde daha fazla kontrol sahibi olmanızı sağlayan olanakları hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri inceleyin.

Sonraki işlemler

Artık Filo Etkinlikleri Referans Çözümü'ne erişmeye ve daha fazla keşfetmeye hazırsınız. Başlamak için GitHub'a gidin.

Ek

Gereksinimlerinizi toplama

Gereksinimlerinizi sürecin daha erken bir aşamasında toplamanızı öneririz.

Öncelikle, neden yakın gerçek zamanlı etkinliklerle ilgilendiğinize veya bu etkinlikleri neden kullanmanız gerektiğine dair ayrıntıları yakalayın. İhtiyaçlarınızı netleştirmenize yardımcı olacak bazı soruları burada bulabilirsiniz.

  • Etkinlik akışının faydalı olması için hangi bilgiler gereklidir?
    • Sonuç yalnızca Google hizmetlerinde yakalanan veya üretilen verilerden türetilebilir mi? Ya da entegre harici sistemlerle veri zenginleştirmesi gerekiyor mu? Varsa bu sistemler nelerdir ve hangi entegrasyon arayüzlerini sunarlar?
    • Bir işletme olarak ölçmek istediğiniz metrikler nelerdir? Nasıl tanımlanırlar?
    • Metrikleri etkinlikler genelinde hesaplamanız gerekiyorsa bunun için ne tür bir toplama gerekir? Mantıksal adımları yerleştirmeye çalışın. (ör. Kaynak kısıtlamaları altında performansı hesaplamak için en yoğun saatlerde TVS'yi/ATA'yı filonun bir alt bölümündeki SLO'larla karşılaştırın.)
  • Neden toplu işlem yerine etkinliğe dayalı bir modelle ilgileniyorsunuz? Bu, daha düşük gecikme (harekete geçme süresi) için mi yoksa serbest bağlantılı bir entegrasyon (çeviklik) için mi?
    • Düşük gecikme değeri için "düşük" değerini tanımlayın. Dakikalar mı? Saniyeler mi? Bir saniyenin altında mı? Peki, hangi gecikme?
  • Daha önce bir teknoloji yığınına ve ekip olarak bununla ilişkili becerilere yatırım yaptınız mı? Varsa nedir ve hangi entegrasyon noktalarını sağlar?
    • Mevcut sistemlerinizin, filonuzdan gelen etkinlikleri işlerken karşılayamayacağı veya zorlayabileceği herhangi bir gereksinim var mı?

Tasarım ilkeleri

Takip etmeniz gereken bir düşünce süreci olması her zaman işe yarar. Bu, özellikle aralarından seçim yapabileceğiniz çok sayıda seçeneğiniz olduğunda tutarlı tasarım kararları almanıza yardımcı olur.

  • Varsayılan olarak daha basit seçeneklere geçin.
  • Varsayılan değer için daha kısa süre kullan. Daha az kod, daha düşük öğrenme eğrisi.
  • Gecikme ve performans için maksimum optimizasyona değil, belirlediğiniz çıtaya ulaşmayı hedefleyin. Ayrıca, genellikle karmaşıklığı artırdığı için aşırı optimizasyondan da kaçının.
  • Aynı durum maliyet için de geçerlidir. Maliyeti makul tutun. Henüz yüksek değerli ama nispeten daha pahalı hizmetleri kullanmayı taahhüt edebileceğiniz durumda olmayabilirsiniz.
  • Deneysel aşamada ölçeği azaltmak, ölçeği azaltmak kadar önemli olabilir. Hiçbir şey yapmazsanız harcama yapmak zorunda kalmamak için sınır dahilinde ölçeği artırma ve aynı zamanda azaltma (ideal olarak sıfıra) esnekliği sunan bir platform düşünün. Her zaman açık altyapıyla yüksek performans, yolculuğun ilerleyen aşamalarında, ihtiyaçlarından emin olduktan sonra göz önünde bulundurulabilir.
  • Nerelerde daha fazla çalışabileceğinizi daha sonra belirleyebilmek için gözlem ve ölçüm yapın.
  • Hizmetleri serbest bağlantılı tutun. Böylece daha sonra parçalar arası değiştirmeniz kolaylaşır.
  • Son olarak, güvenlik gevşek olmamalıdır. Herkese açık bulut ortamında çalışan bir hizmet olarak, sisteme güvenli olmayan kapılar açılamaz.

Yayın kavramları

Etkinlik tabanlı veya akış konusunda nispeten yeniyseniz bilmeniz gereken temel kavramlar vardır. Bu kavramlardan bazıları toplu işlemden çok farklı olabilir.

  • Ölçek : İşlenecek veri miktarı konusunda genellikle fikir sahibi olduğunuz toplu işlemin aksine, akışta yapamazsınız. Bir şehirdeki trafik sıkışıklığı, belirli bir bölgeden aniden çok sayıda olayın oluşmasına neden olabilir ve bu trafiği yine de işleyebilmeniz gerekir.
  • Aralıklama : Etkinlikleri tek tek işlemek yerine genellikle etkinlikleri bir zaman çizelgesinde hesaplama birimi olarak daha küçük "pencereler" halinde gruplandırmak istersiniz. "Sabit pencereler (ör. her takvim günü)", "kayan pencereler (son 5 dakika)", "oturum aralıkları (bu gezi sırasında)" gibi çeşitli aralık stratejileri vardır. Bunlardan birini seçmeniz gerekir. Süre ne kadar uzun olursa sonuç oluşturmadaki gecikmeler de o kadar uzun olur. İhtiyaçlarınızı karşılayan doğru modeli ve yapılandırmayı seçin.
  • Tetikleyici : Nispeten daha uzun zaman aralıklarına sahip olmak dışında bir seçeneğiniz olmadığı durumlar vardır. Yine de etkinlikler oluşturmak için zaman aralığının bitmesini beklemek istemezsiniz, bunun yerine arada ara sonuçlar elde edersiniz. Bu kavram, önce hızlı sonuç döndürme ve daha sonra bunları düzeltmeye değer olduğu kullanım alanları için uygulanabilir. Bir yayının %25, %50 ve% 75 oranında tamamlandığı ara bir durum aldığınızı düşünün.
  • Sıralama : Etkinlikler sisteme oluşturuldukları sırayla ulaşmayabilir. Özellikle mobil ağlar üzerinden iletişimin, gecikmeye ve karmaşık yönlendirme yollarına yol açtığı kullanım durumları için. "Etkinlik zamanı" (etkinliğin gerçekten gerçekleştiği zaman) ile "işlem süresi" (etkinliğin sisteme ulaştığı zaman) arasındaki farkın farkında olmalı ve etkinlikleri buna göre yönetmelisiniz. Genel olarak, etkinlikleri "etkinlik zamanına" göre işlemek istersiniz.
  • İleti teslimi - En az bir kez ve Tam olarak bir kez: Farklı etkinlik platformları bunlar için farklı destek sunar. Kullanım alanınıza bağlı olarak yeniden deneme veya tekilleştirme stratejilerini değerlendirmeniz gerekir.
  • Eksiksiz olma : Sıralama değişikliği gibi, mesajların kaybolma ihtimali de vardır. Bu durum, cihazın pil ömrü, telefonun yanlışlıkla hasar görmesi, tüneldayken bağlantının kesilmesi veya kabul edilebilir bir pencerenin dışında alınan bir mesaj nedeniyle uygulamanın ve cihazın kapanması nedeniyle meydana gelebilir. Eksiklik sonuçlarınızı nasıl etkiler?

Bu, kapsamlı bir liste değildir, bir giriştir. Aşağıda, bunların her birini daha iyi kavramanıza yardımcı olabilecek, kesinlikle önerilen bazı okumaları bulabilirsiniz.

Katılımcılar

Bu doküman Google tarafından saklanmaktadır. Mesajı ilk olarak aşağıdaki katkıda bulunanlar yazmış.

Baş yazarlar:

  • Mary Pishny | Ürün Yöneticisi, Google Haritalar Platformu
  • Ethel Bao| Yazılım Mühendisi, Google Haritalar Platformu
  • Mohanad Almiski | Yazılım Mühendisi, Google Haritalar Platformu
  • Naoya Moritani | Çözüm Mühendisi, Google Haritalar Platformu