Skip to content

Latest commit

 

History

History
128 lines (95 loc) · 7.74 KB

Day30.md

File metadata and controls

128 lines (95 loc) · 7.74 KB

[Day30] FastAPI 系列:山重水複疑無路,柳暗花明又一村

來不及在 iThome 鐵人賽關版前寫完的文章

都會放放在 Github Repo 上,有興趣的可以自行閱讀 !

  • [Day31] : Event Driven 初探(1) 以 Redis 作為 Message Queue
  • [Day32] : Event Driven 初探(2) 以 Celery + Redis 作為可監控式 Message Broker
  • [Day33] 以 Redis 實作 Rate Limit Middleware

回顧

在 30 天的鐵人賽,我們完成了以下的內容

基礎功能

  • FastAPI 基本用法 : 以 FastAPI 來實作基本 RESTful API
  • Databse Injections : 以 SQLAlchemy 作為 ORM 來操作資料庫
  • 以 Pytest 撰寫 Unit Test 和 Benchmark
  • 以 Docker + Docker Compose 來部署專案

架構實作

  • OAuth2 + JWT 實作 : 以 OAuth2 + JWT 來實作登入機制
  • 以 Redis 作為 Server Side Cache : 實作 Key-Value Cache 和 Pagenation Cache
  • 實作 Primary Replica 架構 : 以 Read-Write Splitting 和 Read-Only Replica 來提升 Query 效能
  • 實作 Event Driven 架構 : 以 Celery + Redis 作為 Message Broker 來實作非同步任務
  • 實作 Rate Limit Middleware : 以 Redis 作為 Rate Limit 的資料儲存

在 Day01 ~ Day09 : 介紹 FastAPI 的基本用法

在 Day10 ~ Day16 : 在 FastAPI 中使用 SQLAlchemy 和 Depends injection

在 Day17 ~ Day20 : 實作 OAuth2 + JWT 登入機制

在 Day21 ~ Day23 : 以 Pytest 來撰寫 Unit Test 和 Docker Compose 來部署專案

在 Day24 ~ Day26 : 以 Redis 實作 Server Side Cache

在 Day27 ~ Day29 : 實作 Primary Replica 架構

在 Day31 ~ Day33 : Event Drive 與 Rate Limit 實作

來不及在 iThome 鐵人賽關版前寫完的文章
都會放放在 Github Repo 上,有興趣的可以自行閱讀 !

  • [Day31] : Event Driven 初探(1) 以 Redis 作為 Message Queue
  • [Day32] : Event Driven 初探(2) 以 Celery + Redis 作為可監控式 Message Broker
  • [Day33] 以 Redis 實作 Rate Limit Middleware

總結

原本是 10/16 就會結束的鐵人賽
其實到今天 ( 12/06 ) 才正式寫完 TAT


在開賽前,我其實只有囤不到 10 篇的文章
接下來都是盡可能一天生一篇

但是每篇包含 code 大概都落在 3000~5000 字
還有在新功能實作時,多少會遇到一些 bugs
後期的文章都只能拿以前的文章先貼上去


還有在最後 5 篇文章時,想不太到也寫什麼 ( 之前規劃的內容都寫完了 )
也花了快一兩週來看其他文章、學新技術、找主題


在實作也遇到蠻多出乎意料的問題

  • 在處理 async genrator 時:發現需要透過 asynccontextmanager 才能正確的 yield 出 AsyncSession
  • 以 Redis 實作 Pagenaion Cache 時:發現後端再處理資料合併時效率太低,用其他寫法才達到預期的效果
  • 實作 Primary Replica 架構時:發現以 random.choice 來選擇 Replica 會倒致效率低落,改用以 bitwise 實現 round-robin 才達到預期的效果

像是在處理 Pagenaion Cache 和 Primary Replica 架構問題時
都分別花 3 天到 1 週才通靈出關鍵點


在這兩個月的時間
除了正式完成 iThome 鐵人賽
也在 10 月打 NCPC 決賽ICPC 桃園站ITSA 決賽
11 月 在 MOPCON 講議程、參加 臺北程式節黑客松聽 Coldplay演唱會
是個非常充實的兩個月!

About Me

我是劉哲佑
目前就讀成大資工大二
目前往 Fullstack 偏 Backend + DevOps 的方向發展 !

Facebook LinkedIn Gmail