后台需要考虑问题
1、Session机制
→服务端Session被包含在Web容器里,存储在内存中
→Web容器给每一个连接生成一个sessionid值
→服务端Web容器把sesssionid值放置到http协议的cookie中
→客户端接收响应,并把来自服务端的sessionid值保存到本地
→客户端再次发送请求,把sessionid放在cookie中传递给服务端
→服务端通过sessionid找到内存中存储的该用户
2、如何保持不同服务器间的Session同步
让服务器之间的Session不断复制和传递。
3、是否服务器越多,支持的并发数也越多?
不一定。web应用所能承载的并发数不是简单地随着服务器的增加而线性提升的,当服务器的数量达到一个临界值后,整个web应用的并发数还会下降。
因为,不同服务器之间的Session传递和复制本身也消耗服务器资源,当服务器数量越多,消耗的资源也越多,当用户请求越多,系统消耗的资源也越大。
4、独立缓存服务器
将Session的数据保存在一台服务器上,如果一台服务器不安全,可以使用memcached这样的分布式缓存服务器。
5、把Session存储到浏览器的Cookie中
早起的淘宝用了这个策略,因为只是跟踪用户的状态。
6、负载均衡硬件
将用户的请求均匀分布到服务器集群。
7、负载均衡软硬解决方案
不仅可以将请求均匀分布,还可以根据sessionid值找到对应的后台服务器。虽然这种做法比不同服务器间拷贝传递Session高效,但比存cookie效率低下,如果某台服务器挂了,那连接到该服务器的用户会话都会失效。
8、云平台的负载均衡和Session同步
好的云服务器会帮助我们解决负载均衡和Session同步,但也要做好数据备份。
9、何时使用SOA分布架构
如果通过添加几台服务器就能解决问题,就不需要考虑分布式架构。
10、网站按读写分类
有些企业网站、专业类网站,操作的部分大于展示的部分,写大于读。而像百度这样的网站,读大于写。
11、数据库读写分离
一个数据库负责写,称为主库。一个数据库负责读,称为副库。副库的数据都是从主库导入的。浏览器数据的时候有点延迟。主库也有一个读的压力,就是主库和副库的数据同步。
12、分布式缓存
对读数据进行分离,把经常不变化的分类放到缓存里。
13、对数据操作的合并
facebook对数据的任何操作都是事先合并为批量操作,以减轻数据库压力。
14、海量数据如何提高读的效率
采用搜索技术,将数据库的数据导出到文件里,对文件建立索引,使用倒排序索引技术检索信息。