电商平台学习笔记(五)——整体网站架构分析

Posted on 2016-04-04 15:28  Iltxy  阅读(270)  评论(0)    收藏  举报

  首先,我们看看网站的整体:

  如上图所示,在高并发还在可接受范围的情况下,整个示意图还是非常清楚明了的!在接着负载均衡服务器(主要负责转发,故障移除和回复增加功能)将用户请求转发到具体的服务器上,最后访问数据库提取数据返回给用户!而后面的Hadoop服务器是进行大数据计算用的!比如说,现在电商网站的商品的推送等等!Hadoop服务器并将最终的计算结果储存到另外一台数据库服务器上,最后其他服务器从数据服务器中取数据并最终展现在用户面前!而最后面的App服务器主要是为了移动端,即当下很火的App客户端!

  可是,当并发量进一步提高时,服务器的压力就更大了!这时候就需要进一步对网站的架构进行优化,比如说,加服务器,或者说换性能更好的服务器(把Mysql换成Oracle数据库服务器),开启数据库的一级缓存和二级缓存等方法!当然,这都是治标不治本的方法!比较有效的是在App服务器和数据库服务器中间加上分布式缓存(Memcached、Redis等)服务器,当需要从数据库取数据的时候,先经过分布式缓存服务器,如果在缓存里面已经有需要的数据,那么就直接从分布式缓存服务器中取数据,而不用去数据库取数据,以减缓数据库的压力!还有一种非常有效的方法,就是优化数据库,更准确的说,对数据库进行主从复制来同步数据库数据,读写分离来提升数据库的并发负载能力!

  但是上面这套方案是官方提供的!一旦主服务器的数据有更新,那么从服务器就会从主服务器的日志总读取并同步到从服务器。当然,上面这套方案也是可以进一步改进提高的:提高可用性(HA)!也就是说,万一Mysql-Proxy服务器宕掉了,整个系统也就宕掉了!这时的解决方案将Mysql-Proxy服务器换成另外一套负载均衡系统(LVS/DR、Nginx等)!并且配合数据库的水平分割,库表散列的方案进行进一步的提高。来达到高可用的目的。水平分割就很好理解了,这里有必要解释一下库表散列:即使用哈希算法来将数据存放到不同的数据库中。比如可以根据用户表的用户名字段,并且采用哈希算法来将一张表散列成128张(哈希算法的结果对128取余即可)甚至更多!来将一张表的数据分布缓存在多个服务器中。来进一步优化性能。

  可是,当优化做到这种程度之后,所使用的服务器的数量也是相当多的。那么也就不可避免的会有大量的服务器在功能上“已经死了”而成为闲置机器(也就是我们所说的“僵尸服务器”),这肯定是一种资源的浪费。起码一年所耗费的电能也是巨大的。(我们老师曾经就给别人做过一个检测出闲置机器的项目来给企业节省电费)而现实也的确是如此,麦肯锡公司就发布过类似的研究报告,发现在数据中心有高达30%的服务器“在功能上已经死了”,这可谓是闲置服务器泛滥成灾。这种闲置服务器也开始引起来企业的重视。面对这种情况,这些闲置的服务器可以提供云服务(如阿里云,百度云等),可以直接当做空间而租给别人,也可以把服务器租给被人使用等,来给被人提供服务实现资源的充分利用。

  当优化做到这种程度,还不能满足实际的高并发的话,那么就得像阿里一样去追求“去I,去O,去E”目标,自主开发一套新的网站架构了。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3