【微服务】StackOverflow的架构解密
@TOC
推荐超级课程:
StackOverflow 是资源需求量最大的网站之一。我们作为架构师,在进行各种微服务架构的实践的同时,也需要学习借鉴各个成熟实践的精华。 因此本文,我们将了解学习一下作为世界级流量最大之一的网站StackOverflow网站的架构设计。
架构基础设施
StackOverflow 逆着微服务趋势而行,使用极其高效的整体架构和最少的基础设施,平均延迟为 18 毫秒,在其 200 个站点中每月处理 13 亿次页面浏览量。整个服务由以下组件组成:
- 9 个 Web 服务器托管在 3 个数据中心。
- 1- 具有备用的 HAP 代理。
- 1- Redis 及其从属设备。
- 1- 备用 SQL 数据库。
- 3-弹性搜索引擎。
需要注意的一件事是“组件是整体式的意味着它们无法扩展,因此服务器必须使用给定的资源来管理所有负载”。
网络服务器
仅使用 9 个本地 IIS Web 服务器。
每台服务器都有 64 GB RAM 并运行高度优化的 .NET 代码。
每台服务器每秒处理 450 个峰值请求,CPU 使用率仅为 12%。
代码最大限度地减少内存分配以限制垃圾收集。
SQL 服务器
组织成 2 个故障转移集群,每个集群有 2 台服务器。
第一个集群:每台服务器 1.5 TB RAM。
第二个集群:每台服务器 768 GB RAM。
大约三分之一的问答数据集驻留在内存中。
每个集群每秒处理超过 10,000 个峰值查询,CPU 利用率约为 15%。
Redis
带有一个副本的单个 256GB 主服务器。
以 2% CPU 处理每秒 60000 次峰值操作。
一些使 StackOverflow 系统变得强大的功能:
- 通过分布式数据中心托管的多台服务器以及具有热备份功能的数据库等功能确保可用性。
- 通过 HAProxies 负载平衡、Redis 缓存以及 ElasticSearch Engine 快速搜索等功能确保性能。