Recent posts

系統的最後一道防線 Rate Limit 機制

category: random     1 minute read     Posted on:

The Guardian of the System 在之前的文章當中,我們討論了許多系統設計上優化的方法,包括在資料庫層級使用 Sharding 以及 Replica 技術使得系統能夠承受更大的負載,如何藉由 Cache 來提昇系統的效能 這些無疑都能夠讓系統擁有更高程度的高可用性 但它其實也都架不住惡意的攻擊...

資料庫 - 解耦助手 RabbitMQ

category: database     3 minute read     Posted on:

Prerequisites 有關 Message Queue 的相關概念可以參考 資料庫 - 從 Apache Kafka 認識 Message Queue | Shawn Hsu 本文會注重在 RabbitMQ 的部份

資料庫 - Autovacuum 在 PostgreSQL 中的重要性

category: database     6 minute read     Posted on:

MVCC(Multi-Version Concurrency Control) 為了盡量避免每次讀取資料庫的時候都要進行上鎖 MVCC 的機制被提出來,它主要允許每一筆 SQL statement 都能夠看到固定的快照 其他人的操作對你來說是不可見的 也就是說其實每個版本的操作都有被記錄下來

DevOps - 實作你自己的 GitHub Actions

category: devops     3 minute read     Posted on:

Implement Your Own GitHub Actions 定義一個客製化的 action 非常簡單,你只要指名 輸入, 輸出 以及 程式進入點 就可以了 而上述的資料必須寫在一個名為 action.yml(或 action.yaml) 當中就可以了

資料庫 - 機率型資料結構 Bloom Filter 在 Cache 中的應用

category: database     4 minute read     Posted on:

Cache Issues 就像我們在 資料庫 - Cache Strategies 與常見的 Solutions | Shawn Hsu 當中提到的 如果碰到惡意攻擊,查詢不在 cache 也不在 database 裡面的資料,那麼所有的請求都會直接到 database,然後又會直接被打爆 所以其實在這種狀況底下...

多開 Goroutine 的效能瓶頸以及 Garbage Collection 對其的影響

category: random     8 minute read     Posted on:

Preface Goroutine 作為 Golang 的一大特色 其輕量且快速的特性,使得其的開銷相比 process 以及 thread 要來的低上許多 因此人們往往會將 Goroutine 用在非同步的操作上,比如說 I/O 或者是 CPU-bound 的操作 用以達到併發的效果

Kubernetes 從零開始 - Pod 高級抽象 Workload Resources

category: kubernetes     4 minute read     Posted on:

High Level Abstraction 之前提到 Pod 是 Kubernetes 當中部署的最小單位,因為其設計關係(比如說容易被 reschedule 以及被刪除等等),是比較不適合直接操作的 因此 Kubernetes 提供了更高層次的抽象,讓我們可以更方便的管理 Pod 本文將會走過一遍這些更高階的...

Kubernetes 從零開始 - 你的 Volume 到底 Mount 到哪裡去了?

category: kubernetes     5 minute read     Posted on:

Introduction to Kubernetes Volume 從 Docker 的年代開始,掛載 host 的檔案系統不是什麼新鮮事 而 mount 的方式也很直覺,直接指定 host 的檔案路徑,你就能夠在 container 裡面存取相關的資料 到了 Kubernetes,也是有一樣的概念,但是 mou...

Kubernetes 從零開始 - 在分散式的世界實現 Zero Downtime 路由管理

category: kubernetes     8 minute read     Posted on:

Proxy Proxy 是一個中間人,負責處理 client 與 server 之間的溝通請求 相比於 client 直接與 server 溝通,Proxy 的優勢在於可以進行流量控制、負載平衡、安全性控制等 他可以分為兩類 Forward Proxy 以及 Reverse Proxy

Kubernetes 從零開始 - 細看 Netflix 極限壓榨性能的挑戰學習部署策略

category: kubernetes     11 minute read     Posted on:

Scaling Workloads 只有單台機器服務的情況下,多數是不足的 因為你需要考量到,比如說服務突然的不可用(軟體錯誤、硬體故障等等的),或者是流量真的大到一台機器處理不來的情況 這時候你就會需要用到 “scaling” 的概念