某互聯網上市公司基於 Golang 的運維基礎框架
目錄
-
服務器監控系統
-
自動化部署系統
-
功能展示
-
高可用控制系統的演化
- 高可用調度系統
-
-
資源定位系統
-
整體架構
- 強一致,高可用設計
-
- 一點兒心得
主講師:PC
-
豆瓣、百度、360、第四範式
- 知乎《面向工資編程》
Overview
監控系統
自動化部署系統
標準化的上線包,流程化的上線系統
-
Function Points
-
面向服務上線
-
一鍵部署及回滾
-
詳細的部署統計信息和歷史
- Window/Linux 全平臺支持
控制系統
-
memcached架構的全異步非阻塞多線程模https://github.com/auxten/gko_pool
-
內置特別優化過的內存池實現, https://github.com/auxten/gkoAlloc
-
異步 DNS 查詢、DNS over T?P,cares + libev。從 gevent 學來的。
- 高性能客戶端編程:端口掃描、DDoS 攻擊……
進化
整體架構
分層原則
在系統實現第一期,只有 Agent 和“分布式控制器”,後續為了支持“定時任務”、“任務依賴”。誕生出了更為上層的“分布式調度器”。這兩層系統實現的語言和高可用的考慮都不一樣,但還是如下原則:
-
數據、業務邏輯嚴格分離。所有服務”無狀態化”,保證數據一致性和高可用。
- 業務邏輯和數據操作、網絡操作代碼嚴格分層實現。
控制系統 v2
長連接推送
Tech Points
-
分布式一致性算法
-
使用 Erlang/OTP 開發,連續四年不間斷運行無故障
-
高可用設計、99.999% 高可用保障
- 平臺化、插件化
調度
處理復雜任務依賴、調度
Tech Points
-
分布式高可用調度算法
-
任務依賴&定時模型
-
Powered by Golang
- 長連接,HTTP 接口
資源定位
解耦、定位上下遊
client
Access Method
Confd——長連接、推送修改配置文件、自定義reload腳本
SOA——主要面向Java,以SDK提供,zookeeper接口形式接入
DNSd——Golang;Glibc Name Service Switch
API——Zookeeper兼容接口,HTTP接口、ProtoBuf接口
sever
Tech Points
-
Raft 分布式一致性算法,強一致性保證,高可用保證,放棄分區容忍性
-
LevelDB 持久化,LSM tree,每次啟動時載入
- Powered by C++,預備用 Golang 重構
心得
分享時間:18年3月29日(周四)21:00——22:00
具體的參與方式:加小助手微信WeChat : 1902433859 備註“公開課” 進入直播分享群
某互聯網上市公司基於 Golang 的運維基礎框架