博客 / 列表

MrVolleyball - 很多人用 Envoy,卻從沒真正理解過 xDS(我也是,直到手搓了一遍)

前言 上一篇內容,我們詳細討論了envoy做服務發現,並且詳細討論了靜態配置與使用dns做服務發現,並且通過consul的詳細配置闡述了dns做服務發現的工作原理,但是也遺留了一個問題,一旦想要修改endpoint的配置 clusters: - name: app_service connect_timeout: 1s type:

雲計算

MrVolleyball - envoy使用consul做服務發現

前言 上一篇內容,我們詳細討論了怎麼使用envoy做負載均衡,並且記錄詳細的地址,其中還解決了一個問題,那就是怎麼讓envoy獲取真實後端pod ip地址,後面使用headless service,既使用了service的服務發現能力,又不使用service的負載均衡能力 如果在某些特殊的場景下完全放棄的k8s service(比如混合雲部署機房,兩邊雲都需要有相同的服務,但是服務之間不能跨雲訪問

雲計算

MrVolleyball - 追蹤鏈路--使用envoy來記錄後端pod真實ip

前言 之前使用了iptables、ipvs,在數據包的必經之路(POSTROUTING)上攔截並且記錄日誌,本文使用一個比較成熟的組件envoy來記錄後端pod的真實ip 環境準備 環境準備如同之前 ▶ kubectl get pod -owide NAME READY STATUS RESTARTS AGE IP

雲計算

MrVolleyball - 追蹤鏈路--使用iptables/ipvs來記錄後端pod真實ip

前言 之前使用nginx-ingress-controller來記錄後端真實ip,但是有位老哥説了,我沒有用nginx-ingress-controller,而是用的原生nginx,這時候又當如何記錄後端真實ip的問題呢 環境準備 nginx: upstream backend_ups { server backend-service:10000; } server { list

雲計算

MrVolleyball - 鏈路追蹤--使用nginx-ingress-controller記錄後端pod真實ip

前言 常見的nginx做反向代理架構,nginx轉發到後端的多台服務 ┌─────────┐ │backend-1│ └─────────┘ ┌─────────┐ ┌─────┐ │backend-2│ │nginx│ ────► └─

雲計算

MrVolleyball - 6年前的項目終於更新了--機房ping監控全國主要城市

前言 當初項目的本意是為了監測中心機房到全國各地(主要是省會與重要城市)的ping速率而創建,目標ip地址是根據某個ip網站爬取,而現在該網站已經下線了,導致目標ip無法獲取,再加上所用組件版本已經年久失修,最後是本人懶惰~~,導致項目已經不可用很久了 今年勤奮戰勝懶惰,又重新佔領高地,想着把該項目重修修繕一遍 開始修繕 更換ip庫:放棄了之前的網站,重新找了一份ip地址庫,並且會定期更新

雲計算

MrVolleyball - opentelemetry全鏈路初探--日誌跳轉trace

前言 上一小節描述了metrics、traces,本小節來把log也加進去,並且做一個traces與log的聯動 當查看日誌的時候,可以同時跳轉到對應的jaeger,查看分段trace情況 應用服務 本次要測試的應用服務架構為 a.py--b.py 業務服務會往對應的目錄打印日誌,並且日誌包含了trace_id a.py import tornado.httpserver as h

雲計算

MrVolleyball - opentelemetry全鏈路初探--jaeger架構拆分

前言 jaeger的架構演變 在之前的描述中,一直使用jaeger:all-in-one來做數據存儲與展示,jaeger:all-in-one就是將collector、query、ui、storage等等功能的大雜燴,在調試與測試環境中,非常方便,但是在生產環境肯定是不能這樣用,本節就來 將其拆分成對應的子模塊 jaeger架構改造 數據上報:可以是sdk、api、定時腳本等一切上報trace

雲計算

MrVolleyball - opentelemetry全鏈路初探--python注入

前言 經過上一節,opentelemetry的基本操作都已經融會貫通,但是有位老哥提出疑問?我的代碼都已經寫完了,為了添加全鏈路,還需要重構之前的代碼嗎?那這個代價太大了。那本章就來討論一下opentelemetry的注入的問題 本小節主要關注python注入 使用裝飾器 使用裝飾器的好處就是非常靈活,並且對代碼入侵很小,只需要裝飾一下即可 decoration-s1.py import torn

雲計算

MrVolleyball - opentelemetry全鏈路初探--埋點與jaeger

前言 某天一位業務研發老哥跑來諮詢 研發老哥:我的服務出現了504,但是不太清楚是哪個環節報錯,每次請求需要訪問4個微服務、2個數據庫、1個redis、1個消息隊列。。。 苦逼運維:停停停,不要再説了,目前不支持鏈路追蹤,只能手動幫你一個服務一個服務的排查了 先請老哥大概描述了一下業務邏輯以及訪問方式,10分鐘過去了。再逐級排查每個服務以及對應訪問的資源層,終於在半小時之後完成了故障定位。

雲計算

MrVolleyball - 彩筆運維勇闖機器學習--多元線性迴歸(實戰)

前言 書接上文,上一小節簡單介紹了多元迴歸的基本原理、使用方式,本小節來實踐:qps與cpu、內存、磁盤io、網絡io之間的關係 獲取數據 參考一元線性迴歸的獲取方式 from flow import * from datetime import datetime start_time = datetime.strptime('2025-04-06 00:00:00', '%Y-%m-%d %H

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--最小二乘法的數學推導

前言 今天我們來討論一下回歸算法當中的數學實現。本人數學也是渣,大學時期概率論一直掛到清考才勉強通過,+_+ !!,如今勇闖機器學習,硬着頭皮重新學習了微積分和線代,也是為了記錄自己最近的狀態,避免過段時間忘記了。描述的時候有不周全的地方,請各位大佬們多擔待了 本節將會運用一些數學知識來解釋一下相關的迴歸算法的合理性,雖有些枯燥,但知其然也知其所以然,多瞭解一些總是好的 最小二乘法 最小二乘法的核

機器學習

MrVolleyball - 彩筆運維勇闖機器學習:多項式迴歸

前言 在之前的討論中,討論的都是線性迴歸,自變量與結果可以通過一條直線來解釋。而今天討論的問題,自變量與結果可能需要曲線來擬合,也就是所謂的 \(x^n\),n=2 開始探索 老規矩,先運行起來,再探索原理 1. scikit-learn import numpy as np from sklearn.preprocessing import PolynomialFeatures from skl

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--擬合

前言 今天我們來討論擬合的問題 在之前的篇幅,主要討論的是線性迴歸的問題,不管是一元、多元、多項式,本質都是線性迴歸問題。線性迴歸在機器學習中屬於“監督學習”,也就是使用已有的、預定義的“訓練數據”集合,訓練系統,在解釋未知數據時,也能夠很好的解釋 而模型訓練完成之後,可能會有3中狀態:“欠擬合”、“最佳適配”、“過擬合”。本小節就來消息討論一下,怎麼判斷訓練出來的模型處於什麼樣的狀態 過擬合 老

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--邏輯迴歸

前言 從本節開始,我們的機器學習之旅進入了下一個篇章。之前討論的是迴歸算法,迴歸算法主要用於預測數據。而本節討論的是分類問題,簡而言之就是按照規則將數據分類 而要討論的邏輯迴歸,雖然名字叫做迴歸,它要解決的是分類問題 開始探索 scikit-learn 還是老規矩,先來個例子,再討論原理 假設以下場景:一位老哥想要測試他老婆對於抽煙忍耐度,他進行了以下測試 星期一

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--決策樹

前言 決策樹是一種常用的機器學習模型,用於分類和迴歸任務,它通過模擬“樹”的結構來對數據進行決策。本節我們詳細討論的是決策樹中的分類任務 開始探索 scikit-learn 假設以下運維場景 CPU 低:40% 中:40%~70% 高:70% 內存 低:60% 中:60%~85% 高:85% 磁盤I/O 低:40%

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--隨機森林

前言 隨機森林的出現,是為了解決決策樹對訓練數據過擬合的問題而出現的。決策樹在訓練的工程中,可以讓每一個葉子節點的不確定性降為0(即熵或者基尼指數為0),這樣做可能把訓練數據中的偶然性、異常值或噪聲也當成了“規 律”去學習了 對於複雜高維的數據,隨機森林的算法可以更好的泛化能力 開始探索 scikit-learn 老規矩,先上代碼,看看隨機森林的用法 from sklearn.ensemble i

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--梯度下降法

前言 彩筆運維勇闖機器學習,今天我們來討論一下梯度下降法 梯度 首先要搞明白什麼是梯度,那就要先從導數説起 導數 函數\(y=f(x)\)的自變量\(x\)在一點\(x_0\)上產生一個增量\(\Delta x\)時,函數輸出值的增量\(\Delta y=f(x_0 + \Delta x)-f(x_0)\)與自變量增量\(\Delta x\)的比值在\(\Delta x\)趨於0時的極限\(a\)

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--lasso迴歸

前言 彩筆運維勇闖機器學習,今天我們來討論一下lasso迴歸,本期又是一起數學推理過程展示 座標下降法 目標找到一組參數,使目標函數值最小。比如\(f(x,y)=3x^2+5xy+10y^2\),要找到\(x,y\)使得\(f(x,y)\)取值最小 \[x_j^{(k+1)} = \arg \min_{x_j} f(x_1^{(k+1)}, \dots, x_{j-1}^{(k+1)}, x_j

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--GBDT

前言 本文討論的GBDT算法,也是基於決策樹 開始探索 scikit-learn 老規矩,先上代碼,看看GBDT的用法 from sklearn.datasets import load_iris from sklearn.ensemble import GradientBoostingClassifier from sklearn.model_selection import train_tes

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--KNN算法

前言 彩筆運維勇闖機器學習:KNN算法,它也是分類中的一種 開始探索 scikit-learn import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler

機器學習

MrVolleyball - 彩筆運維勇闖機器學習--孤立森林

前言 孤立森林,一種非常高效快速的異常檢測算法 開始探索 scikit-learn import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import IsolationForest rng = np.random.RandomState(0) X_train = 0.3 * rng.randn(100

機器學習