系統的最後一道防線 Rate Limit 機制
The Guardian of the System 在之前的文章當中,我們討論了許多系統設計上優化的方法,包括在資料庫層級使用 Sharding 以及 Replica 技術使得系統能夠承受更大的負載,如何藉由 Cache 來提昇系統的效能 這些無疑都能夠讓系統擁有更高程度的高可用性 但它其實也都架不住惡意的攻擊...
The Guardian of the System 在之前的文章當中,我們討論了許多系統設計上優化的方法,包括在資料庫層級使用 Sharding 以及 Replica 技術使得系統能夠承受更大的負載,如何藉由 Cache 來提昇系統的效能 這些無疑都能夠讓系統擁有更高程度的高可用性 但它其實也都架不住惡意的攻擊...
Prerequisites 有關 Message Queue 的相關概念可以參考 資料庫 - 從 Apache Kafka 認識 Message Queue | Shawn Hsu 本文會注重在 RabbitMQ 的部份
MVCC(Multi-Version Concurrency Control) 為了盡量避免每次讀取資料庫的時候都要進行上鎖 MVCC 的機制被提出來,它主要允許每一筆 SQL statement 都能夠看到固定的快照 其他人的操作對你來說是不可見的 也就是說其實每個版本的操作都有被記錄下來
Implement Your Own GitHub Actions 定義一個客製化的 action 非常簡單,你只要指名 輸入, 輸出 以及 程式進入點 就可以了 而上述的資料必須寫在一個名為 action.yml(或 action.yaml) 當中就可以了
Cache Issues 就像我們在 資料庫 - Cache Strategies 與常見的 Solutions | Shawn Hsu 當中提到的 如果碰到惡意攻擊,查詢不在 cache 也不在 database 裡面的資料,那麼所有的請求都會直接到 database,然後又會直接被打爆 所以其實在這種狀況底下...
Preface Goroutine 作為 Golang 的一大特色 其輕量且快速的特性,使得其的開銷相比 process 以及 thread 要來的低上許多 因此人們往往會將 Goroutine 用在非同步的操作上,比如說 I/O 或者是 CPU-bound 的操作 用以達到併發的效果
High Level Abstraction 之前提到 Pod 是 Kubernetes 當中部署的最小單位,因為其設計關係(比如說容易被 reschedule 以及被刪除等等),是比較不適合直接操作的 因此 Kubernetes 提供了更高層次的抽象,讓我們可以更方便的管理 Pod 本文將會走過一遍這些更高階的...
Introduction to Kubernetes Volume 從 Docker 的年代開始,掛載 host 的檔案系統不是什麼新鮮事 而 mount 的方式也很直覺,直接指定 host 的檔案路徑,你就能夠在 container 裡面存取相關的資料 到了 Kubernetes,也是有一樣的概念,但是 mou...
Proxy Proxy 是一個中間人,負責處理 client 與 server 之間的溝通請求 相比於 client 直接與 server 溝通,Proxy 的優勢在於可以進行流量控制、負載平衡、安全性控制等 他可以分為兩類 Forward Proxy 以及 Reverse Proxy
Scaling Workloads 只有單台機器服務的情況下,多數是不足的 因為你需要考量到,比如說服務突然的不可用(軟體錯誤、硬體故障等等的),或者是流量真的大到一台機器處理不來的情況 這時候你就會需要用到 “scaling” 的概念