Go專案實戰 打造高併發日誌採集系統(十)

2022-01-23 11:58:13 字數 1539 閱讀 9338

前文我們完成了日誌管理系統後台開發。

這次為日誌管理搭建乙個web管理平台,可以通過web端錄入專案和配置資訊,以及專案對應的日誌路徑和採集資訊,並且寫入etcd,

這樣通過之前編寫的日誌採集系統可以根據etcd採集對應的日誌。

web端採用beego框架進行開發,beego是乙個採用mvc三層架構設計的web框架。這裡闡述下web管理平台的架構和功能。

main函式中初始化外掛程式,並且啟動beego

func init_components() bool 

err = components.initdb()

if err != nil

err = components.initetcd()

if err != nil

return true

}func main()

beego.run()

}

外掛程式初始化具體可以檢視我的原始碼,之後在最下方我給出原始碼鏈結。

接下來我們看看routers中路由規則的註冊

func init() , "*:loglist")

beego.router("/log/create", &logcontroller.logcontroller{}, "*:logcreate")

}

logs.debug("enter index controller")

p.layout = "layout/layout.html"

if err != nil

} if err != nil

return

}model通過查詢資料庫將專案資訊返回。這些資料儲存在mysql表中。這裡其實是通過orm對映,

將資料庫表的資料儲存在我們定義的結構體

createtime string `db:"create_time"`

developpath string `db:"develop_path"`

ip string

}資料庫表如下

我們點選專案申請,填寫專案資訊

提交後可以看到專案列表

同樣我們點選日誌申請,填寫資訊

檢視日誌資訊

資料庫表也儲存成功了

高併發實戰

參考書籍netty,redis,zookeeper高併發實戰 作者 尼恩 鏈結 netty是jboss提供的乙個j a開源框架,是基於nio的客戶端 伺服器程式設計框架,它既能開發高併發,高可用,高可靠性的網路伺服器程式,也可以開發高可用,高可靠的客戶端程式 乙個可以快速儲存的記憶體資料庫,redi...

redis實戰 高併發搶購案例

先普及一下,什麼叫超賣,訂單商品資料量大於商品庫存數量,就叫做超賣 那麼問題來了,為什麼會超賣呢?在 搶購中,假如庫存為100個,這時有100 000個併發請求過來了,最後庫存只剩1個時,假如還有1000個併發請求,如果這1000個請求都成功了,那最後庫存是不是變成了 999,這就是超賣。以上僅為理...

go語言高併發channel詳解

go語言中channel可以理解是乙個先進先出的佇列,通過管道進行通訊。csp 模型 傳統的併發模型主要分為 actor 模型和 csp 模型,csp 模型全稱為 communicating sequential processes,csp 模型由併發執行實體 程序,執行緒或協程 和訊息通道組成,實...