golang快速入門之代碼實戰

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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

需求

  1. 由於是為了學習golang,所以要在實現代理基礎功能的前提下儘可能的用到golang的各種基礎知識,不要上來就拿別人的東西,不利於夯實基礎
  2. 不可能真單純的為了玩,學一個東西除了為充實大腦,更為了能有實際用途,所以有必要掌握工程化流程
  3. 程式不要太繁雜,畢竟這是我的第一個golang工程,來日方長

設計

結構圖如下:

+----------+                                           +------------+|  client  |<--------+                                 |            |+----------+         +-------->+-----+<--------------->|   server   |                               |     |                 |            |+----------+                   |     |                 +------------+|  client  |<----------------->|     |+----------+                   |     |                               |     |                 +------------++----------+                   |  L  |                 |            ||  client  |^----------------->|  B  |<--------------->|   server   |+----------+                   |  S  |                 |            |                               |     |                 +------------++----------+                   |     ||  client  |<----------------->|     |+----------+                   |     |                 +------------+                               |     |                 |            |+----------+        +--------->+-----+<--------------->|   server   ||  client  |<-------+                                  |            |+----------+                                           +------------+          

最常見的負載平衡模式,但有幾個點需要支援:
1. 支援不同的調度策略,如:輪訓,隨機,iphash
2. 要有心跳檢查機制,及時將有問題的後端server剔除,但也要在server恢複的時候恢複過來
3. 有簡單的監控,便於查看後端server的代理情況及用戶端的串連情況
4. 參數配置化,便於修改
5. ...後續再加...

實現

github:EasyProxy
歡迎交流~

總結

easyproxy第一版結束後,較為深入的學習了slice,map,channel,struct,interface等結構,還玩了下golang的協程反射多態等特性,順帶掌握了下其工程化應當注意的包迴圈引入,debug,打包發布等問題
感覺現在看書也不虛了,看開原始碼也更有勁兒了~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.