最近接觸到微服務(wù)框架go-zero,翻看了整個框架代碼致份,發(fā)現(xiàn)結(jié)構(gòu)清晰妈倔、代碼簡潔,所以決定閱讀源碼學習下疚察,本次閱讀的源碼位于core/syncx/singleflight.go...
最近接觸到微服務(wù)框架go-zero,翻看了整個框架代碼致份,發(fā)現(xiàn)結(jié)構(gòu)清晰妈倔、代碼簡潔,所以決定閱讀源碼學習下疚察,本次閱讀的源碼位于core/syncx/singleflight.go...
上篇文章提到固定時間窗口限流無法處理突然請求洪峰情況运褪,本文講述的令牌桶線路算法則可以比較好的處理此場景。 工作原理 單位時間按照一定速率勻速的生產(chǎn) token 放入桶內(nèi)狰右,直到...
如果你寫一個 bug 管理系統(tǒng)杰捂,用了這個 PeriodLimit 你就可以限制每個測試人員每天只能給你提一個 bug。工作是不是就輕松很多了棋蚌?:P 如今微服務(wù)架構(gòu)大行其道本質(zhì)...
什么是流處理 如果有 java 使用經(jīng)驗的同學一定會對 java8 的 Stream 贊不絕口嫁佳,極大的提高了們對于集合類型數(shù)據(jù)的處理能力。 Stream 能讓我們支持鏈式調(diào)用...
跌宕起伏的2021年快要過去了谷暮,今年對我來說經(jīng)歷的實在太多蒿往,提筆做個簡單的總結(jié)吧。 回顧目標 去年的年終總結(jié)湿弦,我給自己立了兩個flag瓤漏。 第一個雖然不可量化,不是一個好的目標...
為什么需要分布式鎖 用戶下單 鎖住 uid颊埃,防止重復下單蔬充。 庫存扣減 鎖住庫存,防止超賣班利。 余額扣減 鎖住賬戶娃惯,防止并發(fā)操作。分布式系統(tǒng)中共享同一個資源時往往需要分布式鎖來保...
為什么需要布隆過濾器 想象一下遇到下面的場景你會如何處理: 手機號是否重復注冊 用戶是否參與過某秒殺活動 偽造請求大量 id 查詢不存在的記錄肥败,此時緩存未命中,如何避免緩存穿...
為什么需要一致性哈希 首先介紹一下什么是哈希[https://baike.baidu.com/item/Hash/390310?fromtitle=%E5%93%88%E5%...
為什么需要降載 微服務(wù)集群中趾浅,調(diào)用鏈路錯綜復雜馒稍,作為服務(wù)提供者需要有一種保護自己的機制皿哨,防止調(diào)用方無腦調(diào)用壓垮自己,保證自身服務(wù)的高可用纽谒。 最常見的保護機制莫過于限流機制证膨,使...
為什么需要熔斷 微服務(wù)集群中,每個應用基本都會依賴一定數(shù)量的外部服務(wù)鼓黔。有可能隨時都會遇到網(wǎng)絡(luò)連接緩慢央勒,超時,依賴服務(wù)過載澳化,服務(wù)不可用的情況,在高并發(fā)場景下如果此時調(diào)用方不做任...
go-zero 實戰(zhàn)項目:blog 本文以 blog 的網(wǎng)站后臺為例崔步,著重介紹一下如何使用 go-zero 開發(fā) blog 的用戶模塊。 本文涉及的所有資料都已上傳 gith...
為什么需要超時控制井濒? 很多連鎖故障的場景下的一個常見問題是服務(wù)器正在消耗大量資源處理那些早已經(jīng)超過客戶端截止時間的請求,這樣的結(jié)果是,服務(wù)器消耗大量資源沒有做任何有價值的工作...
rest框架概覽 我們先通過 go-zero 自帶的命令行工具 goctl 來生成一個 api service瑞你,其 main 函數(shù)如下: 解析配置文件 將配置文件傳入酪惭,初始化...
自動聊天示例 聊天1: 聊天2: 這是基于200萬聊天記錄訓練出來的,你可以用自己和女朋友的記錄訓練了試試效果 :P 至于微信機器人怎么用者甲,你可以 GitHub 搜搜看哈 項...
延遲隊列:一種帶有 延遲功能 的消息隊列 延時 → 未來一個不確定的時間 mq → 消費行為具有順序性 這樣解釋春感,整個設(shè)計就清楚了。你的目的是 延時虏缸,承載容器是 mq甥厦。 背景...
什么是服務(wù)注冊發(fā)現(xiàn)? 對于搞微服務(wù)的同學來說寇钉,服務(wù)注冊刀疙、服務(wù)發(fā)現(xiàn)的概念應該不會太陌生。 簡單來說扫倡,當服務(wù)A需要依賴服務(wù)B時谦秧,我們就需要告訴服務(wù)A,哪里可以調(diào)用到服務(wù)B撵溃,這就是...
一疚鲤、什么是Http Client Http協(xié)議,是全互聯(lián)網(wǎng)共同的語言缘挑,而Http Client集歇,可以說是我們需要從互聯(lián)網(wǎng)世界獲取數(shù)據(jù)的最基本方法,它本質(zhì)上是一個URL到一個網(wǎng)...
背景 在選擇負載均衡算法時语淘,我們希望滿足以下要求: 具備分區(qū)和機房調(diào)度親和性每次選擇的節(jié)點盡量是負載最低的每次盡可能選擇響應最快的節(jié)點 無需人工干預故障節(jié)點當一個節(jié)點有故障時...
在 go-zero 的分布式緩存系統(tǒng)分享里诲宇,Kevin 重點講到過一致性hash的原理和分布式緩存中的實踐。本文來詳細講講一致性hash的原理和在 go-zero 中的實現(xiàn)惶翻。...
在 Golang 中的 map 結(jié)構(gòu),在刪除鍵值對的時候吕粗,并不會真正的刪除纺荧,而是標記。那么隨著鍵值對越來越多颅筋,會不會造成大量內(nèi)存浪費宙暇? 首先答案是會的,很有可能導致 OOM议泵,...