惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

Nic Lin's Blog

謝明真 - 高效領導力的課後筆記 NFT 開發實戰!基礎智能合約入門 (3) NFT 開發實戰!基礎智能合約入門 (2) NFT 開發實戰!基礎智能合約入門 (1) 如何自我檢測 log4j CVE 漏洞 Rails 如何在資料寫入時記錄來源 IP 位置 如何經營工程師 Youtube 頻道 - Part 8 營收篇 如何經營工程師 Youtube 頻道 - Part 7 酸民文化篇 如何經營工程師 Youtube 頻道 - Part 5 設備器材篇 如何經營工程師 Youtube 頻道 - Part 4 後製剪輯篇 如何經營工程師 Youtube 頻道 - Part 3 文案企劃篇 如何經營工程師 Youtube 頻道 - Part 2 設備器材篇 如何經營工程師 Youtube 頻道 - Part 1 制訂頻道方向篇 如何經營工程師 Youtube 頻道 - Part 0 Rails 中避免 race condition 的最佳實踐(二) Rails 中避免 race condition 的最佳實踐(一) 10 分鐘整合 google sheet 做自動化開發功能週報 經營 Side Project 300 天所帶來的收穫及挑戰 我的 Youtube 影片製作流程 API 設計時必須注意的 HTTP header 底線問題 如何提升你的程式可讀性之實務技巧(三) 如何提升你的程式可讀性之實務技巧(二) 如何提升你的程式可讀性之實務技巧(一) Ruby 中使用 freeze 優化效能的時機 避免 React 中的 useEffect 無限 render 在 Rails 內輕量使用 Vue Component 的最佳實踐 如何在區域網路用 Docker 架設有 SSL 的 Gitlab 從被問到問人,那些我常問的面試問題 [Rails] 如何漂亮寫出可維護的 query (Maintainable Rails Query) 在已知長度情況下優化 slice 的性能
一般架構需要用到 K8S 嗎
Nic Lin · 2018-12-08 · via Nic Lin's Blog

基本架構

一般服務通常都是

1 db + 多 web app + load balance

通常稍微有一點經驗的 devops 都可以用 aws 組起來維護,非常適用新創公司。

大規模架構

然而當業務開始驅動技術時,例如業務量增長,流量逐漸變大時。

db 通常會先做垂直拓展(規格開大),但水平拓展就比較不容易

水平拓展通常會是遇到「巨量資料」時採取的手段,以一般新創的業務量來說基本上短期都不需要擔心。

這部分要先研究遇到的業務量是屬於「大量讀取」還是「大量寫入」

如果是大量讀取,透過一般關聯型資料庫做垂直拓展,配合緩存應該就可以有不錯的發揮。

如果是大量寫入,就會比較適合水平拓展,不過水平拓展後通常會增加開發複雜度

何謂大量?

可以參考大眾點評系統的設計,資料量可是到了 200 G 呢 XD

K8S 無狀態

在 K8S 裡面的容器都應該是無狀態的,無狀態意味著就算某一個服務掛掉,重新啟動或在建一個容器都能夠正常上線運作

但 DB 狀態都是持久化,基本上這是對 k8s 無狀態體系架構提出的挑戰,無論是複製或是擴展都要維護當前的 Data 和 Transactions,這裡會需要較高的學習成本。

所以如果 db 包在 docker, 要怎麼做 migration ? 要怎麼調整效能? 會是比較麻煩的問題

總結

看過 facebook backend 版上面的討論總結結果

  • 建議 db 只有 2-3 台都不需要 docker 化,只會搞死自己而已
  • 整個服務的架構 docker 沒有超過 10 個也不需要做到 k8s