鬥魚微服務框架-jupiter

備註:摘抄自我的同事張明可

主要內容

鬥魚微服務發展歷程
jupiter介紹
jupiter功能點

鬥魚微服務發展歷程

單體應用時代

  • 單一代碼庫
  • 多人開發效率低下
  • 迴歸測試困難
    在這裏插入圖片描述

垂直應用時期

  • 核心業務按組垂直拆分
  • 核心業務代碼隔離
  • 一個團隊負責一整個項目的生命週期

在這裏插入圖片描述

微服務時代

  • 服務完全隔離
  • 項目之間不共用數據源
  • 各個服務之間通過rpc接口通信
    在這裏插入圖片描述

微服務冰山模型
在這裏插入圖片描述

鬥魚微服務框架-jupiter介紹

Golang微服務框架痛點

在這裏插入圖片描述

jupiter 架構

  • 開發效率
  • 治理效率
  • 多場景應用
  • 服務治理平臺

在這裏插入圖片描述

  1. 服務註冊與發現

基於ETCD實現的註冊發現服務。服務啓動時將服務自身註冊到ETCD集羣,客戶端調用服務時,從ETCD集羣獲取實例列表,在客戶端進行負載均衡調用。

2.服務治理

針對服務的版本進行治理
解析服務依賴拓撲關係
增強服務可觀測行
規定統一錯誤碼
動態配置等

3.過載保護

爲了防止業務因爲訪問量突增或服務器故障造成系統整體的繁忙,進而導致全部服務的不可用,框架內部針對服務進行了服務流控與標籤分組,以及限流熔斷措施

4.IDC/SET分組

爲了減少網絡資源消耗及網絡故障帶來的影響,框架提供了跨地區、跨機房、就近接入的IDC分組功能。框架提供了互不干擾、故障隔離的Set部署能力。

5.配置中心

通過ETCD集羣+Agent的方式管理和更新配置文件,支持多格式多文件,對現有業務無侵入。
同時支持配置熱更新,動態修改配置,提供配置長輪訓機制

6.指標、鏈路、日誌

基於prometheus+grafana搭建服務可視化監控系統,通過定義統一的指標格式規範、收斂錯誤碼

Go微服務框架對比

在這裏插入圖片描述

鬥魚微服務框架-jupiter功能點

鬥魚微服務框架-服務註冊與發現

1.etcd實現服務註冊與發現
2.etcdProxy代理記錄註冊節點信息並且異步探活
3.客戶端實時獲取註冊節點信息

在這裏插入圖片描述

鬥魚微服務框架-服務註冊與發現治理

在這裏插入圖片描述
1.觀測服務註冊節點信息情況
2.提供服務節點的管理(啓動,重啓,停止等)

鬥魚微服務框架-多機房部署

支持多region,多zone註冊方式
服務端可以動態切換註冊節點,實現服務調度
在這裏插入圖片描述

etcd的value記錄了註冊節點的region,zone等元數據信息
在這裏插入圖片描述

鬥魚微服務框架-服務負載均衡1.0

1.無法快速摘除有問題的節點
2.無法均衡後端負載
3.無法降低總體負載
在這裏插入圖片描述

鬥魚微服務框架-服務負載均衡2.0

1.平滑服務端CPU的負載
2.快速剔除有問題的節點
3.同城多活
在這裏插入圖片描述
在這裏插入圖片描述

鬥魚微服務框架-配置驅動開發

先看以下代碼存在的問題
在這裏插入圖片描述
1.每次發送請求都會創建一次連接
2.請求結束後沒有及時釋放掉連接
3.持續調用會導致tcp連接數暴漲

使用jupiter後

在這裏插入圖片描述
在這裏插入圖片描述
1.統一所有包的使用方式
2.統一由配置驅動組件啓動

鬥魚微服務框架-監控、日誌與鏈路追蹤

在這裏插入圖片描述
1.服務監控
2.服務日誌
3.服務鏈路追蹤

鬥魚微服務框架-日誌錯誤收斂

在這裏插入圖片描述

在這裏插入圖片描述

統一錯誤碼信息
統一索引信息
區分系統和業務
區分重要信息和非重要信息
代碼即是文檔

鬥魚微服務框架-監控指標

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

google sre四個黃金指標

鬥魚微服務框架-監控總覽

在這裏插入圖片描述

1.響應時間
2.QPS
3.成功率

在這裏插入圖片描述

1.實例緯度記錄服務的基礎監控數據信息
2.服務健康狀態
3.QPS
4.響應時間

鬥魚微服務框架-服務飽和度

在這裏插入圖片描述

1.全鏈路壓測獲取服務端的整體承載容量
2.記錄服務的實時qps飽和度
3.根據實際情況進行服務擴縮容

鬥魚微服務框架-監控錯誤收斂

在這裏插入圖片描述

1.全鏈路壓測獲取服務端的整體承載容量
2.記錄服務的實時qps飽和度
3.根據實際情況進行服務擴縮容

鬥魚微服務框架-快速定位問題

在這裏插入圖片描述

1.通過服務響應時間判斷哪一個服務出現問題
2.通過TOP指標與上下游鏈路解析快速定位問題
3.結合服務上下文監控數據、profiling和錯誤日誌進行分析
4.快速定位並且解決問題

鬥魚微服務框架-限流熔斷

在這裏插入圖片描述

1.貢獻sentinel代碼
2.juno管理後臺配置熔斷規則
3.將配置規則寫入etcd中
4.應用獲取對應配置規則進行限流熔斷

鬥魚微服務框架-動態日誌級別配置

在這裏插入圖片描述

1.使用官方開源zap
2.監聽應用配置信息及時修改zap的autolevel級別
3.實現動態調整日誌級別
4.及時針對線上項目進行debug

鬥魚微服務框架-在線profiling

在這裏插入圖片描述

1.CPU分析
2.內存分析
3.協程分析
4.阻塞同步分析

最後

歡迎成爲jupiter的開發者

https://github.com/douyu/jupiter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章