-
Prometheus 高可用方案
本文介紹了 Prometheus 的高可用官方方案和自研高可用方案。 一、現(xiàn)實可用的小規(guī)模高可用方案 關于 Prometheus 的高可用,官方文檔中只提供了一個解決方案,具體實現(xiàn)方式如下: 使用兩個 Prometheus 主機監(jiān)控同樣的目標,然后有告警出現(xiàn),也會發(fā)送同樣的告警給 Alertmanager,然后使用 Alertmanager 自身的去重告警功能,只發(fā)出一條告警出來。從而實現(xiàn)了 prometheus 高可用的一個架構(gòu)。?基于此架構(gòu),我們還可以使用 keepalived 做雙機熱備,…
-
Linux 這些工具堪稱神器!你用過哪個?
ag:比grep、ack更快的遞歸搜索文件內(nèi)容。 tig:字符模式下交互查看git項目,可以替代git命令。 mycli:mysql客戶端,支持語法高亮和命令補全,效果類似ipython,可以替代mysql命令。 jq:?json文件處理以及格式化顯示,支持高亮,可以替換python -m json.tool。 shellcheck:shell腳本靜態(tài)檢查工具,能夠識別語法錯誤以及不規(guī)范的寫法。 fzf:命令行下模糊搜索工具,能夠交互式智能搜索并選取文件或者內(nèi)容,配合終端ctrl-r歷史命令搜索…
-
字節(jié)開源以Go為核心的項目,為何大廠都如此偏愛Go?
9月8日,字節(jié)跳動正式宣布開源CloudWeGo,這是一套以Go 語言為核心中間件集合。字節(jié)相關技術(shù)負責人表示希望CloudWeGo能豐富云原生社區(qū)的Golang工具體系。 可以看出,字節(jié)內(nèi)部已有諸多用Go語言開發(fā)的成熟項目,基本上也已經(jīng)全員轉(zhuǎn)Go了。其實不只是字節(jié),阿里、騰訊、百度、B站等也都開始嘗試用Go來開發(fā)項目了,如果你想進大廠,那么Go語言毫無疑問是最佳通行證。 為什么現(xiàn)在BAT大廠紛紛轉(zhuǎn)Go? Go有十分明顯的優(yōu)勢 許多大廠內(nèi)部需要構(gòu)建大型項目,而Go的高并發(fā)、高性能、高效率等優(yōu)勢,…
-
教師節(jié)重磅獻禮!馬哥教育向全體燃燈者致敬!
昨天有個關于"學習"的話題瞬間沖上了熱搜榜:中國人為了學習能有多努力。 熱愛學習,艱苦奮斗一直是中華民族的優(yōu)良傳統(tǒng),即使家境貧寒,即使名落孫山,我們始終在學習的路上,不曾停止過。 當我們還是孩童時,我們就意識到學習的重要性。我們早起晚歸,就算是周末也不曾放棄學習的機會,甚至在上下學路上,我們?nèi)栽趯W習。 當我們偶爾放松,玩起游戲時,我們也要尋找一起學習的同伴,盡管大家來自天南地北,互不相識,只要你也熱愛學習,我們就是"一家人"。 當我們終于從天涯海角聚在一起,相會于馬哥教育時,即使結(jié)…
-
Python 處理 JSON 我選擇 ujson 和 orjson
在 Python 使用用??json.dumps(data)?時突然發(fā)現(xiàn)特別慢,data?本身不大,但是一個包含很多元素的列表,所以促使本人尋找一個替代的 JSON 處理庫。大概對比了一個 ujson(UtltraJSON), python-rapidjson(RapidJSON) 和 Python 自帶的 json 庫。還有一個 simplejson 是為兼容 Python 2.6 以前用的(json 是 Python 2.6 新加入的 API),性能有些差。 基本上姜還是老的辣,想要收獲更好…
-
Go 項目中常見的 10 種錯誤
本文總結(jié)了10種 go 語言編成中可能導致性能下降的壞實踐。有代碼潔癖的同學來自我檢查吧! 這篇文章主要講述了我在 Go 項目中見到過的常見錯誤清單,順序無關。 未知的Enum值 來看個簡單的例子 在上面的代碼中,使用iota創(chuàng)建了一個enum類型,分別代指下面的狀態(tài)信息: 現(xiàn)在,我們假設Status?是一個 JSON 請求中被Marshalled / Unmarshalled的一個屬性,我們可以設計出下面的數(shù)據(jù)結(jié)構(gòu): 然后,假設收到的Request 的接口返回值為: 到目前為止,沒有什么特殊的…
-
面試官:二維碼掃碼登錄是個啥原理
在日常生活中,二維碼出現(xiàn)在很多場景,比如超市支付、系統(tǒng)登錄、應用下載等等。了解二維碼的原理,可以為技術(shù)人員在技術(shù)選型時提供新的思路。對于非技術(shù)人員呢,除了解惑,還可以引導他更好地辨別生活中遇到的各種二維碼,防止上當受騙。 二維碼,大家再熟悉不過了 購物掃個碼,吃飯掃個碼,坐公交也掃個碼 在掃碼的過程中,大家可能會有疑問:這二維碼安全嗎?會不會泄漏我的個人信息?更深度的用戶還會考慮:我的系統(tǒng)是不是也可以搞一個二維碼來推廣呢? 這時候就需要了解一下二維碼背后的技術(shù)和邏輯了! 二維碼最常用的場景之一就…
-
微博崩,B站崩,B站崩完豆瓣崩......
9月5日,“豆瓣崩了”登上熱搜,引起廣泛討論。 而在7月13日,熱搜上也是一片“崩壞”。起因是因為B站崩了,看不了視頻的用戶又沖向了其他網(wǎng)站,之后A站、豆瓣、晉江文學都出現(xiàn)了不同程度的訪問故障。B站7000多萬日活網(wǎng)友的威力可見一斑。 這次事件,也為我們敲響了警鐘。 事故的發(fā)生是量積累的結(jié)果,任何事情都沒有表面看起來那么簡單,在軟件運行的過程中,隨著用戶量的增加,不考慮高可用,遲早有一天會發(fā)生故障! 高可用HA(High Availability)是分布式系統(tǒng)架構(gòu)設計中必須考慮的因素之一,它通常…
-
Dockerfile文件全面詳解
Docker 可以通過讀取 Dockerfile 中的指令自動構(gòu)建鏡像。Dockerfile 是一個文本文檔,其中包含了用戶創(chuàng)建鏡像的所有命令和說明。 一、 變量 變量用?$variable_name 或者?${variable_name}?表示。 ${variable:-word}?表示如果 variable 設置,則結(jié)果將是該值。如果 variable 未設置,word 則將是結(jié)果。 ${variable:+word}?表示如果 variable 設置則為 word 結(jié)果,否則為空字符串。 …
-
Golang 如何表示枚舉類型
go 語言枚舉類型是這么用的?在什么場景下會用到枚舉?本文對 go 語言枚舉做了詳細講解。 枚舉,是一種重要的數(shù)據(jù)類型,由一組鍵值對組成,通常用來在編程語言中充當常量的標識符。在主流行編程語言如 c、 java 等,都有原生支持。在 go 中,大家卻找不到 enum 或者其它直接用來聲明枚舉類型的關鍵字。從熟悉其它編程語言的開發(fā)者轉(zhuǎn)用 go 編程,剛開始會比較難接受這種情況。其實,如果你看到如何在 go 中表示枚舉類型時,可能會感受到 go 語言設計者對簡潔性、問題考慮的深度,是一般資淺工程師無…