![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
并发相关的原理与总结
Kindle_code
这个作者很懒,什么都没留下…
展开
-
秒杀系统总结与思考(四) 流量削峰
什么是流量削峰秒杀这一场景,削峰的本质是更多的延缓用户请求的发出,以便减少和过滤一些无效的请求,遵从“请求数尽量少”的原则为什么要用削峰的存在,一是可以让服务器端处理变的更加平稳,二是节省服务器资源成本。实现思路排队、答题、分层过滤排队1、利用线程池加锁等待2、先进先出、仅仅后出等常用的内存排队算法3、请求序列化文件,然后再顺序读文件恢复请求答题作用: 1、防作弊。2、延缓请求答题模块三部分1、题库生成,重要防止机器算出结果2、题库推送模块,秒杀答题前,把题目提前推送给详情和交原创 2020-08-06 02:48:34 · 262 阅读 · 0 评论 -
java 线程池核心配置与介绍
线程池是什么、为什么要用线程池 参考 美团线程池实现原理介绍参数的原始构造ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,转载 2020-08-05 00:10:51 · 192 阅读 · 0 评论 -
秒杀系统总结与思考(三) 发现热点
什么是热点:热点分为热点操作和热点数据。热点数据又分为静态热点数据和动态热点数据发现热点数据:发现静态热点数据:1、静态热点数据可通过强制卖家报名,提前把商品筛选,然后通过后台系统将热点商品进行预处理(提前进行缓存),不过增加了卖家的使用成本,也不够灵活2、通过技术手动进行提前预测,大数据分析,统计TOPN商品发现动态热点数据: 可以通过大数据预测等手动提前预测,但是实时性较差1、构建一个异步系统,可收集交易链路上各个环节的中间件产品的热点key,如Nginx、缓存、RPC服务框架等(一些中间原创 2020-08-03 12:53:26 · 243 阅读 · 0 评论 -
秒杀系统总结与思考(二) 数据动静分离
何为动静数据“动态数据”和“静态数据”的主要区别就是看页面中输出的数据是否和 URL、浏览者、时间、地域相关,以及是否含有 Cookie 等私密数据。比如说:1、媒体类网站,无论谁访问,文章内容都一样,典型的静态资源2、页面上的个性化推荐与个人信息等为动态数据静态数据如何缓存呢1、将静态数据缓存在用户最近的地方。常见的有三种:· 用户浏览器· CDN上· 服务器的Cache上2、静态化改造就是直接缓存HTTP连接。静态化缓存HTTP连接不是仅仅缓存数据,就连HTTP协议都不用重新组装原创 2020-08-03 00:33:30 · 308 阅读 · 0 评论 -
秒杀系统总结与思考(一) 架构原则
重温许令波老师的秒杀系统课程 课程链接架构基本原则: “4要1不要”1、数据尽量少:数据网络传输,序列化,编码,解压等操作消耗CPU,数据越简单、越小则好简化秒杀页面大小,去掉不必要的页面装修等2、请求数量尽量少: 减少额外的请求,TCP等都耗时较多3、路径尽量短: 远程调用都会创建scoket连接,也会增大服务不可用的可能性的叠加4、依赖尽量少: 用户访问一个页面所依赖的系统,防止关键系统被弱依赖系统拖累5、不要单点: 服务单点不可用最初版本的秒杀系统把你的商品购买页面增加一个“定时原创 2020-08-03 00:27:14 · 209 阅读 · 0 评论 -
网易云音乐评论模块高并发下的设计思考
主要讨论的功能 (基于高流量高并发的场景)评论资源评论总数的更新评论点赞精彩评论的读取评论表设计(简约版)这是资源通用的表设计高并发下的问题热点数据并发量极高评论的新增,更新CommentResource的评论总数,存在并发问题评论的点赞数也是同样的问题四大业务模块详解评论发表,如下图通过异步化的操作,来解决行锁竞争给核心资源MYSQL带来压力,保证系统平稳平滑。在异步化的场景下,同时带来的问题1、评论的有序性质: 评论的发布本周没有逻辑上的有序,最终展示通过发原创 2020-08-01 01:11:49 · 919 阅读 · 2 评论 -
高并发之请求合并
应用场景Redis官方介绍,Redis单机读写性能12万/s,批量处理能达到70w/秒。不管是缓存还是数据库,都有批量处理能力。当系统达到瓶颈时,才充分考虑压榨心梗。适用于电商双十一,特定高并发场景。思路1、一个用户请求到来时,将请求放在一个队列中,单线程定时任务10ms从队列中取数据进行处理。2、定时任务,把队列中的请求,批量的方式向后端和Redis缓存或数据库发起批量请求。3、请求合并,请求阻塞等待请求处理完毕,需要用到Future代码实现:/*** @author MrCai原创 2020-07-31 01:55:46 · 577 阅读 · 0 评论 -
布隆过滤器原理与场景
原理一个很长的二进制向量和一系列随机映射函数 。通过设置向量数组长度与定义多种随机hash函数,正向预热数据,反向查询数据。使用的hash函数越多,区分度就越高。图解:使用场景大数据判断是否存在:这就可以实现出上述的去重功能,如果你的服务器内存足够大的话,那么使用 HashMap 可能是一个不错的解决方案,理论上时间复杂度可以达到 O(1 的级别,但是当数据量起来之后,还是只能考虑布隆过滤器。解决缓存穿透:我们经常会把一些热点数据放在 Redis 中当作缓存,例如产品详情。 通常一原创 2020-07-29 22:59:41 · 190 阅读 · 0 评论