Fleet Engine gerçek zamanlı etkinlikleri

Sahada çalışan filodan gelen neredeyse anlık sinyaller, işletmeler için çeşitli açılardan faydalıdır. Örneğin, işletmeler bu özellikleri kullanarak:

  • Filolarının performansını izleyip olası sorunları erkenden tespit etme
  • Doğru TVS ve takip bilgileri sağlayarak müşteri hizmetlerini iyileştirme
  • Verimsizlikleri tespit edip gidererek maliyetleri azaltma
  • Sürücü davranışlarını izleyip olası tehlikeleri tespit ederek güvenliği artırma
  • Verimliliği artırmak için sürücü rotalarını ve programlarını optimize etme
  • Araç konumunu ve hizmet saatlerini takip ederek yönetmeliklere uyun.

Bu belgede, geliştiricilerin Google Haritalar Platformu'nun "Mobilite hizmetleri"nden ("Son Aşama Filo Çözümü" (LMFS) veya "İsteğe Bağlı Yolculuk ve Teslimat Çözümü" (ODRD)) gelen sinyalleri nasıl uygulanabilir özel etkinliklere dönüştürebileceği gösterilmektedir. GitHub'da bulunan Filo Etkinlikleri Referans Çözümü'nün temel kavramları ve tasarım kararları da ele alınmaktadır.

Bu belge şu kişiler için geçerlidir:

  • Google Haritalar Platformu'nun "Mobilite hizmetleri" ve temel bileşenlerinden biri olan "Filo Altyapısı" hakkında bilgi sahibi olan mimarlar. "Mobilite hizmetleri"ni yeni kullanmaya başlayanların, ihtiyaçlarına bağlı olarak Son Aşama Filo Çözümü ve/veya İsteğe Bağlı Yolculuk ve Teslimat Çözümü hakkında bilgi edinmesini ö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 oluşturma başlıklı makaleyi okuması önerilir.
  • Başka ortamları veya yazılım yığınlarını hedefliyorsanız Fleet Engine'in entegrasyon noktalarını ve önemli noktalarını anlamaya odaklanın. Bu noktalar yine de geçerli olacaktır.
  • Filolardan etkinliklerin nasıl oluşturulabileceğini ve kullanılabileceğini keşfetmekle ilgilenenler.

Bu dokümanın sonunda, bir akış sisteminin temel unsurları ve dikkat edilmesi gereken noktalar hakkında temel bilgilere sahip olacaksınız. Ayrıca, Filo Etkinlikleri Referans Çözümü'nü oluşturan Google Haritalar Platformu ve Google Cloud'un yapı taşları hakkında da bilgi edineceksiniz.

Filo Etkinlikleri Referans Çözümüne Genel Bakış

Filo Etkinlikleri Referans Çözümü, mobilite müşterilerinin ve iş ortaklarının Fleet Engine ve Google Cloud bileşenleri üzerinde önemli etkinlikler oluşturmasına olanak tanıyan açık kaynaklı bir çözümdür. Referans çözüm, şu anda Last Mile Fleet Solution'ı kullanan müşterileri desteklemektedir. İlerleyen zamanlarda, On-demand Rides and Delivery desteği de eklenecektir.

Çözüm, görevler veya gezilerle ilişkili belirli verilerdeki değişikliklere göre otomatik olarak etkinlikler oluşturur. Bu etkinlikleri kullanarak paydaşlara aşağıdaki gibi bildirimler gönderebilir veya filonuz için başka işlemleri tetikleyebilirsiniz.

  • Görev varış yeri için TVS değişikliği
  • Görev varış yeri için göreli TVS değişikliği
  • Görev varışına kalan süre
  • Görev varış noktasına kalan mesafe
  • TaskOutcome durum değişikliği

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

Mantıksal yapı taşları

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

Filo Etkinlikleri'ne 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 geldiği yer. Hem "Son Aşama Filo Çözümü" hem de "İsteğe Bağlı Sürüş ve Teslimat Çözümü", Fleet Engine RPC çağrı günlüklerini geliştiricilerin kullanabileceği etkinlik akışlarına dönüştürmeye yardımcı olan Cloud Logging ile entegrasyona sahiptir. Bu, kullanabileceğiniz temel kaynaktır.
  • İşleme: Ham RPC çağrı günlükleri, günlük etkinlikleri akışı üzerinden hesaplama yapan bu blokta durum değişikliği etkinliklerine dönüştürülür. Bu tür değişiklikleri algılamak için bu bileşenin bir durum deposuna ihtiyacı vardır. Böylece, yeni gelen etkinlikler önceki etkinliklerle karşılaştırılarak değişiklikler algılanabilir. Etkinlikler her zaman ilgilendiğiniz tüm bilgileri içermeyebilir. Bu gibi durumlarda bu blok, gerektiğinde arka uçlara arama yapabilir.
    • Durum deposu: Bazı işleme çerçeveleri, kendi başına kalıcı olan ara veriler sağlar. Ancak durumları kendiniz depolayacaksanız her araç ve etkinlik türü için benzersiz olmaları gerektiğinden anahtar/değer türü bir veri kalıcılığı hizmeti uygun olacaktır.
  • Alıcı (Ö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.
  • Alt hizmet: Oluşturulan etkinlikleri kullanan ve kullanım alanınıza özgü harekete geçen kod.

Hizmet seçimi

"Son Aşama Filo Çözümü" veya "İsteğe Bağlı Yolculuk ve Teslimat Çözümü" (2023'ün 3. çeyreğinin sonlarında kullanıma sunulacak) için referans çözümü uygularken"Kaynak " ve "Alıcı" için teknoloji seçimi basittir. "İşleme" ise çok çeşitli seçeneklere sahiptir. Referans çözüm aşağıdaki Google hizmetlerini seçti.

Diyagram : Aşağıdaki diyagramda, referans çözümü uygulamak için kullanılan Google Cloud hizmeti gösterilmektedir.

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

Cloud projesi düzeni

Varsayılan olarak çok projeli bir dağıtım kullanmanızı öneririz. Böylece Google Haritalar Platformu ve Google Cloud kullanımları net bir şekilde ayrılabilir ve tercih ettiğiniz faturalandırma düzenlemesine bağlanabilir.

Etkinlik kaynağı

"Last Mile Fleet Solution" ve "On-demand Rides and Deliveries Solution", API isteği 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 durumda mükemmel bir seçimdir ve günlükleri kodlama yapmadan bir etkinlik akışına dönüştürmenize olanak tanır.

Sink

Google Cloud'da Cloud Pub/Sub, neredeyse gerçek zamanlı mesaj teslimi için tercih edilen sistemdir. Kaynaktaki etkinliklerin Pub/Sub'a iletilmesi gibi, özel etkinlikler de daha sonra kullanılmak üzere Pub/Sub'da yayınlanır.

İşleniyor

Etkinlik işleme sürecinde aşağıdaki bileşenler rol oynar. Diğer yapı taşları gibi işleme bileşenleri de tamamen sunucusuzdur ve hem yukarı hem de aşağı doğru iyi ölçeklenir.

  • İlk sürüm için bilgi işlem platformu olarak Cloud Functions
    • Sunucusuzdur, maliyetleri yönetmek için ölçeklendirme kontrolleriyle ölçeği artırıp azaltır.
    • Fleet Engine ile ilgili API'ler için istemci kitaplıklarının kullanılabilirliği göz önüne alındığında, uygulama kolaylığına katkıda bulunan programlama dili olarak Java
  • Durum deposu olarak Cloud Firestore
    • Sunucusuz anahtar/değer deposu
  • Yukarı ve aşağı akış bileşenleriyle entegrasyon noktası olarak Cloud Pub/Sub
    • Serbest bağlantılı, neredeyse gerçek zamanlı entegrasyon

İşlevler, varsayılan ayarlarla olduğu gibi kullanılabilir ancak 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 dosyalarında ayrıntılı olarak açıklanır.

*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 kapsamlı destek sunan ve yaygın olarak kullanılan bir IaC (kod olarak altyapı) aracıdır.

Terraform modülleri

Tek bir büyük monolitik referans çözüm dağıtım modülü oluşturmak yerine, yeniden kullanılabilir otomasyon blokları bağımsız olarak kullanılabilen Terraform modülleri olarak uygulanır. Modüller, yapılandırılabilir çok çeşitli değişkenler sunar. Bu değişkenlerin çoğu, hızlı bir şekilde başlayabilmeniz için varsayılan değerlere sahiptir ancak ihtiyaçlarınıza ve tercihlerinize göre özelleştirme esnekliği de sunar.

Referans çözümde yer alan modüller:

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

Güvenlik

IAM, Google Cloud'un hizmet hesabı kimliğine bürünme gibi güvenlikle ilgili en iyi uygulamalarıyla birlikte en az ayrıcalık ilkelerini uygulamak için kullanılır. Google Cloud'un güvenlik üzerinde daha fazla kontrol sahibi olmanızı sağlamak için sunduğu olanakları daha iyi anlamak için aşağıdaki makalelere bakın.

Sonraki işlemler

Artık Filo Etkinlikleri Referans Çözümü'ne erişmeye ve bu çözümü daha ayrıntılı incelemeye hazırsınız. Başlamak için GitHub'a gidin.

Ek

Gereksinimlerinizi toplama

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

Öncelikle, neden anlık etkinlikleri kullanmak istediğinizi veya kullanmanız gerektiğini açıklayan ayrıntıları kaydedin. İhtiyaçlarınızı netleştirmenize yardımcı olacak bazı soruları aşağıda bulabilirsiniz.

  • Bir etkinlik akışının faydalı olması için hangi bilgiler gereklidir?
    • Sonuç, yalnızca Google hizmetlerinde yakalanan veya üretilen verilerden elde edilebilir mi? Yoksa entegre harici sistemlerle veri zenginleştirme gerekli mi? Öyleyse bu sistemler nelerdir ve hangi entegrasyon arayüzlerini sunarlar?
    • İşletme olarak ölçmek istediğiniz metrikler nelerdir? Nasıl tanımlanırlar?
    • Etkinlikler genelinde metrikleri hesaplamanız gerekiyorsa ne tür bir toplama işlemi gerekir? Mantıksal adımları belirlemeye çalışın. (ör. Kaynak kısıtlamaları altındaki performansı hesaplamak için yoğun saatlerde filonun bir alt kümesinde TVS/GVS'yi HZD'lerle karşılaştırın.)
  • Neden toplu model yerine etkinliğe dayalı bir modelle ilgileniyorsunuz? Bu, daha düşük gecikme süresi (işlem süresi) için mi yoksa serbest bağlantılı bir entegrasyon (çeviklik) için mi?
    • Düşük gecikme için "low" değerini tanımlayın. Dakika mı? Saniye mi? Saniyenin altında mı? Gecikme süresi ne kadar?
  • Ekip olarak bir teknoloji yığınına ve ilgili becerilere yatırım yaptınız mı? Varsa bu sistem nedir ve hangi entegrasyon noktalarını sağlar?
    • Mevcut sistemlerinizin karşılayamadığı veya filonuzdan gelen etkinlikleri işlerken zorlanabileceği gereksinimler var mı?

Tasarım ilkeleri

İzlenecek bir düşünce sürecine sahip olmak her zaman faydalıdır. Bu, özellikle seçebileceğiniz çeşitli seçenekleriniz olduğunda tutarlı tasarım kararları almanıza yardımcı olur.

  • Daha basit seçenekleri varsayılan olarak kullanın.
  • Varsayılan olarak daha kısa sürede değer elde etme. Daha az kod, daha kolay öğrenme süreci.
  • Gecikme ve performans için maksimum optimizasyonu değil, belirlediğiniz çıtayı karşılamayı hedefleyin. Ayrıca, genellikle karmaşıklığa yol açtığı için aşırı optimizasyondan da kaçının.
  • Aynı durum maliyet için de geçerlidir. Maliyetleri makul düzeyde tutun. Yüksek değerli ancak nispeten daha pahalı hizmetleri kullanmayı taahhüt edebileceğiniz bir durumda olmayabilirsiniz.
  • Deneysel aşamada, ölçeği azaltmak ölçeği artırmak kadar önemli olabilir. Üst sınırla ölçeği artırma ve ölçeği azaltma (ideal olarak sıfıra) esnekliği sunan bir platform seçin. Böylece, işlem yapmadığınızda harcama yapmazsınız. Her zaman açık altyapıyla yüksek performans, yolculuğun ilerleyen aşamalarında, ihtiyaçlarından emin olduğunuzda değerlendirilebilir.
  • Daha sonra üzerinde çalışmanız gereken alanları belirleyebilmek için gözlemleyin ve ölçün.
  • Hizmetleri serbest bağlantılı tutun. Bu sayede daha sonra parçaları tek tek değiştirmek daha kolay olur.
  • Son olarak, güvenlikten ödün verilmemelidir. Herkese açık bir bulut ortamında çalışan bir hizmet olarak sistemde güvenli olmayan hiçbir kapı olamaz.

Akış kavramları

Etkinlik tabanlı veya akış tabanlı işlemeye yeni başladıysanız bilmeniz gereken önemli kavramlar vardır. Bunlardan bazıları toplu işlemeden çok farklı olabilir.

  • Ölçek : İşlenecek veri miktarını genellikle iyi bildiğiniz toplu işlemenin aksine, akışta bunu bilemezsiniz. Bir şehirdeki trafik sıkışıklığı, belirli bir bölgeden aniden çok sayıda etkinlik oluşturabilir ve bu etkinlikleri işleyebilmeniz gerekir.
  • Pencereler : Etkinlikleri tek tek işlemek yerine, genellikle bir zaman çizelgesi üzerindeki etkinlikleri hesaplama birimi olarak daha küçük "pencereler" halinde gruplandırmak istersiniz. "Sabit pencereler (ör. her takvim günü)", "kayan pencereler (son 5 dakika)", "oturum pencereleri (bu gezi sırasında)" gibi çeşitli pencereleme stratejileri arasından seçim yapmanız gerekir. Aralık ne kadar uzun olursa sonuçların üretilmesindeki gecikmeler de o kadar uzun olur. İhtiyaçlarınıza uygun modeli ve yapılandırmayı seçin.
  • Tetikleme : Göreceli olarak daha uzun aralıklar kullanmaktan başka seçeneğinizin olmadığı durumlar vardır. Yine de etkinlik üretmek için pencerenin en sonuna kadar beklemek istemezsiniz. Bunun yerine, arada ara sonuçlar yayınlamak istersiniz. Bu kavram, önce hızlı sonuçlar döndürmenin ve daha sonra bunları düzeltmenin değerli olduğu kullanım alanları için uygulanabilir. Bir teslimatın %25, %50, %75 tamamlanma oranında ara durum yayınladığınızı düşünün.
  • Sıralama : Etkinliklerin sisteme mutlaka oluşturuldukları sırayla ulaşması gerekmez. Özellikle gecikmeye ve karmaşık yönlendirme yollarına neden olan mobil ağlar üzerinden iletişimin dahil olduğu kullanım alanları için. "Etkinlik zamanı" (etkinliğin gerçekleştiği zaman) ile "işlem zamanı" (etkinliğin sisteme ulaştığı zaman) arasındaki farkı bilmeniz ve etkinlikleri buna göre işlemeniz gerekir. 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ı, bu konuda farklı destek sunar. Kullanım alanınıza bağlı olarak yeniden deneme veya tekilleştirme stratejilerini göz önünde bulundurmanız gerekir.
  • Eksiksizlik : Sıralamanın değişmesi gibi, mesajların kaybolma olasılığı da vardır. Bu durum, cihazın pil ömrü nedeniyle uygulamanın ve cihazın kapanması, telefona istemeden zarar verilmesi, tüneldeyken bağlantının kesilmesi veya kabul edilebilir bir zaman aralığının dışında alınan bir mesajdan kaynaklanabilir. Eksiklik, sonuçlarınızı nasıl etkiler?

Bu liste tam kapsamlı değildir, yalnızca bir giriş niteliğindedir. Her birini daha iyi anlamanıza yardımcı olabilecek, okumanızı önerdiğimiz bazı kaynaklar şunlardır:

Katkıda bulunanlar

Bu doküman Google tarafından yönetilir. Bu makale, aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazarlar:

  • Mary Pishny | Ürün Müdürü, 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