續上篇,Day 16 讀 Go Concurrency Patterns - Rob Pike III
在實際的狀況中,有可能發出 query 剛好就是傳送到比較慢的 server,但是我們又不想等太久,而且也不想丟掉搜尋的結果,解決辦法其中之一就是一次搜尋多個 replica server ,拿到最快回傳的那一個吧。
這裡就識做了一個 First function,拿取搜尋多個 replica 結果最快的一個
注意: First 會造成 goroutine leak,之後再來看怎麼改
接下來 google3.0 就完成啦,和 2.1 版的程式架構幾乎一樣,只是多了 First 的做法
Rob Pike 再次強調,我們沒使用傳統的 concunnency 工具就達成啦,透過 goroutine 和 channel 就能達到這樣的設計,程式架構也相當簡單。
做完這個 Google search 的總結,本來從很慢很脆弱的程式,最後變的快速且 robust 了