Using singleflight in Go language to solve Cache Hotspot Invalid

photo

The diagram above illustrates a commonly used architecture in implementing web services, which involves adding a cache between the service and the database to reduce the load on the database. However, when implementing service integration, three major cache problems are often encountered: Cache Avalanche, Hotspot Invalid, Cache Penetration. Among them, Cache Hotspot Invalid is a very common issue. When the data in the cache expires or disappears, a large number of requests will simultaneously hit the backend database, causing an excessive load on the database and even leading to database crashes, as shown in the diagram where the cache key of a certain article expires. This article will introduce how to use the singleflight built into the Go language to solve the Cache Hotspot Invalid problem. This is a feature in the sync package that can prevent duplicate requests from hitting the backend database simultaneously.

photo

[Read More]

在 Go 語言用 singleflight 解決快取擊穿 (Cache Hotspot Invalid)

photo

上圖是在實作 Web 服務時常用的架構,會在服務跟資料庫之間加上快取,以減少資料庫的負載。然而在實作服務串接時,常常會遇到快取三大問題:雪崩、擊穿、穿透,其中 Cache Hotspot Invalid (快取擊穿) 是一個非常常見的問題,當快取中的資料過期或消失時,大量的請求會同時打到後端資料庫,這會導致資料庫的負載過大,甚至會導致資料庫掛掉,如下圖某篇文章的 cache key 過期。這篇文章將會介紹如何使用 Go 語言內建的 singleflight 來解決快取擊穿的問題,這是 sync 套件中的一個功能,可以避免重複的請求同時打到後端資料庫。

photo

[Read More]

生成式 AI CodeGPT 開發經驗談 - 台北 ModernWeb

photo

很高興可以到台北 ModerWeb 分享『生成式 AI CodeGPT 開發經驗談』,沒想到這主題這麼多人有興趣,第一次遇到滿場的現象。這場主要講授在今年 3 月由我自己開源的 CodeGPT 工具,身為軟體工程師,每天都一定會寫 Commit Message,而此工具會針對修改的 Code Diff 進行閱讀,並給出一次性的 Commit Message,讓軟體工程師不用再煩惱該如何寫 Commit Message。大家可以看看上面的封面圖,就可以知道我每天需要花多少時間在寫有用可閱讀的 Commit。

[Read More]

Go 語言專案開發 Hot Reload 工具 - air

go

大家都知道 Go 語言的開發環境是非常的快速,但是如果你想要在開發的時候,修改程式碼後,自動重新編譯並且執行,這時候就需要一個 Hot Reload 工具,這邊介紹一個 air,這個工具可以幫助你在開發的時候,自動重新編譯並且執行。安裝及設定方式非常簡單,不用 10 分鐘就可以打造自動編譯的開發環境。

[Read More]

快速設定 Git Commit Signature Verification

git commit

大家可以看到上面這張圖的第一筆 commit 是有加上綠色框框的 Verified 標籤,這是因為我有設定 Git Commit Signature Verification,這樣的好處是可以確保每次的 commit 都是由我本人所做的,而不是其他人偽造的。這邊我們來看看如何設定 Git Commit Signature Verification。

[Read More]

加密檔案的好工具 - age

cover

Go 語言內的 age 軟體是一種開源的密碼學工具,用於加密和解密檔案。它主要用於保護敏感檔案或資料的隱私。它使用先進的加密標準,如 XChaCha20 和 Poly1305,以及 Scrypt 來加密和解密檔案。它還支持多種加密標準,如 RSA 和 Ed25519,以及多種密碼學工具,它還支持多種平台,如 Linux、Windows 和 macOS。為什麼我需要選擇這套工具呢?可以先從底下的流程圖來了解。

[Read More]

初探輕量級 DevOps 平台: Gitea - 台北 DevOpsDay

logo

今年非常幸運可以在台北 DevOpsDay 給一場『輕量級 DevOps 平台: Gitea Platform』,這次分享主要是介紹輕量級 DevOps 平台,並且改善開發流程,讓開發者可以更快速的部署到生產環境。如果你使用過 GitHub Actions,那 Gitea DevOps 平台你一定不要錯過。Gitea 團隊在 2022 年底開始打造讓 Gitea 可以像是 GitHub 一樣使用 GitHub Actions,詳細的內容可以參考這篇文章。底下讓我們來看看怎麼使用 Gitea DevOps 平台。

[Read More]

打造 MLOps 平台 改善 AI 模型開發流程 - 2023 台北雲端大會

logo

很高興今年可以在台灣雲端大會 (CloudSummit) 給一場『打造 MLOps 平台改善 AI 模型開發流程』。這次分享主要是介紹如何打造 MLOps 平台,並且改善 AI 模型開發流程,讓開發者可以更快速的部署模型到生產環境。這次是 CloudSummit 第一次到南港展覽二館,而我也是第一次坐高鐵到南港站。剛到會場真是讓我驚艷的是場地的規模,而且還有很多攤位,整體流線相對前幾年來比較,變得非常的通順,逛起攤位來非常的舒服。

[Read More]

使用 Colima 快速打造 Kubernetes 開發環境

logo

在學習新的技術項目,最麻煩的就是如何快速安裝相關環境,讓團隊同仁可以快速上手的最關鍵的原因之一。而學習 Kubernetes 也不例外,如果要在本地環境中搭建 Kubernetes 開發環境,需要安裝 DockerKubernetesMinikubeKubectl 等相關工具,這些工具的安裝和配置過程都比較繁瑣,而且容易出錯。能不能有快速地繞過這些方式,快速在自己的電腦打造 Kubernetes 開發環境呢?除了 Minikube,你可能也聽過 k3skind 等工具,不過這些工具對於新人來說,還是相當困難。今天要介紹的是一個新的工具 Colima,它可以讓您在本地環境中運行輕量級的虛擬機器,並在虛擬機器中運行 Kubernetes 叢集。

[Read More]

如何產生開發者 kubeconfig 設定檔

logo

產生 kubeconfig 檔案需要準備底下資訊

1
2
3
4
5
6
export KUBECONFIG=<path-to-kubeconfig-file>
export CLUSTER_NAME=<cluster-name>
export SERVER_URL=<server-url>
export CA_CERT=<path-to-ca-certificate>
export TOKEN=<token>
export USERNAME=<username>

<path-to-kubeconfig-file> 替換為要生成的 kubeconfig 檔案的路徑和名稱,例如 ~/mykubeconfig。將 <cluster-name> 替換為你的叢集名稱, <server-url> 替換為你的 Kubernetes API 伺服器的 URL, <path-to-ca-certificate> 替換為你的 CA 憑證的路徑和名稱, <username> 替換為你的使用者名稱,<token> 替換為你的身份驗證令牌(Access Token),透過底下指令就可以完成了

[Read More]