基础

服务器基础架构

从垂直到水平?

当性能收到限制,首先垂直扩展,尝试提高单机性能,提升到瓶颈后。尝试水平扩展,load balancer 通过 Round robin 返回要访问的服务器。

用户的状态,Session 要存在哪?

存在一个服务器都能访问的地方, load balancer(cookie 存一个 random id, 不能存ip 因为可能多台设备登录, 负载均衡通过 id 查找真正的服务器) 或者缓存(访问量大时,缓存会清除)。

磁盘挂了怎么办?

raid 可以保证两个挂了,其他还存有相同数据,可以恢复。

如果缓存服务器挂了怎么办?

主从复制,主从恢复。备份。

如何知道某个服务器挂了,如何通知其他服务器,某一台挂了?

心跳。流言。

优化方法

水平拓展

用户相关的数据应该存在都能访问的位置,Session 应该储存在可以被所有服务器访问的位置,最好是外部 cache。

数据库优化

分表, 反范式优化(减少 Join),主从结构, SQL 优化

直接使用 NoSQL, 如 mongoDB 减少 join

缓存

优化数据表查询速度。