互联网相较于传统软件,更容易遇到高并发,高访问量的问题,因为产品面对的市场更大,人群更多。但技术还是哪些技术,设备还是那些设备,互联网产品应怎样来应对这些问题呢?最根本的办法是,减少高并发和访问。如果单个点无法容纳更多的访问,就要分流到多个点来处理,单步处理太久的就分多步来并发处理。这就是拆分与缓存策略,互联网的很多技术产品都是围绕这两个点来展开的。
一、拆分
1、业务拆分,分布式部署,单个服务器完成的业务越少,性能就越好;
2、数据拆分,数据库单表的容量是有瓶颈的,数据量越大,操作越慢,所以要控制单表的数据库,既然单个表存不了那么多,那就拆分到多个表来存储,并且时刻监控单表的容量,当达到最大值时,还需要作二次拆分或数据新旧迁移分离等。
至于业务该访问哪个表,就要先通过路由策略来找出对应的数据点来访问。路由表就好比现实生活中证件(身份证、社保卡等)的作用,通过这些证件就知道你是什么人,住在哪里,作什么工作,有什么福利等。将人与人、人与社会的关系集中在一张表、一张卡片上来记录,管理。
3、环节拆分,将长环节拆分成短环节的组合,并发处理子环节最后再排队归并结果。例如麦当劳点餐是一个长环节,因为通常是要当场选餐,定餐,结账的。通过环节拆分,选餐、定餐可以并发完成,最后结账才需要排队进行。经过这样的拆分处理就可以极大的提升工作效率。
二、缓存
1、常访问的数据作缓存、这没什么异义的,数据的二八原则,百分之八十的时间都是在访问百分之二十的数据。
2、将统计数据、数据的特征结果作缓存。之所以将数据结果作缓存,一是它的容量小,二是这些数据是需要经常被用来作实时业务约束、控制的,例如商品的库存量,就需要在用户下单时实时判断,以免用户超买。
3、多级缓存,一级缓存是最快的,但也是容量最小的,后面的速度会次之,但容量会更大,具体要看业务上如何均衡了。总之是要减少会数据库的访问,因为数据库的IO会较差,而且数据也较多,访问就相对会慢一点。越慢就越容易引起塞车、崩溃。