一直在用python
寫各種指令碼,想做自動化運維平台卻有心無力,沒有見過大的運維平台怎麼做,
自己寫的指令碼在大的場景下是否靠譜,每當討論說一些基於ssh獲取資料執行操作的方式都會被鄙視。
迷茫大半年找不到方向,最近在reboot系統學習了下,收穫很多,很多疑惑和疑難問題終於解開了。
感謝pc老師講解,程式對系統利用的深入講解[cpu\記憶體的利用\系統的特性],
幾款典型開源軟體原始碼的網路模型剖析,如何真正控制多執行緒,守護程序如何fork的,封裝socket非阻塞的框架,如何制定傳輸協議。
以下是這段時間學習的成果,好多優秀的細節無法全面展示.
哎!前面的資料,6個server同時在乙個機器上跑,毫無壓力,監控圖不好看。。。。我來搞幾百個併發shell程序跑跑,把load壓上來。
此架構非常靈活,任意拆裝拼接,如果小,可功能整合於一點,如果大,可隨意擴充套件瓶頸,server全部守護程序方式。
一切魔法都封裝在nbnet模組中,socket非阻塞,自定義傳輸協議,qps幾萬毫無壓力,所有模組全部匯入這個nbnet模組,收發介面全部統一,就可隨意拼接,3分鐘就可以擴充套件出乙個不同功能的server。得此神器,只有想不到沒有做不到。
nbnet模組中2個重要功能,已經全部封裝好了,只需要呼叫即可。
12
senddata
(sock_a
,"reboot"
,50003
,input
)# 傳送資料,也可任意發多份給不同server
nbnet
(self
.host
,self
.port
,transfer
)# 接收資料
flask_web 就是極簡單的幾個資料介面和html頁面,不得不承認大家確實都覺得一些比較炫的web頁面就很牛,不會過多關注後台怎麼回事,有張漂亮的臉也確實吸引人,不過確實需要花不少時間折騰,像我這種根本不懂審美,時間又有限,只能做成這個熊樣了,真心不喜歡折騰web頁面,啥時候用啥時候看,看過了還是忘,這裡緊緊做了一些監控出圖和執行命令的ajax呼叫。底層框架有了,頁面隨便找個做前端的小妹紙配合下就好了。
其他的server流程基本一致,不做過多重複展示了,檔案傳輸在另外乙個分支上做了,暫時沒有合併,有這套框架,業務和功能比較好擴充套件了。
這裡關於諸多實際情況都做出了考慮,比如agent睡眠時間漂移,監控資料丟失後時間戳不連續,報警動態載入配置,網路狀態不好等等。但還是有很多細節需要逐步完善的地方。
高效能與可擴充套件
效能低主要是由於i o操作導致的延遲,導致了等待 cpu很閒,處理速率卻上不去 解決辦法 減少i o操作 加入快取來緩解i o操作 讓出主線程,開啟單獨執行緒來處理i o操作 主線程就能處理更多的iis請求 把大面積的資料 比如某字段中儲存了1w個字串,並且select了多行.omg 壓縮後儲存到磁...
echo 高效能,可擴充套件,極簡的Go Web框架
以前學習nodejs的時候,使用過express,這是乙個基於 node.js 平台,快速 開放 極簡的 web 開發框架。echo是乙個高效能,可擴充套件,極簡的go web框架。其官網如下圖所示 具體使用見官方指南 在github上面建立乙個go echo helloweb的空倉庫,如下圖所示 ...
高併發 (極客)(高效能 高可用 高可擴充套件)
三高 高效能 高可用 高可擴充套件 提公升單機效能 多機 集群 快取非同步 資源池化 指標 響應平均值,最大值,分位值,吞吐量 1.資料庫 資料庫擴充套件 讀寫分離 減少讀操作的壓力 分庫分表 sharding redo log mysql 裡經常說到的 wal 技術,wal 的全稱是 write ...