Cache Travel-06-Tair
Tair
Tair 是快速访问内存(MDB)/持久性(LDB)存储服务。
Tair采用高性能、高可用的分布式集群架构,可以满足业务对读写性能和可扩展容量的高要求。
项目结构
System architecture
Tair 集群具有三个必要的模块:ConfigServer、DataServer 和客户端。
一般来说,一个Tair集群包括两台ConfigServer和多台DataS...
2018-09-01 04:24:42 |
Cache
Cache Travel-05-LRUMAP
LRU
本文通过对 Apache Commons Collections 项目中 LRUMap 这个集合类的源代码进行详细解读,为帮助大家更好的了解这个集合类的实现原理以及使用如何该集合类。
算法简介
首先介绍一下LRU算法。
LRU 是由 Least Recently Used 的首字母组成,表示最近最少使用的含义,一般使用在对象淘汰算法上。也是比较常见的一种淘汰算法。
简单的实...
2018-09-01 04:24:42 |
Cache
Cache Travel-04-in action
优化方案
限额限次短期优化方案:
基础方案
(1)添加 merId 过滤条件,便于命中联合索引。 (索引)
(2)每一层统计,次数和金额并行执行(从概率上来说,拦截是低概率,压力还是会到 mongodb )
fixed(2) 固定线程数2(并行)
注意日志的 logId
(3)添加表为对应业务的分表。(分表,效果一般)
(4)降低存储量。专门为限额建立表(降低单条数据量)
全...
2018-09-01 04:24:42 |
Cache
Cache Travel-03-进程内缓存,服务间传递数据选择 mq 还是 cache?数据一致性问题
进程内缓存
概念
java应用缓存一般分两种,一是进程内缓存,就是使用java应用虚拟机内存的缓存;另一个是进程外缓存,现在我们常用的各种分布式缓存。相比较而言,进程内缓存比进程外缓存快很多,而且编码也简单;但是,进程内缓存的存储量有限,使用的是java应用虚拟机的内存,而且每个应用都要存储一份,有一定的资源浪费。进程外缓存相比进程内缓存,会慢些,但是,存储空间可以横向扩展,不受限制。
...
2018-09-01 04:24:42 |
Cache
Cache Travel-02-history
IQiyi 的缓存发展之路
数据同步加 redis
通过消息队列进行数据同步至redis,然后Java应用直接去取缓存
优点
由于是使用的分布式缓存,所以数据更新快。
缺点
缺点也比较明显:依赖Redis的稳定性,一旦redis挂了,整个缓存系统不可用,造成缓存雪崩,所有请求打到 DB。
JavaMap 到 Guava cache
这个阶段使用进程内缓存作为一...
2018-09-01 04:24:42 |
Java
Cache Travel-01-Talk
概览
你真的需要缓存吗
如何选择合适的缓存
多级缓存
缓存更新
缓存挖坑三剑客
缓存污染
序列化
GC 调优
缓存的监控
是否需要
在使用缓存之前,需要确认你的项目是否真的需要缓存。
CPU 占用
如果你有某些应用需要消耗大量的 CPU 去计算,比如正则表达式;如果你使用正则表达式比较频繁,而它又占用了很多 CPU 的话,那你就应该使用缓存将正则表达式的结果给缓存下...
2018-09-01 04:24:42 |
Java
缓存实战(1)缓存雪崩、缓存击穿和缓存穿透入门简介及解决方案
缓存的注意点
我们前面花了很多篇幅讲解 redis 的实现原理,并且也自己手写实现了一些基础功能。
你在工作学习中肯定或多或少都接触过 redis 等缓存,本篇对缓存使用的注意点做一个入门介绍。
内容相对轻松简单,请放心食用。
缓存大大提升了我们的查询性能,但是使用不慎很可能掉到坑里。
本文介绍下缓存雪崩、缓存击穿和缓存穿透这三个挖坑的小能手,让你知道如何避免这几个坑,避免加班修B...
2018-09-01 04:24:42 |
Java
Cache Travel-00-index
缓存
缓存是提升性能非常重要的手段。
本系列就缓存做深入学习和整理。
缓存系列
基础数据结构
LRUMAP
HashMap
ConcurrentHashMap
成熟框架
Guava Cache
EhCache
MemCache
Redis 系列
Caffeine
LevelDB 系列
ali
感觉就是对各种常见框架的整合和增强。
提供了分布式的支持。
Je...
2018-09-01 04:24:42 |
Java