原创 類型安全的 Go HTTP 請求

前言 對 Gopher 來說,雖然我們基本都是在寫代碼讓別人來請求,但是有時候,我們也需要去請求第三方提供的 RESTful 接口,這個時候,我們才能感受到前端同學拼接 HTTP 請求參數的痛苦。 比如,我們要發起類似這樣一個請求,看起來很

原创 用 Go 快速開發一個 RESTful API 服務

何時使用單體 RESTful 服務 對於很多初創公司來說,業務的早期我們更應該關注於業務價值的交付,而單體服務具有架構簡單,部署簡單,開發成本低等優點,可以幫助我們快速實現產品需求。我們在使用單體服務快速交付業務價值的同時,也需要爲業務的發

原创 Go 項目配置文件的定義和讀取

前言 我們在寫應用時,基本都會用到配置文件,從各種 shell 到 nginx 等,都有自己的配置文件。雖然這沒有太多難度,但是配置項一般相對比較繁雜,解析、校驗也會比較麻煩。本文就給大家講講我們是怎麼簡化配置文件的定義和解析的。 場景 如

原创 簡單易懂的 Go 泛型使用和實現原理介紹

原文:A gentle introduction to generics in Go by Dominik Braun 萬俊峯Kevin:我看了覺得文章非常簡單易懂,就徵求了作者同意,翻譯出來給大家分享一下。 本文是對泛型的基本思想及其

原创 通過 SingleFlight 模式學習 Go 併發編程

最近接觸到微服務框架go-zero,翻看了整個框架代碼,發現結構清晰、代碼簡潔,所以決定閱讀源碼學習下,本次閱讀的源碼位於core/syncx/singleflight.go。 在go-zero中SingleFlight的作用是:將併發請求

原创 Go單體服務開發最佳實踐

單體最佳實踐的由來 對於很多初創公司來說,業務的早期我們更應該關注於業務價值的交付,並且此時用戶體量也很小,QPS 也非常低,我們應該使用更簡單的技術架構來加速業務價值的交付,此時單體的優勢就體現出來了。 正如我直播分享時經常提到,我們在

原创 進程內優雅管理多個服務

前言 在 go-zero 社區裏,經常會有同學問,把 API gateway 和 RPC service 放在同一個進程內可不可以?怎麼弄?有時也會有同學把對外服務和消費隊列放在一個進程內。咱們姑且不說此種用法合理與否,因爲各個公司的業務場

原创 從開發到部署微服務保姆級視頻教程

一、go-zero簡介及如何學go-zero https://www.bilibili.com/video/BV1LS4y1U72n 本節概述:本節對go-zero進行整體架構分析,以及我們該從哪些渠道獲取go-zero一手最新學習資料。

原创 Go 開發效率工具一覽圖

高清無碼圖 前幾天發了朋友圈,結果衆多好友告訴我,看不清,看不清。。。 所以,今日特奉上高清無碼大圖,一字不差,供大家慢慢消化。 原圖(7.1MB)奉上,拿走不謝! 額外福利 除了奉上高清無碼原圖外,還悄悄告訴你一個無敵技巧,輸入 goc

原创 構建 Go 應用 docker 鏡像的十八種姿勢

修煉背景 我夜以繼日,加班加點開發了一個最簡單的 Go Hello world 應用,雖然只是跑了打印一下就退出了,但是老闆也要求我上線這個我能寫出的唯一應用。 項目結構如下: . ├── go.mod └── hello.go hell

原创 Go 1.18 最強代碼自測方法!

特別說明:這個真的不是標題黨,我寫代碼20+年,真心認爲 go fuzzing 是我見過的最牛逼的代碼自測方法。我在用 AC自動機 算法改進關鍵字過濾效率(提升~50%),改進 mapreduce 對 panic 的處理機制的時候,都通

原创 微服務從代碼到k8s部署應有盡有大結局(k8s部署)

我們用一個系列來講解從需求到上線、從代碼到k8s部署、從日誌到監控等各個方面的微服務完整實踐。 整個項目使用了go-zero開發的微服務,基本包含了go-zero以及相關go-zero作者開發的一些中間件,所用到的技術棧基本是go-zero

原创 微服務從代碼到k8s部署應有盡有系列(十四、部署環境搭建)

1、概述 項目開發好後,我們需要部署,我們接下來就基於gitlab + jenkins + harbor + k8s 搭建部署環境 gitlab: 放代碼,可以做ci jenkins: 做cd發佈項目 harbor: 鏡像倉庫 k8s:

原创 微服務從代碼到k8s部署應有盡有系列(十三、服務監控)

我們用一個系列來講解從需求到上線、從代碼到k8s部署、從日誌到監控等各個方面的微服務完整實踐。 整個項目使用了go-zero開發的微服務,基本包含了go-zero以及相關go-zero作者開發的一些中間件,所用到的技術棧基本是go-zero

原创 微服務從代碼到k8s部署應有盡有系列(十二、鏈路追蹤)

我們用一個系列來講解從需求到上線、從代碼到k8s部署、從日誌到監控等各個方面的微服務完整實踐。 整個項目使用了go-zero開發的微服務,基本包含了go-zero以及相關go-zero作者開發的一些中間件,所用到的技術棧基本是go-zero