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

一周 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)

分享創造快樂