大型网站系统——之一:大型网站及其架构演进

如果要将一个应用服务器变为集群,我们需要考虑的问题如下:

1. session共享的问题;

① Session Sticky;负载均衡器能够根据每次请求的会话标识来进行请求转发;

② Session Replication;在我们的web服务器之间则增加了会话数据的同步,通过同步就保证了不同Web服务器之间的Session数据的一致;如果只有几台机子,可以选用此方案;

③ Session数据集中存储;把Session数据集中存储起来,然后不同Web服务器从同样的地方来获取Session;

④ Cookie Based;我们的Session数据是放到Cookie中,然后在Web服务器上从Cookie中生成对应的Session数据;

总结:这4种方案都是可用的方案,不过对于大型网站来说,Session Sticky 和 Session数据集中存储是比较好的方案;

2. 数据压力变大,读写分离吧;

① 搜索引擎其实是一个读库;

大型网站系统——之一:大型网站及其架构演进

② 加速数据读取的利器——缓存

A 数据缓存

大型网站系统——之一:大型网站及其架构演进

B 页面缓存

 ESI 分两种:

  大型网站系统——之一:大型网站及其架构演进

大型网站系统——之一:大型网站及其架构演进

③ 弥补关系型数据库的不足,引入分布式存储系统

分布式文件系统,分布式Key-Value系统和分布式数据库;

3. 由于数据库大,主库遇到瓶颈;可采用数据垂直和水平拆分两种选择;

① 垂直拆分;把数据库中不同的业务数据拆分到不同的数据库中;

② 水平拆分:把同一个表中的数据拆分到两个数据库中;(此方案注意主键问题)

4. 拆分应用;

① 根据业务的特性把应用拆开;

② 服务化;(就是微服务化)

5. 使用消息中间件;

好处:异步和解耦;

总结:

来张全家福

大型网站系统——之一:大型网站及其架构演进