原创 負載均衡原理分析與源碼解讀

上一篇文章一起學習了Resolver的原理和源碼分析,本篇繼續和大家一起學習下和Resolver關係密切的Balancer的相關內容。這裏說的負載均衡主要指數據中心內的負載均衡,即RPC間的負載均衡。 傳送門 服務發現原理分析與源碼解讀 基

原创 服務發現原理分析與源碼解讀

在微服務架構中,有許多繞不開的技術話題。比如服務發現、負載均衡、指標監控、鏈路追蹤,以及服務治理相關的超時控制、熔斷、降級、限流等,還有RPC框架。這些都是微服務架構的基礎,只有打牢這些基礎,纔敢說對微服務是有了一點理解,出門也好意思和別人

原创 五分鐘給你的 gRPC服務 加上 HTTP 接口

gRPC 服務要加 HTTP 接口? go-zero 給大家帶來極簡的 RESTful 和 gRPC 服務開發體驗的同時,社區又給我們提出了新的期望: 我想只寫一次代碼 既要 gRPC 接口 也要 HTTP 接口 既要。。。也要。。。

原创 go-zero微服務實戰系列(十一、大結局)

本篇是整個系列的最後一篇了,本來打算在系列的最後一兩篇寫一下關於k8s部署相關的內容,在構思的過程中覺得自己對k8s知識的掌握還很不足,在自己沒有理解掌握的前提下我覺得也很難寫出自己滿意的文章,大家看了可能也會覺得內容沒有乾貨。我最近也在學

原创 go-zero微服務實戰系列(十、分佈式事務如何實現)

在分佈式應用場景中,分佈式事務問題是不可迴避的,在目前流行的微服務場景下更是如此。比如在我們的商城系統中,下單操作涉及創建訂單和庫存扣減操作兩個操作,而訂單服務和商品服務是兩個獨立的微服務,因爲每個微服務獨佔一個數據庫實例,所以下單操作就涉

原创 go-zero微服務實戰系列(九、極致優化秒殺性能)

上一篇文章中引入了消息隊列對秒殺流量做削峯的處理,我們使用的是Kafka,看起來似乎工作的不錯,但其實還是有很多隱患存在,如果這些隱患不優化處理掉,那麼秒殺搶購活動開始後可能會出現消息堆積、消費延遲、數據不一致、甚至服務崩潰等問題,那麼後果

原创 go-zero微服務實戰系列(八、如何處理每秒上萬次的下單請求)

在前幾篇的文章中,我們花了很大的篇幅介紹如何利用緩存優化系統的讀性能,究其原因在於我們的產品大多是一個讀多寫少的場景,尤其是在產品的初期,可能多數的用戶只是過來查看商品,真正下單的用戶非常少。但隨着業務的發展,我們就會遇到一些高併發寫請求的

原创 go-zero微服務實戰系列(七、請求量這麼高該如何優化)

前兩篇文章我們介紹了緩存使用的各種最佳實踐,首先介紹了緩存使用的基本姿勢,分別是如何利用go-zero自動生成的緩存和邏輯代碼中緩存代碼如何寫,接着講解了在面對緩存的穿透、擊穿、雪崩等常見問題時的解決方案,最後還重點講解了如何保證緩存的一致

原创 詳解連接池參數設置(邊調邊看)

你有同感嗎? 當大家在開發服務端代碼的時候,會不會經常有如下疑問? 納悶 MySQL 連接池到底有多少連接? 每個連接的生命週期持續多久? 連接異常斷開的時候到底是服務端主動斷的,還是客戶端主動斷的? 當長時間沒有請求的時候,底層庫是否有

原创 go-zero微服務實戰系列(五、緩存代碼怎麼寫)

緩存是高併發服務的基礎,毫不誇張的說沒有緩存高併發服務就無從談起。本項目緩存使用Redis,Redis是目前主流的緩存數據庫,支持豐富的數據類型,其中集合類型的底層主要依賴:整數數組、雙向鏈表、哈希表、壓縮列表和跳錶五種數據結構。由於底層依

原创 go-zero微服務實戰系列(四、CRUD熱熱身)

上一篇文章我們把整個項目的架子搭建完成,服務在本地也已經能運行起來了,順利成章的接下來我們就應該開始寫業務邏輯代碼了,但是單純的寫業務邏輯代碼是比較枯燥的,業務邏輯的代碼我會不斷地補充到 lerbon 項目中去,關鍵部分我也會加上註釋。 那

原创 go-zero微服務實戰系列(三、API定義和表結構設計)

前兩篇文章分別介紹了本系列文章的背景以及根據業務職能對商城系統做了服務的拆分,其中每個服務又可分爲如下三類: api服務 - BFF層,對外提供HTTP接口 rpc服務 - 內部依賴的微服務,實現單一的業務功能 rmq服務 - 負責流式任

原创 go-zero 微服務實戰系列(二、服務拆分)

微服務概述 微服務架構是一種架構風格,它將一個大的系統構建爲多個微服務的集合,這些微服務是圍繞業務功能構建的,服務關注單一的業務功能,這些服務具有以下特點: 高度可維護和可測試 鬆散的耦合 可獨立部署 圍繞業務功能進行構建 由不同的小團隊

原创 go-zero 微服務實戰系列(一、開篇)

前言 在社區中經常看到有人問有沒有基於 go-zero 的比較完整的項目參考,該類問題本質上是想知道基於 go-zero 的項目的最佳實踐。完整的項目應該是一個完整的產品功能,包含產品需求、架構設計、關鍵流程的編碼、表設計以及各種性能優化和

原创 微服務效率工具 goctl 深度解析(上)

前言 本文根據 安前松 的視頻分享整理而來,視頻回放地址如下: https://www.bilibili.com/video/BV1Hr4y1x7Ne goctl 的由來 1. goctl 的誕生 goctl 的最早功能是爲了解決 GRPC