iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

系統設計一招一式:最基本的功練到爛熟就是殺手鐧,從單體架構到分布式系統的 Lab 實作筆記 系列

從 ChatGPT 問世以來聽到太多「軟體工程師已死」的雜訊,但就我看來並非如此,AI 當然會在不久的將來取代掉一部分軟體開發的需求,然而這正代表著軟體工程師思維迭代的契機,以往需要捲起袖子幹的「髒活」由 AI 代勞後,我們有更多的時間與精力來做更高層次的規劃、設計。因此,身為介於 Junior to Mid-level SE 的我,必須及早開始培養系統設計的素養,成為不會被時代淘汰的軟體工程師。這次的參賽目的旨在內化面試常見的系統設計經典案例,期許自己不僅可以熟知書中的理論知識,也可將基礎卻必要的組件實作出來,並且融會貫通、知曉其背後的脈絡與推演邏輯。

參賽天數 12 天 | 共 12 篇文章 | 6 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 1 | 賽前規劃&限流器 Lab 1 實作:固定窗口限流算法

前言 Hello,大家好,我是一名年資屆滿兩年的後端工程師,今年是首次參加 iThome 的鐵人賽,剛好最近開始為了年底的面試在做準備,希望藉由這個機會帶來更大...

2025-08-22 ‧ 由 y___che 分享
DAY 2

Day 2 | 限流器 Lab 2 實作:滑動窗口計數器&設計模式

回顧 延續上回 Lab 1 的實作,我們已經創建了一套最基本、用固定窗口計數算法實現的限流器,從過程中可以得知固定窗口是個十分簡單、易於快速開發的算法,但它的局...

2025-08-23 ‧ 由 y___che 分享
DAY 3

Day 3 | 限流器 Lab 3 實作:Token Bucket

前言 前兩天我們已經實作完「固定窗口」跟「滑動窗口」計數器這兩個好兄弟了,接下來要實作的 Token Bucket 以及 Leaky Bucket 從根本的設計...

2025-08-24 ‧ 由 y___che 分享
DAY 4

Day 4 | 限流器 Lab 4 實作:Leaky Bucket&流量整形

前言 前一篇提到了跟時間窗口特色迥異的 Token Bucket 算法,今天要來介紹的是另一個 Bucket 算法,Leaky Bucket 實作起來跟 Tok...

2025-08-25 ‧ 由 y___che 分享
DAY 5

Day 5 | 限流系統實作前導:微服務架構下 RequestContext 基礎管理

前言 到了第五天終於把前面開頭幾個限流算法介紹並實作完了,其實實作到一半時有點心虛,覺得是不是應該要把重點放在系統架構的設計,而不是太 Detail 的算法邏輯...

2025-08-26 ‧ 由 y___che 分享
DAY 6

Day 6 | 限流器 Lab 實作:搭建 Filter 實作 RequestContext 基礎信息管理

回顧 經過上一篇文章我們了解到在微服務的架構下,統一管理請求基本信息的重要性,在 API Gateway 提取請求信息並妥善管理可以大大降低業務邏輯實作的複雜度...

2025-08-27 ‧ 由 y___che 分享
DAY 7

Day 7 | 限流器實作:Redis 實現分散式限流策略之前導

前言:現有單體架構的侷限 我們目前架構使用的 MemoryRateLimiterStorage 計數器,所有的限流狀態、計次,都存在 JVM 的記憶體中: pr...

2025-08-28 ‧ 由 y___che 分享
DAY 8

Day 8 | 限流器實作:在 SpringBoot 系統中配置 Redis Client

前言 今天我們將實作如何從零開始配置 Redis Client 到 SpringBoot 模組。現在目前使用 JVM 記憶體儲存實現限流功能,接下幾天將整合 R...

2025-08-29 ‧ 由 y___che 分享
DAY 9

Day 9 | 限流器實作:測試限流計數共享|運行兩個實例

前言 昨天我們已經在 SpringBoot 專案內完成了 Redis Client 的基本配置,今天實際用固定窗口計數器來整合 Redis 分散式儲存限流計數的...

2025-08-30 ‧ 由 y___che 分享
DAY 10

Day 10 | 推送系統實作前導&十日回顧

回顧 今天是鐵人賽的第 10 天,老實說從決定報名那刻起就沒覺得這是一件輕鬆的事,還沒寫以前不會知道剛開始定的內容實際寫起來的範圍會是多少,原本還想做 4 種系...

2025-08-31 ‧ 由 y___che 分享