后台需要考虑问题

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、海量数据如何提高读的效率

采用搜索技术,将数据库的数据导出到文件里,对文件建立索引,使用倒排序索引技术检索信息。

 

15、分布式缓存的实现原理
 
比如分布式缓存memcached,包含缓存集群,即多台服务器,缓存数据通过一定的算法均匀分布在不同的服务器上,如果用户A缓存服务器A上,那么服务器B上就没有用户A的缓存数据。
 
有一种算法是:根据key值计算出一个hash值,这个hash值再除以缓存服务器的个数,得到的余数对应不同的服务器。这样的算法如果一台服务器挂掉,损失的缓存数据不少。
 
还有一种算法是:一致性hash算法,可以让某台服务器宕机的时候对整个缓存数据影响最小。
 
16、什么时候采用数据库读写分离方案
当网站的读写比例严重失衡时候,采用读写分离方案。读写分离方案是一种低成本解决存储瓶颈的方案,但不是革命性方案。
 
17、硬盘机制与读写
大圆盘飞速旋转,有一个磁头不断扫描硬盘。
 
写操作在高并发情况下变得稍复杂,高并发情况下可能会出现多个用户修改同一条数据,为了保证数据被唯一的用户修改,就需要把并行的操作转变城串行的操作,这时候用到一个锁机制。锁机制会消耗系统性能。
 
读操作,读的性能也是硬盘顺序和速记读能力的体现。
 
18、为什么要引入缓存?
缓存将数据存在内存中,而内存的效率是硬盘效率的几万倍。
  
19、为什么要引入搜索技术?
当数据量很大的时候,模糊搜索用到了like操作,这时候like的效率极其低下,而搜索技术的随机访问性能更加高效。
 
20、拆分主库数据,垂直拆分和水平拆分
比如在电商系统里,商品表和交易表数据量会很大,这时候,可以把这两张表单独建在不同的数据库了,这就减轻了主库的压力,这种做法叫做数据库的垂直拆分。
 
如果单库单表的数据又很大,还可以把一张表的数据分布到不同的数据库中,这叫水平拆分。
posted @ 2018-04-28 16:58  超级驼鹿  阅读(308)  评论(0编辑  收藏  举报
/*