天天看點

golang快速入門之代碼實戰

前段時間工作中遇到了<code>golang</code>的項目,稍稍對其産生了點興趣,打算認真學習下,正巧在搭建<code>mysql</code>主備環境的時候發現如果用一個代理程式的話自己測試會友善很多(主要還是為了造輪子),于是就抽空用<code>golang</code>寫了一個tcp代理程式(絕對是空餘時間,工作很飽滿的)

由于是為了學習golang,是以要在實作代理基礎功能的前提下盡可能的用到golang的各種基礎知識,不要上來就拿别人的東西,不利于夯實基礎

不可能真單純的為了玩,學一個東西除了為充實大腦,更為了能有實際用途,是以有必要掌握工程化流程

程式不要太繁雜,畢竟這是我的第一個<code>golang</code>工程,來日方長

結構圖如下:

最常見的負載均衡模式,但有幾個點需要支援:

支援不同的排程政策,如:輪訓,随機,iphash

要有心跳檢查機制,及時将有問題的後端server剔除,但也要在server恢複的時候恢複過來

有簡單的監控,便于檢視後端server的代理情況及用戶端的連接配接情況

參數配置化,便于修改

...後續再加...

歡迎交流~

在<code>easyproxy</code>第一版結束後,較為深入的學習了<code>slice</code>,<code>map</code>,<code>channel</code>,<code>struct</code>,<code>interface</code>等結構,還玩了下golang的<code>協程</code>,<code>反射</code>,<code>多态</code>等特性,順帶掌握了下其工程化應當注意的<code>包循環引入</code>,<code>debug</code>,<code>打包釋出</code>等問題

感覺現在看書也不虛了,看開源代碼也更有勁兒了~