iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
AI & Data

Google Assistant 開發與語音使用者介面設計系列 第 28

[Day28] 透過GCP實作(4/4):透過Scheduler與Pub/Sub使抓取資料自動化

基於昨日文章的說明,
我們已經建立了一個資料庫協助我們暫存資料資料
但缺乏驅動負責拉取與上傳資料的Function之機制,
在本日的文章,會簡單講述你可以如何借助GCP的服務來完成這個需求

架構圖

pic-1

Cloud Pub/Sub


這是一項Google的資訊傳遞服務,
我們可以透過它,向負責抓取資料並上傳資料到資料庫的Cloud Function傳遞資訊並為我們工作!
img-1

運作方式

  1. Publisher 首先在 Cloud Pub/Sub 建立傳訊息用的 Topic,然後開始向該 Topic 傳送訊息
  2. 當訊息被接收前或尚未收到 Acknowledge(Ack) 時,會被保存起來並等待在次傳送出去
  3. Subscriber 向服務註冊訂閱(Subscription)後,所有發送到 Topic 的訊息會轉發給該 Topic 下的所有 Subscriber
  4. Subscriber 收到訊息後會回傳 Ack 訊息給 Cloud Pub/Sub,以確認訊息已經收到
  5. 當 Ack 被 Cloud Pub/Sub 收到後,將該訊息自 Message Storage 刪除

Cloud Scheduler

img-2
這是一項Google推出的全代管的企業級 Cron 工作排程器。
我們可以透過它替我們的Function執行進行排程,
藉由這項操作,Function將會在我們指定的時間點被喚醒並執行我們事先撰寫好的程式碼!

Cloud Pub/Sub 與 Cloud Scheduler 如何被運用在我們的專案中?

從最上方的架構圖中,我們可以略知一二。
為了達成自動定時觸發Function的效果,我們需要:

  1. 在Pub/Sub建立一個主題
  2. 在目標的Cloud Function訂閱甫建立的主題(Topic)
  3. 藉由Cloud Scheduler定時向Pub/Sub觸發這個主題(Topic)
  4. Function接收到Pub/Sub傳遞過來的訊息,開始執行事先撰寫好的程式碼

詳細教學可以參閱下方的官方文件:

例如

使用來自環保署提供之OPEN API獲取空氣品質資訊,
並篩選所需資料備份到Firebase RealTime Database
以索引空氣品質資訊為主要功能的Action

下一步...

現在,Cloud Function會依據你設定的時間進行資料拉取及上傳至資料庫的動作了
到這裡,GCP的架構設計到此告一段落!
接下來將會提供一點建議,
進而精進及擴大你的Action之使用者範圍!

參考資料


上一篇
[Day27] 透過GCP實作(3/4):建立RealTime Database即時讀入/存取資料
下一篇
[Day29] 幾個精進Action的建議
系列文
Google Assistant 開發與語音使用者介面設計30

尚未有邦友留言

立即登入留言