Lesson 9 JVM 高性能的架构 秒杀 搜索引擎 心得笔记
这周主要学习JVM和高性能的架构(秒杀)JVM原理和秒杀 搜索引擎都在本周作业中有所体现,所以本周总结主要针对秒杀讲讲个人体会。
JVM垃圾回收
JVM垃圾回收就是将JVM堆中已经不再被使用的对象进行清理。
如何判断哪些对象需要回收,有两种算法:
计数法:
可达性分析算法:
秒杀系统往往会面对以下挑战和问题:
瞬时高并发带来的带宽、数据库、性能压力
秒杀逻辑的安全可靠,且保证公平
为了应对上述问题,需要一些架构思路:
静态资源加速,可用CDN加速网页、图片、资源文件等;
缓存加速,类似CDN,一般可以是业务数据的缓存;
限流,控制各个环节的并发,比如课程分享的三级阀门:秒杀页面限流、下单页面限流、支付系统限流;
简化流程,砍掉非必要的部分,减少系统压力,避免短板;
安全:前端逻辑支持,防止提前刷单等;
应急预案:作好最坏的情形下的应对策略,有备无患;
总结 :秒杀系统难点不就在于具体业务的逻辑实现算法 和 数据持久化的处理
秒杀原则
数据要尽量少
请求数要尽量少
路径要尽量短
依赖要尽量少
不要有单点
搜索引擎
搜索引擎主要利用倒排索引对数据进行查询优化;
倒排索引指的是以关键词为单位,关联对应的包含关键词的文档;
lucene与elasticsearch,后者基于前者,做了分布式的支持,并封装了复杂的api;
评论