前段時間工作中遇到了<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>等問題
感覺現在看書也不虛了,看開源代碼也更有勁兒了~