system-design-resources: 最好的系統設計英文資源
這些是 Internet 上系統設計的最佳資源。
影片處理
大規模轉碼影片:https ://www.egnyte.com/blog/2018/12/transcoding-how-we-serve-videos-at-scale/
Facebook 影片廣播:https ://engineering.fb.com/ios/under-the-hood-broadcasting-live-video-to-millions/
Netflix 大規模影片編碼:https ://netflixtechblog.com/high-quality-video-encoding-at-scale-d159db052746
Netflix 基於鏡頭的編碼:https ://netflixtechblog.com/optimized-shot-based-encodes-now-streaming-4b9464204830
叢集和工作流管理
Facebook 叢集管理:https ://engineering.fb.com/data-center-engineering/twine/
谷歌自動駕駛儀 - 自動縮放:https ://dl.acm.org/doi/pdf/10.1145/3342195.3387524
Netflix 工作流程編排:https ://netflix.github.io/conductor/
開源工作流管理:https ://github.com/spotify/luigi
元硬體管理:https ://engineering.fb.com/2020/12/09/data-center-engineering/how-facebook-keeps-its-large-scale-infrastructure-hardware-up-and-running/
服務內訊息傳遞
什麼是訊息佇列:https ://www.cloudamqp.com/blog/what-is-message-queuing.html
AirBnb 冪等性:https ://medium.com/airbnb-engineering/avoiding-double-payments-in-a-distributed-payments-system-2981f6b070bb
Nginx 服務網格:https ://www.nginx.com/learn/service-mesh/
訊息佇列反模式
資料庫作為佇列反模式:http: //blog.codepath.com/2012/11/15/asynchronous-processing-in-web-applications-part-1-a-database-is-not-a-queue/
使用資料庫作為訊息佇列:https ://softwareengineering.stackexchange.com/questions/231410/why-database-as-queue-so-bad
DB作為佇列的反模式:http: //mikehadlow.blogspot.com/2012/04/database-as-queue-anti-pattern.html
DB作為佇列的缺點:https ://www.cloudamqp.com/blog/why-is-a-database-not-the-right-tool-for-a-queue-based-system.html
服務網格
Kubernetes 服務網格:https ://akomljen.com/kubernetes-service-mesh/
Kubernetes Sidecar:https ://www.weave.works/blog/introduction-to-service-meshes-on-kubernetes-and-progressive-delivery
服務網格:https ://www.weave.works/blog/introduction-to-service-meshes-on-kubernetes-and-progressive-delivery
NginX 服務網格:https ://www.nginx.com/learn/service-mesh/
實用系統設計
Facebook Messenger 最佳化:https ://spectrum.ieee.org/how-facebooks-software-engineers-prepare-messenger-for-new-years-eve
YouTube 架構:http ://highscalability.com/youtube-architecture
YouTube 可擴充套件性 2012:https ://www.youtube.com/watch?v=w5WVu624fY8
分散式設計模式:http ://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html
單體到微服務: https ://martinfowler.com/articles/break-monolith-into-microservices.html
分散式檔案系統
開源分散式檔案系統:https ://docs.ceph.com/en/latest/architecture/
Amazon S3 效能駭客:https ://aws.amazon.com/blogs/aws/amazon-s3-performance-tips-tricks-seattle-hiring-event/
Amazon S3 物件到期:https ://aws.amazon.com/blogs/aws/amazon-s3-object-expiration/
時間序列資料庫
Pintrest 時間序列資料庫:https ://medium.com/pinterest-engineering/goku-building-a-scalable-and-high-performant-time-series-database-system-a8ff5758a181
優步時間序列資料庫:https ://eng.uber.com/aresdb/
TimeSeries 關聯式資料庫:https ://blog.timescale.com/blog/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c/
Facebook 大猩猩時間序列資料庫:http ://www.vldb.org/pvldb/vol8/p1816-teller.pdf
速率限制
斷路器演算法:https ://martinfowler.com/bliki/CircuitBreaker.html
優步限速器:https ://github.com/uber-go/ratelimit/blob/master/ratelimit.go
網路協議
什麼是 HTTP:https ://engineering.cred.club/head-of-line-hol-blocking-in-http-1-and-http-2-50b24e9e3372
QUIC 協議:https ://www.akamai.com/blog/performance/http3-and-quic-past-present-and-future
訂閱管理系統
訂閱管理器:https ://netflixtechblog.com/building-a-rule-based-platform-to-manage-netflix-membership-skus-at-scale-e3c0f82aa7bc
谷歌文件
操作轉換: http: //www.codecommit.com/blog/java/understanding-and-applying-operational-transformation
谷歌文件:https ://www.youtube.com/watch?v=uOFzWZrsPV0&list=PLXDe3d8o9VFtydBV5biyz9iS3WqKsBMD5&index=3
API 設計
API 設計:https ://medium.com/airbnb-engineering/building-services-at-airbnb-part-1-c4c1d8fa811b
Swagger API:https ://swagger.io/docs/specification/about/
NoSQL 資料庫內部結構
Cassandra 架構:https ://docs.datastax.com/en/archived/cassandra/3.0/cassandra/architecture/archIntro.html
谷歌 BigTable 架構:https ://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf
Amazon Dynamo 資料庫內部:https ://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
Amazon Dynamo DB 中的設計模式:https ://www.youtube.com/watch?v=HaEPXoXVf2k
Amazon Dynamo DB 的內部結構:https ://www.youtube.com/watch?v=yvBR71D0nAQ
NoSQL 資料庫演算法
Hyperloglog 演算法:https ://odino.org/my-favorite-data-structure-hyperloglog/
日誌結構化合並樹:https ://www.cs.umb.edu/~poneil/lsmtree.pdf
排序字串表和壓縮策略:https ://github.com/scylladb/scylla/wiki/SSTable-compaction-and-compaction-strategies
分級壓縮 Cassandra:https ://www.datastax.com/blog/leveled-compaction-apache-cassandra
Scylla DB 壓縮:https ://github.com/scylladb/scylla/wiki/SSTable-compaction-and-compaction-strategies
Cassandra 中的索引:https ://www.bmc.com/blogs/cassandra-clustering-columns-partition-composite-key/
資料庫複製
資料庫複製:https ://dev.mysql.com/doc/refman/8.0/en/replication.html
Netflix 資料複製 - 更改資料捕獲:https ://netflixtechblog.com/dblog-a-generic-change-data-capture-framework-69351fb9099b
LinkedIn 日誌記錄用例: https ://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
容器和 Docker
Facebook Twine 容器化:https ://engineering.fb.com/developer-tools/zookeeper-twine/
CloudFlare 容器化:https ://blog.cloudflare.com/cloud-computing-without-containers/
Docker 架構:https ://docs.docker.com/get-started/overview/docker-architecture
容量估算
谷歌容量估算:https ://www.youtube.com/watch?v=modXC5IWTJI
YouTube 2012 的可擴充套件性:https ://www.youtube.com/watch?v=G-lGCC4KKok
AWS 的信封背面計算:https ://www.youtube.com/watch?v=-3qetLv2Yp0
容量估計:http ://static.googleusercontent.com/media/research.google.com/en//people/jeff/stanford-295-talk.pdf
釋出者 訂閱者
Oracle 釋出者訂閱者:https ://docs.oracle.com/cd/B10501_01/appdev.920/a96590/adg15pub.htm
亞馬遜釋出訂閱訊息:https ://aws.amazon.com/pub-sub-messaging/
非同步處理: http: //blog.codepath.com/2013/01/06/asynchronous-processing-in-web-applications-part-2-developers-need-to-understand-message-queues/
非同步請求響應:https ://www.enterpriseintegrationpatterns.com/patterns/conversation/RequestResponse.html
事件驅動架構
Martin Fowler - 事件驅動架構:https ://www.youtube.com/watch?v=STKCRSUsyP0
事件驅動架構:https ://martinfowler.com/articles/201701-event-driven.html
六邊形架構
六邊形架構:https ://netflixtechblog.com/ready-for-changes-with-hexagonal-architecture-b315ec967749
微服務
單體架構:https ://buttercms.com/books/microservices-for-startups/should-you-always-start-with-a-monolith/
單體與微服務: https ://articles.microservices.com/monolithic-vs-microservices-architecture-5c4848858f59
微服務:http : //highscalability.com/blog/2018/4/5/do-you-have-too-many-microservices-five-design-attributes-th.html
Uber Nanoservices 反模式:https ://www.youtube.com/watch?v=kb-m2fasdDY
Uber 面向領域的微服務:https ://eng.uber.com/microservice-architecture/
負載均衡
具有粘性會話的負載均衡器:https ://stackoverflow.com/questions/10494431/sticky-and-non-sticky-sessions
Citrix 什麼是負載平衡:https ://www.citrix.com/en-in/solutions/app-delivery-and-security/load-balancing/what-is-load-balancing.html
Nginx 負載平衡:https ://www.nginx.com/resources/glossary/load-balancing/
一致雜湊:https ://michaelnielsen.org/blog/consistent-hashing/
警報和異常檢測
異常值檢測:https ://towardsdatascience.com/outlier-detection-with-isolation-forest-3d190448d45e
異常檢測:https ://towardsdatascience.com/machine-learning-for-anomaly-detection-and-condition-monitoring-d4614e7de770
Uber 實時監控和根本原因分析 Argos:https ://eng.uber.com/argos-real-time-alerts/
微軟異常檢測:https ://www.youtube.com/watch?v=12Xq9OLdQwQ&t=0s
Facebook 資料工程:https ://engineering.fb.com/2016/05/09/core-data/introducing-fblearner-flow-facebook-s-ai-backbone/
LinkedIn 實時警報:https ://engineering.linkedin.com/blog/2019/06/smart-alerts-in-thirdeye--linkedins-real-time-monitoring-platfor
LinkedIn 隔離林:https ://engineering.linkedin.com/blog/2019/isolation-forest
分散式日誌記錄
Uber 分散式請求跟蹤:https ://eng.uber.com/distributed-tracing/
Pintrest 日誌記錄:https ://medium.com/@Pinterest_Engineering/open-sourcing-singer-pinterests-performant-and-reliable-logging-agent-610fecf35566
谷歌監控基礎設施:https ://www.facebook.com/atscaleevents/videos/959344524420015/
指標和文字搜尋引擎
Facebook實時文字搜尋引擎:https ://www.facebook.com/watch/?v=432864835468
基於彈性搜尋時間的查詢:https ://www.elastic.co/guide/en/elasticsearch/guide/current/time-based.html
彈性搜尋聚合:https ://www.elastic.co/guide/en/elasticsearch/guide/current/aggregations.html
單點故障
避免單點故障:https ://medium.com/the-cloud-architect/patterns-for-resilient-architecture-part-3-16e8601c488e
Netflix 多區域可用性:https ://netflixtechblog.com/active-active-for-multi-regional-resiliency-c47719f6685b
Oracle 單點故障:https ://docs.oracle.com/cd/E19693-01/819-0992/fjdch/index.html
DNS 單點故障 2004:http ://www.tenereillo.com/GSLBPageOfShame.htm
分片:https ://medium.com/@jeeyoungk/how-sharding-works-b4dec46b3f6
基於位置的服務
谷歌 S2 庫:https ://blog.christianperone.com/2015/08/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve/
實時處理
LinkedIn Brooklin-實時資料流:https ://engineering.linkedin.com/blog/2019/brooklin-open-source
Netflix 實時流處理:https ://netflixtechblog.com/keystone-real-time-stream-processing-platform-a3ee651812a
快取
谷歌番石榴快取:https ://github.com/google/guava/wiki/CachesExplained
快取(參見自述檔案):https ://github.com/ben-manes/caffeine/
快取:http ://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html
微軟快取指南:https://docs.microsoft.com/en-us/previous-versions/msp-np/dn589802(v%3dpandp.10)
快取模式:https ://hazelcast.com/blog/a-hitchhikers-guide-to-caching-patterns/
分散式共識
Paxos:http: //ifeanyi.co/posts/understanding-consensus/
raft:https ://raft.github.io/
相關文章
- 讀資料工程之道:設計和構建健壯的資料系統14源系統
- IBM 使用 react 構建的開源設計系統IBMReact
- 資料庫:系統設計的核心資料庫
- vivo 自研Jenkins資源排程系統設計與實踐Jenkins
- 職工資訊管理系統的設計
- 資料庫系統設計概述資料庫
- 讀資料工程之道:設計和構建健壯的資料系統15源系統實際細節(上)
- 讀資料工程之道:設計和構建健壯的資料系統16源系統實際細節(下)
- Python中最簡最好的設計模式Python設計模式
- 大企程式設計師親身經歷告訴你,CRM系統,自己的才是最好的程式設計師
- 系統設計:設計Spotify
- 系統架構設計之-任務排程系統的設計架構
- 資訊系統設計速查表
- 資料庫系統設計:分割槽資料庫
- 系統設計面試參考-設計Spotify系統面試
- win10語言設為英文的方法_win10怎麼把系統語言更改為英文Win10
- 促銷系統的設計
- 秒殺系統的設計
- [系統設計]秒殺系統
- 讀資料工程之道:設計和構建健壯的資料系統12開源軟體
- 系統設計:如何設計Youtube?
- 計數系統設計
- 共享資源庫系統
- 成為最好的程式設計師的迷茫程式設計師
- Common Lisp物件系統是現存最好的物件系統? - mendhekarLisp物件
- 遊戲分享系統設計第二步:分享系統的設計遊戲
- 細談unity資源管理的設計Unity
- 支付系統設計:支付系統的賬戶模型模型
- 部落格系統 - 資料庫設計(三)資料庫
- 系統設計與普通設計思考的區別
- 系統程式設計程式設計
- 【系統設計】系統設計中經常使用的20個高階資料結構和演算法資料結構演算法
- 基於Hive進行數倉建設的資源後設資料資訊統計:Spark篇HiveSpark
- 基於Hive進行數倉建設的資源後設資料資訊統計:Hive篇Hive
- 收集 Kubernetes 資源統計資料的新工具
- PDM系統的結構設計
- 程式設計師大牛必備的英文詞彙程式設計師
- 說說ERP軟體的系統設計--開源軟體誕生8