今天早上收到這封信,腦中浮現出了幾個字
原本是一個Google 佛心來著的免費加值服務,現在卻變成要收費了,所以現在得好好算一下是不是要繼續使用這個服務。
Google Cloud Load Balancing user-define request header
user-define request header 有什麼用途嗎?主要就是讓Load balanacer 後面的應用程式可以透過google 預先定義好的 user-define header 取得一些有價值的資訊,其中最實用的用途就是可以透過 google 強大的資訊力,可以從 ip 得到 request 詳細的地理資訊位置。取得地理資訊
只要再Load balancer 的設定頁面加上 google 定義好的header
就可以讓處於load balancer 後端的應用程式透過 http request header 得到相關資訊,以go 的程式為例:
func parserGeo(req *http.Request) (Geo, GLBInfo) { ip := parserIp(req.Header.Get("X-Forwarded-For")) geoString := req.Header.Get("X-Client-Geo-Location") rttString := req.Header.Get("X-Client-RTT") var glbInfo GLBInfo if rttString != "" { rtt, _ := strconv.ParseInt(rttString, 10, 64) glbInfo = GLBInfo{ RTT: rtt, } } var geo Geo if geoString != "" { data := strings.Split(geoString, ",") geo = Geo{ Ip: ip, Country: data[0], City: data[1], Subdivision: data[2], } } return geo, glbInfo }
如何衡量價值
新的收費標準是每一百萬次 request 收費 0.75 USD,對於每天至少是千萬甚至億等級的request 量來說,一天會增加75 USD,一個月就 2250 USD....囧rz...
對比的收費,可以參考 maxmind 的地理資料庫 (要自行安裝在每個應用程式前的 nginx )
結論
如果你需要知道ip 地理位置的服務 request 量沒有到每日千萬等級,然後你又需要精確到城市等級的資料,也許可以繼續考慮使用 Google 的這個服務,但是如果你的服務到千萬甚至億的等級,也許還是得考慮使用買地理資料庫另外解決這個問題。
附註: 如果你有使用到 Google Cloud Armor Policy 則不會針對這個 user define header 另外收錢,因為他有另外的價錢~XD
沒有留言:
張貼留言