Java高并发下缓存问题的现象及本质原因是什么?
缓存击穿
缓存击穿是指缓存没有用户请求的数据但是数据库中有用户请求的数据,这时如果并发用户很多又无法通过缓存来得到数据只能从数据库取数据进而导致数据库压力瞬间增大,系统访问缓慢。
缓存雪崩
缓存雪崩指的是同一时间有大量的缓存数据过期,这时候有大量的访问进而导致数据库压力剧增进而宕机。
缓存雪崩和缓存击穿的差别是,缓存雪崩指的是大量的数据到期,缓存击穿指的是单个缓存数据到期
本质原因是系统在进行设计时对缓存体系设计不合理
对于热点数据可以考虑设置为永不过期,通过手工的方式来处理热点数据
对于缓存数据的过期时间设置为随机避免同一时间有大量的缓存数据失效
可以考虑通过分布式的方式来配置缓存
百度美团Java开发如何在高并发分布式下生成全局ID生成策略?
百度美团Java开发如何在高并发分布式下生成全局ID生成策略?这个生成策略于你的数据库有很大的关系。除非你想自己程序生成 比如:oracle支持sequence mysql支持autoinc mssql支持:identified 等等 你根据你的数据库系统,采取不同的策略 如果你使用orm框架的话,可以采用框架提供的策略:比如:hibernate就提供很多生成策略