多级缓存支撑海量读服务设计方案
Cache1:一级本地缓存(map,ehcache,guava)
Cache2: 二级分布式缓存(redis,memcached,hazelcast,iginte)
更新集群一级缓存(jgroup,mq,redis subscribe,zk)
get操作 getCache1 > getCache2 > setCache1
set操作 deleteCache1(广播,消息) > setCache1 > setCache2
delete操作 > deleteCache1 > deleteCache2 > deleteCache1(广播,消息)
场景1: 一对一缓存(更新某个特定对象)
方案一:
删除所有一二缓存,请求重新构建缓存
请求 > get操作 > getDB > set操作
方案二:
cache1缓存永不失效,在应用端监控CacheKey(应用本地监控,或者更新源发送mq信息通知),发现缓存失效,重新构建更新cache1,cache2.
更新缓存 > 监控CacheKey > setCache1 > setCache2
请求 > get操作
场景2: 一对多缓存(一个聚合对象,包含很多小对象嵌套,小对象有多处修改,小对象修改会影响象,但是无法更新聚合对象缓存,只能清除聚合对象缓存)
请求 > get操作 > getAll聚合 > set操作
更新小对象:
方案一:
删除所有一二缓存,请求重新构建缓存
更新小对象SmallObj2 > setCache1SmallObj2 > setCache2SmallObj2 > deleteCache2 > deleteCache1(广播,消息)
请求 > get操作 > getAll聚合(getSmallObj1(缓存操作),getSmallObj2(缓存操作),getSmallObj3(缓存操作)) > set操作
方案二:
cache1缓存永不失效,在应用端监控CacheKey(应用本地监控,或者更新源发送mq信息通知),发现缓存失效,重新构建更新cache1,cache2.
更新小对象SmallObj2 > 监控CacheKey > setCache1 > setCache2
请求 > get操作
缺点:
1.由于是聚合对象,更新小对象时无法回源聚合对象,如需回源聚合对象需要保存回源参数,实现较麻烦。
2.更新延迟问题。
优点:
如果能方便回源聚合对象,这种方式稳定性优。
场景1和场景2的区别:
小对象(简单的单一对象),应该只有一个地方修改,而且可以根据参数回源该对象
比如角色对象修改,可以直接修改集群中的一级缓存
嵌套对象(复杂的对象嵌套层级多,修改点多),修改的地方很多,在修改的地方回源不了嵌套对象,
更新不了集群中的一级缓存
---------------------------------------------------------------------------------------------------------------------------
缓存穿透,缓存雪崩而外处理
---------------------------------------------------------------------------------------------------------------------------
根据设计方案应该设计一个类似j2cache的框架
实际场景:
由于目前用的redis两种版本,而且互相调用,如果设计类似j2cache的框架,没法用会冲突。
方案:
设计一个本地一级缓存方案,添加本地一级缓存,分布式二级缓存,分开来添加。对本地一级缓存提供一下功能:
增删该查本地,集群一级缓存
相关推荐
【基于NoSQL的海量航空物流小文件分布式多级存储方法】是针对航空物流领域中大量小文件存储效率低下和访问效率不高问题而提出的一种解决方案。该方法充分利用了NoSQL数据库的优势,结合分布式存储策略,旨在优化存储...
这可能包括采用分块存储、循环缓冲、多级缓存等技术,以提高数据的存取效率和系统的整体性能。此外,设计中可能还考虑了如何在CPU与缓存之间进行高效的数据传输,以及如何有效地管理和调度缓存中的数据,以避免数据...
- 针对每天上亿次访问和海量页面的场景,系统需要采用异步多级缓存架构,以减少直接访问数据库的压力。结合 nginx 本地化缓存和动态模板渲染,可以快速响应用户请求,确保最新模板的实时更新。 2. **Redis 企业级...
【Feed分级缓存的极致优化】是针对社交媒体平台如微博中海量数据处理的一种高效解决方案。在用户数量和发博量持续快速增长的背景下,为保证用户体验的快速响应和平台的稳定运行,对Feed缓存进行优化至关重要。缓存是...
3. **多级缓存方案**:针对微博故事的业务特点,开发了独特的多级缓存策略,即L1、Master、Slave三层缓存机制。其中,L1缓存用于存储访问频率最高的“极热”数据,容量较小但可以快速横向扩展;Master缓存和Slave...
《网络游戏-可按比例伸缩的多级互连网络结构和在运行中升级的方法》这份资料,主要探讨了网络游戏行业中一种先进的网络架构设计,旨在提供高效、灵活且可扩展的解决方案。多级互连网络结构是网络游戏服务器设计的...
- **多级缓存机制**:为应对高并发访问,应用服务层需要建立有效的缓存策略,以减少服务器压力和提高响应速度。 - **多线程断点续传**:考虑到移动网络的不稳定性,影像数据传输需支持断点续传,确保数据完整性,...
1. **缓存层次结构**:Facebook可能采用了多级缓存策略,从本地内存缓存到分布式缓存系统,如Memcached或Redis,再到更持久的存储解决方案。 2. **缓存算法**:文档可能详细解释了Facebook如何选择和实施缓存替换...
3. 高性能(Performance):通过关键服务最长响应时间小于500ms、支持千人同时开单、多级缓存支撑等手段实现高性能。 4. 安全性(Security):通过传输安全、数据访问安全、数据存储安全、防网络攻击等手段实现安全...
在电力调度系统中,多级缓存策略能够根据数据访问频率和访问模式,将频繁访问的数据放在快速的存储介质中,从而减少对后端存储设备的压力,并提供更快的数据响应。 除了多级缓存策略,EDPM模型还提出了基于模型控制...
1. **多级缓存架构设计** - **背景**:随着业务的发展,单一缓存策略往往无法满足高并发场景下的数据读取需求。 - **核心要点**: - 选择合适的缓存层级结构,如L1、L2缓存等; - 实现高效的缓存淘汰策略,如...
综上所述,淘宝通过自主研发的TFS系统、多级缓存策略和高效CDN系统,成功构建了一套能够支持海量用户访问的电商系统。这套系统不仅体现了淘宝在技术创新方面的实力,也为其他电商平台提供了宝贵的经验借鉴。
#### 四、瀑布流数据多级缓存体系 1. **多级内存缓存**: - 采用分层缓存架构,根据不同级别的存储介质(如内存、固态硬盘、机械硬盘)进行数据分级存储。 - 将访问频率高的数据缓存在更快的存储介质中,提高数据...
本篇文章将深入探讨“淘宝网架构解密”这一主题,解析其开源架构的设计思路,以及它如何支撑起海量的用户访问和交易处理。 首先,淘宝网的架构设计遵循了高可用、可扩展性和灵活性的原则。它采用了微服务架构,将...
客户端与服务器的多级缓存结构优化了数据传输效率;跨平台开发接口确保系统在不同操作系统上运行;完善的日志系统则提供了故障排查和性能监控的便利。 此外,2.5维地图引擎的引入,意味着系统不仅能够提供二维地图...
2. **缓存架构**:采用多级缓存策略来减轻数据库的压力并提高数据访问速度。其中,一级缓存使用的是Ehcache,这是一种Java内置的高速缓存方案,具有高速读写和高并发处理能力;而二级缓存通常采用Memcached或Redis等...
3. **多级缓存**:通过缓存策略减少重复计算,提升查询速度。 4. **权限控制**:确保数据安全,根据用户角色和权限进行访问控制。 5. **元数据管理**:维护数据模型、立方体、指标、口径和字典表,确保数据的一致性...
- **缓存机制**:Bigtable内置了多级缓存机制,包括内存缓存和基于磁盘的缓存,以加快数据访问速度。 - **动态负载均衡**:根据系统的实际负载情况动态调整资源分配,确保系统资源得到充分利用。 #### 实际应用案例...