第10章 地理空間クエリ 地理空間クエリ
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
AATDのユーザは、ピザショップのアプリで注文のステータスが公開されることに非常に満足していた。 注文が進んでいることを確認でき、いつ配達されそうかもある程度わかるようになった。 しかし、リアルタイムデータを味わったユーザは、もっと欲しいと思っている!
カスタマーサクセスチームは、、ピザショップのアプリにAATDの厨房を出た注文がどこにあるのかを示すデリバリートラッカーを搭載してほしいという要望を複数受けている。 さらに、AATDのオペレーションチームは、デリバリー車の位置を特定できるようにしたいと考えている。 交通問題のために配達が遅れたことが複数回あり、どの車両が影響を受けているかを特定して、顧客に遅延の可能性を通知できるようにしたいと考えている。
この機能を追加するには、オーダーサービスを更新して、新しいdeliveryStatuses ストリームにロケーションをパブリッシュする必要がある。 このストリームは、Apache Pinotによって消費される。 /orders/<order_id>また、配送の緯度と経度の座標をorders ストリームに含めて、Apache Pinot の等価性テーブルにそれらの値のカラムを追加する。
交通問題機能は、deliveryStatuses ストリームも使用するが、影響を受ける車両を特定するための新しいエンドポイントを追加する。 /orders/delayed/<area>このエンドポイントはダッシュボードの新しいセクションで使われる。
図10-1に新しいインフラを示す。
図10-1. 配信ステータスのアーキテクチャ
配送状況
GitHubリポジトリには、配送状況が含まれている。これは、delivery-serviceディレクトリで発見できる:
ls-lhdelivery-service|awk'{printf "%-4s %-2s %-2s %-5s %s\n", $5,$6,$7,$8,$9}'
このディレクトリには、例10-1に示すように、3つのファイルが含まれている。
例 10-1. デリバリーサービス・ディレクトリのファイルリスト
307B 2 Nov 15:23 Dockerfile 5.0K 2 Nov 16:19 app.py 148B 2 Nov 15:55 requirements.txt
app.pyファイルには、orders ストリームからメッセージを消費し、Faustフレームワークを使用してdeliveryStatuses トピックに公開される配信ステータスを生成するアプリケーションが含まれている。 FaustはRobinhoodのエンジニアリングチームによって書かれたストリーム処理ライブラリで、リアルタイムデータパイプラインの一部として毎日何十億ものイベントを処理するために使用されている。 Kafka StreamsのアイデアをPythonに移植し、ストリーム処理とイベント処理の両方を提供する。
IDが5e81f913-a7c9-48a4-afdc-51e08ee465e0 の注文の配送ステータスを表示する以下を実行することで、 ...