1. 程式人生 > >某互聯網上市公司基於 Golang 的運維基礎框架

某互聯網上市公司基於 Golang 的運維基礎框架

golang 架構 運維

主題:某互聯網上市公司基於 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 的運維基礎框架