tag go

標籤
貢獻242
360
05:15 PM · Oct 25 ,2025

@go / 博客 RSS 訂閱

alwaysbeta - 微服務架構|go-zero 的自適應熔斷器

原文鏈接: go-zero 的自適應熔斷器 上篇文章我們介紹了微服務的限流,詳細分析了計數器限流和令牌桶限流算法,這篇文章來説説熔斷。 熔斷和限流還不太一樣,限流是控制請求速率,只要還能承受,那麼都會處理,但熔斷不是。 在一條調用鏈上,如果發現某個服務異常,比如響應超時。那麼調用者為了避免過多請求導致資源消耗過大,最終引發系統雪崩,會直接返回錯誤,而不是瘋狂調用這個服務。 本篇文章會介紹主流熔斷器

源碼學習 , 微服務 , 源碼 , 源碼分析 , go

收藏 評論

阿兵雲原生 - 坑爹,線上同步近 3w 個用户導致鏈路阻塞引入發的線上問題,你經歷過嗎?

分享一個印象深刻的線上問題,希望能夠給 xdm 帶來一點思考 一個稀鬆平常的工作日,正準備下班的時候,不巧,突發線上緊急問題,心中一萬個不情願,可還是要硬着頭皮去定位問題 簡單的表象為微服務之間 gRPC通信的通道默認是用了默認值,並沒有按照實際業務去設置通道接受和發送的字節大小 用過 golang grpc 通信的 xdm 就知道,grpc 通道默認的發送和接收的消息大小為 4M,由於傳送的數據

性能 , 分佈式 , go

收藏 評論

星闌科技 - 評估DSPM解決方案時要考慮的五大問題

隨着企業越來越意識到數據安全的重要性,DSPM市場正在迅速擴大。Gartner在其最新的“數據安全炒作週期”報告中,將術語“數據安全態勢管理”解釋為新興的解決方案類別。在該定義中,Gartner 強調 DSPM 解決方案使您的企業能夠: 清點、分類和保護其數據 防止數據泄露; 確保遵守法規。 但是,當您要設置 DSPM 解決方案時,您必須能夠區分供應商。隨着供應商數量的不斷增加,

編輯器 , go , sublime-text , Git

收藏 評論

da_miao_zi - redigo連接池的源碼分析

redigo連接池的源碼分析 今天我們來看一看redigo(https://github.com/gomodule/redigo)是如何實現連接池的。 概述 連接池部分的代碼在redis/pool.go中,相關結構體和接口的UML圖如下圖所示 Pool結構體定義了連接池的屬性和行為,包括以下主要參數: Dial func() (Conn, error):指向用於新建連接的函數,由redigo

redis , 源碼學習 , 源碼分析 , 連接池 , go

收藏 評論

葉劍飛雪 - 程序的同步與異步

前言: 在計算機網絡通訊中有兩種傳輸方式。同步傳輸和異步傳輸。同步傳輸好比一座單行的高架橋, 異步傳輸好比一座雙通道的高架橋。同樣在程序代碼中也存在同步和異步的執行方式。先來了解一下程序的中幾個概念 進程和線程 線程與進程相比更輕量,而且線程之間是共享內存堆棧的,所以不同的線程之間交互非常容易實現。比如聊天室這樣的程序,客户端連接之間可以交互,比聊天室中的玩家可以任意的其他人發消息。用多線程

php , 異步編程 , go , 後端 , Python

收藏 評論

註銷 - pm2 工具在 Node.js 開發和部署中的重要作用

引言 在Node.js開發和部署體系中,pm2 (Process Manager 2) 是一個備受歡迎的工具,用於簡化應用程序的管理、監控和部署。pm2不僅僅是一個進程管理器,還提供了許多功能,包括負載均衡、日誌管理、自動重啓等,使得在生產環境中運行Node.js應用更為可靠和高效。 1. 安裝和基本用法 首先,通過以下命令安裝pm2: npm install -g pm2 使用pm2啓動一個No

express , php , JAVA , go , 後端

收藏 評論

amc - 騰訊 tRPC-Go 教學——(1)搭建服務

2023 年底騰訊統一的 RPC 框架 tRPC 正式開源。遍觀全網,似乎大部份是對 tRPC 概念上的宣傳、架構上的設計,而如何開發、如何部署的文章鳳毛麟角。於是筆者小試牛刀撰此文,或許會成為一系列,希望能拋磚引玉。 系列文章 騰訊 tRPC-Go 教學——(1)搭建服務 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力 騰訊 tRPC-Go 教學——(3)微服務間調用 騰

grpc , 騰訊 , HTTP , rpc , go

收藏 評論

amc - 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力

上一篇文章 中我們快速搭建了一個 http API 服務,並且我們可以看到,對外提供了 URL query 和 application/json 兩種服務模式。那麼實際上,我們到底實現了什麼、並且能夠做些什麼?讀者可能還是沒有直觀的感受,因此必要先來簡單 review 一下。就讓我們先放下敲代碼的小手,一起看看剛剛寫出來的都是些什麼玩意兒吧。 系列文章 騰訊 tRPC-Go 教學——(1)搭建

騰訊 , HTTP , rpc , go

收藏 評論

宋子桓 - Go繼承和組合

轉載:原文鏈接 Golang是不支持繼承的,因此我們在使用的時候往往使用組合。那麼,組合與繼承有什麼區別呢?組合和繼承都是面向對象編程中重要的概念。繼承讓一個類獲得另一個類的屬性和方法,形成層級關係,子類可以重用父類的功能。而組合則是將一個類的對象作為另一個類的成員變量,實現代碼複用和模塊化。繼承建立的是"is-a"關係,表示一種類型的擴展;而組合則是"has-a"關係,表示對象之間的包含關係。相

oop , go

收藏 評論

潤雨冰雪 - 一次容器裏的殭屍進程排查

背景 “大棟老師”的一個應用,經常會有殭屍進程產生。程序的調用邏輯大概如下: 主進程A產生多個B類進程B1,B2,B3等,每一個B類進程又產生了若干個C類進程,C1,C2,C3,現象就是容器中會出現部分C進程的殭屍進程。 經過簡單的分析發現是一些B類進程先結束,導致一些C類進程成為殭屍進程。但是這個不符合常規的邏輯,因為正常情況下父進程如果結束,子進程會成為孤兒進程,從而被內核的1號進

bash , Docker , go

收藏 評論

後廠村村長 - go 通道-channel、協程-routine、sync

go 通道-channel、協程-routine、sync golang 裏不需要學習如何創建維護進程池/線程池,也不需要分析什麼情況使用多線程,什麼情況使用多進程,因為你沒得選。 當然,也不需要選。 go原生的 goroutine(協程)已足夠優秀,能自動幫你處理好所有事情,而你要做的只是執行它,so easy... goroutine 也是go天生支持高併發的底氣。 g

channel , sync , 協程 , go

收藏 評論

百度Geek説 - 千萬級高性能長連接Go服務架構實踐

作者 | glstr 導讀 移動互聯網時代,長連接服務成為了提升應用實時性和互動性的基礎服務。本文主要介紹了百度系內基於golang實現的統一長連接服務。主要從統一長連接功能實現和性能優化等角度,描述了統一長連接服務在設計、開發和維護過程中面臨的問題和挑戰,重點介紹瞭解決相關問題和挑戰的解決方案和實踐經驗。 全文7631字,預計閲讀時間20分鐘。 01 摘要 移動互聯網時代,用户對服務的

長連接 , 高併發 , 架構 , go

收藏 評論

潤雨冰雪 - 一次容器裏的殭屍進程排查2

前序 上次的排查,我們發現在容器裏golang進程作為1號進程的時候不具備等待孤兒進程退出狀態的能力,但是bash就可以,帶着這個問題,我們進一步研究。 尋找思路 我們再次看下維基百科對於殭屍進程的定義。 殭屍進程定義 對於裏面的內容,我們不逐字逐句分析,其中有一句話 子進程死後,系統會發送SIGCHLD信號給父進程,父進程對其默認處理是忽略。如果想響應這個消息,父進程通常在信號事件處理程序中,使

bash , Docker , go

收藏 評論

amc - 騰訊 tRPC-Go 教學——(3)微服務間調用

前兩篇文章(1、2),我構建了一個簡單的 HTTP 服務。 HTTP 服務是前後端分離架構中,後端最靠近前端的業務服務。不過純後台 RPC 之間,出於效率、性能、韻味等等考慮,HTTP 不是我們的首選。本文我們就來看看騰訊是怎麼使用 tRPG-Go 構建後台微服務集羣的。 本文我們將開始涉及 tRPC 的核心關鍵點之一: tRPC 服務之間如何互相調用 系列文章 騰訊 tRPC-Go 教

騰訊 , HTTP , rpc , go

收藏 評論

vistart - Golang 使用通道實現流程的暫停與繼續

Golang 中主流程要控制某個協程的暫停與繼續,需要兩個通道分別接收來自主流程的通知,並在協程中始終監聽這兩個通知。例如: package main import ( "fmt" "time" ) func main() { // 創建一個通道 chPause := make(chan struct{}) chResume := make(chan s

channel , 異步 , go

收藏 評論

vistart - Golang 如何監聽某個函數(方法)開始執行和執行結束

如果想監聽函數(方法)開始執行和執行結束,你需要設置兩個通道: chanStarted: 用於發送開始執行信號。 chanFinished: 用於發送執行結束信號。 同時,為了保證監聽方能實時得知“開始執行”或“執行結束”信號,需要在執行任務前開啓監聽。 以下為模擬監聽函數(方法)開始執行和執行結束的示例: package main import ( "context"

函數 , channel , 狀態 , 監聽 , go

收藏 評論

amc - 騰訊 tRPC-Go 教學——(4)tRPC 組件生態和使用

之前我花了三篇文章來介紹 tRPC 怎麼用。而 tRPC 給開發者帶來的便利, 在整整三篇文章中,我也只是介紹了它可以方便服務在 HTTP、trpc、grpc 三種協議之間靈活切換。誠然, tRPC 作為能夠統一騰訊內開發框架的一個生態級產品,它的能力顯然不止這些。這一篇文章,咱們來一起初窺 tRPC 的周邊生態有哪些, 以及其中的第三方組件使用方法。 系列文章 騰訊 tRPC-Go 教學—

騰訊 , HTTP , rpc , go

收藏 評論

vistart - Golang 中保存通道的 map 在設為 nil 後不會回收元素,即通道依然有效

Golang 中,如果用一個 map 保存實例化的通道,並用在協程間發送和接收。當該 map 被賦值為 nil 時,管理的通道依然有效。 示例代碼如下: package main import ( "fmt" "time" ) func main() { // 創建一個map用於保存通道 channelMap := make(map[string]chan in

channel , 垃圾回收 , 協程 , map , go

收藏 評論

vistart - Golang 中使用通道構建協程間的依賴關係(工作流)

假設有一組任務有前後依賴關係,我們可以使用Go的通道特性,將前一個任務的執行結果(或結束信號)送入下一個任務,已達到自動化依次執行工作流的每個任務的目的。 為了模擬這一工作流,我們假設有五個通道和四個協程,每個協程監聽前一個通道的數據,並將接收到的數據送入下一個通道中。 當任務執行結束後,最好能夠主動回收通道,已達到節省內存開銷的目的。與執行工作流類似的是,應當能做到關閉首個通道後,按照依賴關係連

channel , 協程 , 工作流 , go

收藏 評論

amc - 騰訊 tRPC-Go 教學——(5)filter、context 和日誌組件

本文咱們來介紹一下在 tRPC 中的 filter 機制、context 用法,以及在相關機制上可以實現的 tracing log 能力。 説實話,這一部份是我個人最不喜歡的 tRPC 的實現模式,不過這不妨礙咱們使用它——只要把它封裝成讓人更為舒服的模式也未嘗不可。 系列文章 騰訊 tRPC-Go 教學——(1)搭建服務 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力 騰

騰訊 , HTTP , rpc , go

收藏 評論

程序員新亮 - 如何基於 Gin 封裝出屬於自己 Web 框架?

思路 在基於 Gin 封裝出屬於自己的 Web 框架前,你需要先了解 Gin 的基本用法和設計理念。 然後,你可以通過以下步驟來封裝自己的 Web 框架: 封裝路由:Gin 的路由是通過 HTTP 方法和 URL 路徑進行匹配的,你可以根據自己的需求,封裝出符合應用的業務需求的路由。你可以考慮將路由進行分類,例如公共路由、私有路由等,以方便管理。 封裝中間件:Gin 提供了很多中間件,例如日

框架 , gin , go , 後端 , Web

收藏 評論

amc - 騰訊 tRPC-Go 教學——(6)服務發現

距離上一篇文章居然已經過去兩個月了,畢竟苦逼打工人忙得一點空都沒有…… 本文我們來講一講對於微服務架構來説,最重要的一個點了:服務發現及其對應的名字服務功能。 系列文章 騰訊 tRPC-Go 教學——(1)搭建服務 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力 騰訊 tRPC-Go 教學——(3)微服務間調用 騰訊 tRPC-Go 教學——(4)tRPC 組件生態和使用

騰訊 , HTTP , rpc , go , 後端

收藏 評論

tekin - go語言控制goroutine協程退出的2種方法總結

我們知道,在go語言中,goroutine的執行會隨着main線程的退出而終結, 即如果main線程退出,則所有的goroutine都會被強制退出,不管你是否已經執行完畢。 如果我們希望main進程等待所有的goroutine執行完畢後再退出,則可以有3種方式來實現,具體如下: 1. 使用go標準庫sync中提供的 sync.WaitGroup裏面提供的Add, Done, Wait方法; pac

goroutine , 方法 , 協程 , go , 總結

收藏 評論

編程碼農 - 學習Go語言併發編程

關於併發 Go 語言的創始人Rob Pike 曾説過:並行關乎執行,併發關乎結構。他認為: • 併發是一種程序設計方法:將一個程序分解成多個小片段,每個小片段獨立執行;併發程序的小片段之間可以通過通信相互協作。 • 並行是有關執行的,它表示同時進行一些計算任務。 程序小片段之間通訊不同語言實現不同,比如:傳統語言Java使用共享內存方式達到線程之間通訊,而Go語言channel來進行通

併發 , 併發編程 , go

收藏 評論