今日推荐的GitHub项目是「system-design-resources」,创建仅一天便收获了1.4k的Star。该项目收集了网络上最好的系统设计资源,涵盖了博客、论文、开源项目、视频资源。
项目地址:https://github.com/InterviewReady/system-design-resources
视频处理(Video Processing)
- 大规模转码视频:https://www.egnyte.com/blog/2018/12/transcoding-how-we-serve-videos-at-scale/
- Meta(原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
集群和工作流管理
- Meta(原Facebook)集群管理:https://engineering.fb.com/data-center-engineering/twine/
- 谷歌Autopilot-Autoscaling:https://dl.acm.org/doi/pdf/10.1145/3342195.3387524
- Netflix工作流编排:https://netflix.github.io/conductor/
- Opensource工作流管理:https://github.com/spotify/luigi
服务内消息传递
- 何为消息队列: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
- 数据库作为队列的反模式:http://mikehadlow.blogspot.com/2012/04/database-as-queue-anti-pattern.html
- 数据库作为队列的弊端: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
实用系统设计
- Meta(原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/
- 亚马逊S3性能黑客:https://aws.amazon.com/blogs/aws/amazon-s3-performance-tips-tricks-seattle-hiring-event/
- 亚马逊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
- Uber时间序列数据库:https://eng.uber.com/aresdb/
- 时间序列关系数据库:https://blog.timescale.com/blog/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c/
- Meta(原Facebook)Gorilla时间序列数据库:http://www.vldb.org/pvldb/vol8/p1816-teller.pdf
速率限制
- Circuit Breaker算法:https://martinfowler.com/bliki/CircuitBreaker.html
- Uber速率限制器: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://www.youtube.com/watch?v=U4ogK0MIzqk
订阅管理系统
- 订阅管理器: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 APIs: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
- 亚马逊Dynamo数据库内部:https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
- 亚马逊Dynamo数据库设计模式:https://www.youtube.com/watch?v=HaEPXoXVf2k
- 亚马逊Dynamo数据库内部: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数据库压实:https://github.com/scylladb/scylla/wiki/SSTable-compaction-and-compaction-strategies
- Cassandra索引:https://www.bmc.com/blogs/cassandra-clustering-columns-partition-composite-key/
数据库复制
- 数据库复制:ttps://dev.mysql.com/doc/refman/8.0/en/replication.html
- Netflix数据复制和变更数据捕获:https://netflixtechblog.com/dblog-a-generic-change-data-capture-framework-69351fb9099b
容器和Docker
- Meta(原Facebook)Twiner容器化: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
发布器订阅器(Pub Sub)
- 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
……
实时处理
- 领英Brooklin实时数据流:https://engineering.linkedin.com/blog/2019/brooklin-open-source
- Netflix实时流处理:https://netflixtechblog.com/keystone-real-time-stream-processing-platform-a3ee651812a
缓存
- 谷歌Guava缓存:https://github.com/google/guava/wiki/CachesExplained
- 缓存(参见README):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-n-p/dn589802(v%3dpandp.10)
本文暂时没有评论,来添加一个吧(●'◡'●)