實作 Google Cloud Pub/Sub Push Subscription

學習如何透過 Golang 來撰寫 Google Cloud Pub/Sub Subscriber

ta-ching chen

3 minute read

Prerequisite

Subscriber

在 Cloud Pub/Sub 中,訊息的傳遞分成 Pull SubscriptionPush Subscription 兩種,本篇主要說明 Push Subscription 模式,以及適用的場景。

實作 Google Cloud Pub/Sub Publisher

學習如何透過 Golang 來撰寫 Google Cloud Pub/Sub Publisher

ta-ching chen

2 minute read

事前準備

實作上手

下載範例程式

接下來就開始進入動手做的部分吧,Repo 內已經包含寫好的範例讓大家能快速上手。

# Clone repo and restore dependencies
$ git clone https://github.com/life1347/go-google-cloud-pubsub-exmaple.git \
  $GOPATH/src/tachingchen.com/googlePubSub

godep 復原相依套件

$ go get -u github.com/tools/godep
$ cd $GOPATH/src/tachingchen.com/googlePubSub && godep restore

初探 Google Cloud Pub/Sub

Google Cloud Pub/Sub 基本介紹

ta-ching chen

1 minute read

介紹

Cloud Pub/Sub 為 Google 推出的 message service,主要用途是讓每個獨立的應用(Application)間能透過 Publish-Subscribe 的模式來進行訊息交換與溝通,一般而言利用 message service 當作中介層(Middleware)來傳遞訊息,有著以下幾項優/缺點:

優點

  • 透過非同步的訊息傳遞,降低 Publisher、Subscriber 間的耦合度。意即彼此間無需知道對方位置,亦不會任意一方出現問題而導致連鎖反應。
  • 當作訊息緩衝區(Buffer),避免後端消化速度不夠快而無法接收新進的訊息請求。
  • 根據不同用途來訂閱/散佈訊息。

缺點

  • 由於是非同步處理,因此訊息的即時性/順序性/重覆性無法受到保證。
  • 需要熟悉 message service 服務的遞送流程,避免異常或訊息無法正確傳送。

就先前經驗來說,一個高可用/彈性的 message service,通常會考慮以下幾點:

  • 訊息傳遞效率
  • 可擴展性(Scalability)、可靠性(Reliability)、可用性(Availability)

打造最小 Go Docker Image

簡短幾步驟輕鬆打造最小 Docker Image

ta-ching chen

1 minute read

Hello World

先寫個簡單不斷印出 Hello World 的小程式

// main.go
package main

import (
    "fmt"
    "time"
)

func main() {
    for {
        fmt.Println("Hello World!")
        time.Sleep(1 * time.Second)
    }
}