自學go和beego項目筆記

自學go和beego項目筆記

  • 一個月的時間學習了go語言基礎,之後開始着手用beego做項目,現在項目終於完結了,有時間總結一下自己的心得和筆記。

  • 能力一般,水平有限,錯誤之處敬請留言指正。

  • 項目簡介

    • 項目一,主要用到beego框架,數據庫redis,mongodb,mysql,第三方oss,雲片短信,聚合數據,自定義header,restful風格接口,orm模型,命名空間路由等等。
    • 項目二,基於go語言gorilla包的websocket項目,涉及三方交互,設計模式觀察者模式,統一接受,分開處理。
  • 項目一技術要點

    • 賬戶系統,採用jwt做token驗證(jwt相較於傳統session的好處在此不多說),實現賬號密碼登錄,手機短信驗證碼登錄,第三方微信QQ登錄,短信驗證碼防刷機制(對同ip和同手機號進行單位時間請求次數限制)
    • token刷新機制,遵從oauth2.0協議,通過access_token和refresh_token分別分配不同的過期時間,進行驗證刷新token。另外token中可以自由攜帶一些非重要信息,方便驗證數據。
    • 數據緩存採用redis,自由選擇使用幾號庫,redis.Dial(netWork, redisUrl, redis.DialDatabase(dataBase)),(關於redis相較於memcached優點,簡單說明,redis內存型,io多路複用,單線程仍可高併發,避免了多線程頻繁上下文切換,c語言實現,數據結構多,可用命令多,等等)
    • 數據存儲,除了常規使用mysql,這裏使用了mongodb,mongodb又名文檔型數據庫,適合存儲 較長json結構數據。(項目有些json數據結構較長又沒必要拆分,採用mongodb進行存儲是最好的選擇。)
    • 設計到用戶頭像,用戶圖片數據,視頻數據等存儲,項目對接阿里雲oss實現文件直傳,比普通上傳(客戶端傳服務器,服務器再傳oss),速度快好幾倍,而且使用安全靈活。
    • 數據狀態的使用。(數據狀態好多種,這裏簡單就是返回數據id)
  • 項目二技術要點

    • 基於websocket的實時全雙工通訊服務。
    • 設計模式觀察者模式
    • 三方交互,app,服務器, 設備,做到實時通訊,實時監聽,實時顯示。
    • 自定義消息類型,json結構分爲header和payload,header攜帶消息屬性(包括消息id,消息類型,版本號),payload攜帶具體數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章