system-design-resources: 最好的系統設計英文資源

banq發表於2022-06-07

這些是 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/

相關文章