本文是GitHub热门我的项目零碎设计入门的学习笔记第3篇,本篇介绍了StackOverflow的架构。参考文章:Stack Overflow: The Architecture - 2016 Edition。架构图如下:
The Internets
网络接入即图中最下面那一部分,简略来说,StackOverflow用了CloudFlare的DNS服务器,同时也有本人的DNS服务器。接入了4个ISP服务供应商,路由器也都是主/主复制的模式。
Load Balancers (HAProxy)
2台机器,用的是HAProxy做负载平衡,SSL也到这一层终止。机器内存较大用于缓存TLS会话。
Web Tier
这一层是11台Web服务器,其中有2台是dev测试的。
Service Tier
与Web Tier相似,提供的是外部的Web服务。
Cache & Pub/Sub (Redis)
Master/Slave的Redis集群,保留HTTP缓存(之前的服务器中有local缓存)。Protobuf格局。本人开发的Redis客户端。
Search (Elasticsearch)
专门给搜寻设置的服务器。每个数据中心都是一个3节点的集群。
Databases (SQL Server)
2个SQL集群,外面的各个机器按地区离开。