针对秒杀系统所代表的热点问题,我们根据多年的经验总结出一些通用的原则:隔离、动态分离、分层校验,必须从全链路来考虑和优化每个环节除了优化系统提升性能以外,做好限流和保护也是必备的功课。
数据访问热点,比如详情系统中某些热点商品的访问度非常高,即使是Tar缓存这种Cache本身也有瓶颈问题,一旦请求量达到单机的极限也会存在热点保护问题。有时候看起来好像很容易解决,比如只需要做好限流,但是一且某个热点触发了一台机器的限流阀值,那么整台机器Cache的数据都将无效,进而间接导致Cache被击穿,请求都落到应用的数据库中,出现雪崩现象。所以这类问题需要与具体的Cache产品结合才能有比较好的解决方案。
一个通用的解决思路是:在Cache的client.端做本地的Localcache,当发现热点数据时直接Cache在client里,而不要请求到Cache的Server。
数据更新热点。数据更新问题除了前面介绍的热点隔离和排队处理之外,还有些场景对商品的lastmodifytime字段更新会非常频繁,在某些场景下这些多条SQL是可以合并的,一定时间内只执行最后一条SQL就行了,这样可以减少对数据库的update操作。另外,热点商品的自动迁移理论上也可以在数据路由层完成,利用前面介绍的热点实时发现功能,自动从普通库里把热点数据迁移出来放到单独的热点库中。
按照某种维度建立的索引产生的热点数据,比如实时搜索中按照商品维度关联的评价数据。有些热点商品的评价非常多,导致搜索系统在按照商品ID建立评价数据的索引时,内存已经存不了了。交易维度关联订单信息也同样有这些问题。这类热点数据需要做数据的散列,需要再增加一个维度,重新组织数据。
全局基础设施优化:资源调度优化
全局基础设施的优化。我们做应用层的优化一般都比较关注网站建设软件本身的优化,但是支撑应用运行的基础环境,往往有更大的优化空间。基础设施包括基础应用容器如JDK、Tomcat、VM,操作系统和文件系统甚至硬件设备,它们其实都有优本章我们重点阐述资源调度的优化,因为它最具普追性、价值也更大化的空间,而且由于基础设施的优化是事关全局的,所以通用性会更广、收益会更大。
>>> 查看《网站热点问题思考》更多相关资讯 <<<
本文地址:http://oracleno1.com/news/html/4542.html