高并发
文章平均质量分 92
Lvshen的技术小屋
技术宅
展开
-
聊聊什么是缓存雪崩和缓存穿透
缓存雪崩假如一个系统,它在高峰期有每秒7000个请求,这时我们使用缓存抗住了这么高的请求。但如果在某个时间点缓存大量失效,或者缓存服务器挂掉了,那么这些请求就会直接作用在普通数据库中(如MySQL)。这么高的请求量,MySQL肯定抗不住,进而挂掉,数据库一挂,也会导致系统挂掉。我们总结缓存雪崩触发的条件:“ 高并发情况下 缓存服务器挂了 大量缓存集中失效 ”导致的后果就是:系统崩溃。解决思路,对数据库增加限流排队访问,假设我们的数据库最多能抗住每秒200原创 2021-03-30 14:45:56 · 337 阅读 · 0 评论 -
【知识科普】比多线程还快?了解下什么是协程
什么是线程线程是操作系统能够进行运算调度的最小单位。大部分情况下,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在一些系统中,线程也被称之为轻量进程。而轻量进程一般指的内核线程。一个进程可以有很多线程来处理,每条线程并行执行不同的任务。如果进程要完成的任务很多,这样需很多线程,也要调用很多核心。因此在多核的CPU上面使用多线程程序设计能更有效的利用CPU。多线程示例:@Testpu...原创 2021-03-12 16:56:03 · 947 阅读 · 0 评论 -
开源的高性能本地缓存-Caffeine
高性能本地缓存在将本地缓存前你肯定在想,本地缓存有么好讲的,不就是一个map么。把要缓存的数据存入map中,自己就能实现。但是这里有几个点我们要考虑:“ 并发-使用普通的Map还是线程安全的ConcurrentMap? 容量-Map的容量需要有多大? 过期策略-Map里的数据如果很久不用是不是需要定时清除? 驱逐策略-如果数据还没有过期,但是容量满了该怎么处理? ”如果你也有这些问题那么请看下面的文章。之前我介绍了Google的本地缓存Guava Ca原创 2021-01-27 15:59:30 · 893 阅读 · 0 评论 -
高并发下如何生成随机数
在平时的开发中我们经常会用到随机数,比如使用new Random()、Math.random()等生成,然而在高并发环境中(比如电商项目,中间件系统等)使用上面的方法并不是最优的,会影响系统性能。那么在高并发环境下我们如何让生成随机数呢?使用Random生成随机数@TestpublicvoidtestRandom(){for(inti=0;i<10;i++){doublerandom=Math.random();S...原创 2020-12-29 09:03:15 · 1498 阅读 · 1 评论 -
Redis除了做缓存,还能做什么
缓存Redis是什么大家都知道,一个非关系型数据库。大部分情况下我们使用Redis做缓存。使用缓存的情况一般是这样的:Redis缓存“(1)从Redis缓存中获取数据,如果存在数据,直接返回值。(2)如果不存在,执行数据库的查询方法(3)将数据库中的值放入缓存,并返回值”代码如下:当然我们也可以使用Spring的缓存注解@Cacheble。我们要在配置类上面开启缓存注解@EnableCaching,使用如下:有兴趣的童鞋可以看看我写的这篇文章:“利用AO原创 2020-10-28 08:19:08 · 3939 阅读 · 2 评论