大型网站负载均衡,分布式与数据库读写分离的一些思路

      


          数据库方面:

              将一个网站的不同业务分到不同的表,按功能对表进行细化。


              如果是多个网站,多个端口(如PC端,APP端)链接到同一个数据库,对多种方式访问的共同数据专门提出来,成为公共资源,专门放到同一张表里面。


           SLB负载均衡:

          比如一个网站有1000万的访问量,通过loadbalance把这1000万的访问进行负载均衡掉。loadbalance的学习自己进行。阿里云貌似有。负载均衡把这1000万的访问量负载均衡到7,8台机器上,可扩展性也很好,当相应速度上不去的时候 ,可以继续扩展机器来满足访问量需求。


          一台机器挂了,系统检测到这台机器挂了,就走另外的机器,继续负载均衡,从而保证系统的容灾性。


           数据采用分布式存储,可以按月份把数据分开,一月一月一存储,这样就可以避免一个表中大数据量的产生。查找数据的时候,按月份进行匹配,对应相对的表查找数据。


           当然也可以采用其他的分库分表规则,订单表可以按照月份来分,用户表可以根据id尾号来分。也可以根据其他的规则,自己定。自己定的规则则要考虑好其中的可扩展性是否良好,以后的业务是否可扩展,等等。


           分库分表以后就要确定DB路由,DB路由就是对其中各种匹配表的规则的判断,根据DB路由找到对应的表对应的库。


           其中分表的话,要分的表是随业务增多而容量增多的数据,如订单表,用户表,日志,等等。


            对数据库进行读写分离,把数据表分成主表和备表,主表不行了,则连接到备用表,这样数据的容灾性也很好。


           对于图片数据:


           因为图片数据所占用内存较大,可以把所有的图片资源全部都放在一起,访问图片通过http访问。


           关于数据库的读写分离:


           单独拿一个库或者机器,专门用来查询,比如查询某用户某一年的交易订单,可以只通过这一个库或者机器来查,12张表关联成一张表。而写的话,则是写入不同的分散的表当中。


          数据库的读写分离可以通过binlog来自动同步数据。这样读库和写库的数据能够同步。


         关于使用缓存 :

        使用缓存的话,时间投入成本较大,且数据放入内存当中,内存挂了的话,比较容易出问题。

         


          

你可能感兴趣的:(PHP)