歡迎光臨
每天分享高質量文章

一週 Go World 新鮮事-2019W11

01

百萬 Go TCP 連線的思考3: 正常連線下的吞吐率和延遲

這G一篇文章介紹了I/O密集型伺服器和計算密集型的伺服器的兩種場景,對多epoller伺服器和goroutine-per-connection伺服器兩種伺服器進行測試,連線數分別是5000、2000、1000、500、200和100。

前兩篇的是有巨量連線的情況下伺服器的效能,這類伺服器可能應用於訊息推送、IOT、頁遊等場景,追求的是大量連線,併發量相對不大的場景。還有一類場景是伺服器的連線數不多,幾十幾百,最多幾千的TCP連線,比如公司內的服務之間的呼叫等,這類伺服器在不同的實現下的效能是怎樣的?

原文連結:

https://colobu.com/2019/02/28/1m-go-tcp-connection-3/

原文二維碼:

02

從技術演變的角度看網際網路後臺架構

 

這是去年在部門內部做的一個面向後臺開發新同學的課程,因為其他BG一些同學要求分享,所以發一下。

其實內容都是些常見開源元件的high level描述,比如flask, express框架,中介軟體的演化,micro service的概念,一些對nosql/column based db的概念介紹,docker的一些簡單概念等等。從單個概念來說,這隻是一些科普。

但是為什麼當時要開這門課呢?重點是我發現很多新入職的後臺開發同學並不太清楚自己做的東西在現代網際網路整體架構中處於一個什麼樣的角色,而在IEG內部則因為遊戲開發和網際網路開發的一些歷史性差異,有些概念並不清晰。

拿中介軟體來說,很多web application不用啥中介軟體一樣可以跑很好,那麼是不是都要上redis?到底解決什麼問題?中介軟體又存在什麼問題?中臺和中介軟體又是個什麼關係?如果開個mq就是中介軟體,微服務又是要做啥?

 

原文連結:

https://mp.weixin.qq.com/s/ybQd4zXyfQlUdbvbQl0h9A

原文二維碼:

03

從nginx熱更新聊一聊Golang中的伺服器熱更新(上)

靜態語言在伺服器程式設計時都會遇到這樣的問題:如何保證已有的連線服務不中斷同時又升級版本?

服務程式熱更新這個問題在層7閘道器中尤其嚴重,閘道器中承載著大量的請求,包括HTTP/HTTPS短連線、HTTP/HTTPS長連線、甚至是websocket這種超長連線(websocket通常連線時間會很長,十幾分鐘到幾天不等)。這樣的話我們勢必不能講服務程式停止再啟動的冷更新,服務行程熱更新是非常有必要的。

閘道器作為一個基礎元件,需要保證高可用,是很難將其先停下來再更新的;

有人說可以使用負載均衡將需要更新的元件先隔離,再停機更新,但是如果是一個很小的叢集沒有負載均衡呢,又或者這樣手動一臺一臺升級也著實麻煩,部分情況下就算隔離了也不過是不會有新的連線過來,舊的連線/請求依舊需要處理完成,否則就會造成部分服務不可用。

 

原文連結:

https://zhuanlan.zhihu.com/p/59193526

原文二維碼:

04

Go 語言 for 和 range 的實現

迴圈是幾乎所有程式語言都具有的控制結構,也是程式語言中常用的控制結構,Go 語言除了使用經典的『三段式』迴圈之外,還引入了另一個關鍵字 range 幫助我們快速遍歷陣列、雜湊表以及 Channel 等元素。

在這一節中,我們將介紹 Go 語言中的兩種不同迴圈,也就是經典的 for 迴圈和 for…range 迴圈,我們會分析這兩種迴圈在執行時的結構以及它們的實現原理。

for 迴圈能夠將程式碼中的資料和邏輯分離,讓同一份程式碼能夠多次復用處理同樣的邏輯,我們先來看一下 Go 語言兩種不同的 for 迴圈在彙編程式碼這一層是如何實現的?

原文連結:

https://draveness.me/golang-for-range

原文二維碼:

05

在Golang的HTTP請求中共享資料

首先,我們需要先明確一下問題的描述:本文所要討論的共享資料可不是指的 cookie、session 之類的概念,它們描述的是在「請求間」共享資料,而我們關註的是在「請求中」共享資料,也就說是,在每個請求中的各個 middleware 和 handler 之間共享資料。

實際上,我之所以關註這個問題是因為 httprouter,眾所周知,httprouter 是目前 Golang 社群最流行的 HTTP 路由庫,不過它有一個問題,其 handler 引數定義如下:

func (http.ResponseWriter, *http.Request, httprouter.Params)

而 Golang 官方的 http.Handler 引數定義是:

func (http.ResponseWriter, *http.Request)

 

原文連結:

https://huoding.com/2019/02/08/718

原文二維碼:

 

職位推薦:

 

【北京、武漢】雲沃客招聘高階 Golang 開發工程師

 

【上海】曉信科技招聘Go工程師

 

【北京】曉鏈科技招聘golang 開發工程師

 

招聘詳情地址:https://gocn.vip/explore/category-8

 

Gopher China 2019 最新資訊

志願者招募:

因 Gopher China 2019 大會報名人數超出預期,現還需招募大會現場服務執行志願者3名,本次招募只限北京地區

地區:僅限北京地區      人數:3人

工作時段:

4月26日下午+4月27日上午+4月28日下午,需要1名,(不會錯過27號下午和28號上午的演講)。

4月27日全天+4月28日上午,需要2名,(在沒有工作安排的情況下聽27號和28號上午演講,不會錯過28號下午的演講)。

如果你是北京地區在校學生,也是Go語言愛好者,可透過申請志願服務免費獲得  Gopher China 2019 大會參會資格。

識別下方二維碼即可報名志願者:

志願者福利:

a. 免費參會資格,2天干貨不得不 get 的新技能!

b. Gopher China 2019 限量版T恤一件,買不到的T恤你攢了幾件?

c. 與國內外Go語言界的技術大牛近距離接觸,或高冷或萌心的技術大牛一網打盡〜

d. 有機會獲得各廠商的展臺禮品,展臺上的市場小姐姐都是人美嘴甜心地好〜

贊(0)

分享創造快樂