進到了最後一天,剛好『雙11』結束沒多久,在『雙11』當天,台灣兩大購物平台紛紛掛點。那剛好敝公司也有類似的經驗,那今天就來談談,我如何重構敝公司的系統優化,把原本的 php 重構成 golang,改善瞬間流量的問題。
我相信在很多系統上,很多效能瓶頸會在 database ,尤其是一些帳戶系統,如果無法解決扣款時 ACID 的相關議題,那壓力其實最終都會壓在 database 的單點上,在敝公司設計這相關系統時,我使用了另一個方式來做設計。當然下面介紹的東西,要用其他語言實現也不是不行,不過敝公司是選擇使用 golang 實現就是了。
在這個 k8s 當道的時代,任何東西都要 container 化,當然我們也稍微介紹一下,如果用 Docker 編譯 golang image 。
今天來介紹一個比較特別的應用,就是如何在 golang 使用 lua ,這種的應用場景通常會在一個固定流程裡面,但裡面有不同的商業邏輯,用 OOP(Object-oriented programming) 的 pattern 來解釋就是所謂的工廠模式,裡面產生的東西會有不同的邏輯,那些邏輯很適合用 lua 去寫。
在前面有介紹過了 golang 的重點之一 goroutine ,golang 的設計讓 concurrency 非常容易,但是大家有沒有想過,goroutine 也不是什麼黑科技,最終電腦還是有所謂的 CPU & MEM 上限,所以也就意味著 goroutine 不能無窮無境的開,那今天就來討論 Concurrency Pattern,到底該如何設計。
今天要進到比較理論的章節,也是比較難解說的部分,如果有什麼疑問或寫錯的地方,歡迎留言指教我。
今天要來介紹,如何用 golang 做一個 webosocket server 的相關應用。我個人沒有使用 golang 原生的 webscoket,而是用我前面一直有介紹到的 gorilla 團隊做的 gorilla/websocket, 他一樣有符合我的原則,而且沒有太多的依賴,非常適合拿來當個應用的基礎 package 。