内容来着《收割Offer》

以笔者在网易的工作内容云音乐-游戏中心为例,展开描述一个“麻雀虽小,五脏俱全”的系统,主要目的是向读者展示搭建一个完整的后端工程通常会使用到的中间件有哪些,在后续的工作中也可以有针对性地进行学习,让自己拥有全局视角。一个完整的后端系统分为接入层、业务层和数据存储层,如图5-1所示。

image.png

图5-1 游戏中心后端架构

5.1 接入层(Nginx与网关)

1 Nginx

当客户端发起一个HTTP请求后,该请求会先到达HTTP DNS(防劫持),之后再落到两个机房的Nginx上。这里有一个静态资源缓存模块,叫作Nginx cache。它能够减少后端服务器的压力,并且在后端服务故障时还能对已缓存的请求返回正确的数据。

2 网关(API Gateway)

请求到网关层,网关将HTTP请求转换为一个更高效的基于长连接的RPC协议调用后端工程。这样做主要解决的痛点是由于API数量众多且命名不规范,Nginx路由配置匹配规则极其复杂,因此加入的新接口在修改路由规则时稍有不慎将导致其他应用接口不可访问(现在是应用启动时自动上报服务路由信息至ZooKeeper,获取映射关系)。同时Gateway支持客户端的批量API调用(把多个HTTP请求包装成一个),比如当客户端加载游戏列表的时候,可能同时会调用多个API获取数据,如果每个API都调用一次HTTP接口建立客户端到服务器端的连接,那么可能会导致连接数过多、处理时间较长、不能及时释放等问题。此外,网关还有很多其他的基础能力。

3 BFF