Curve支持S3 数据缓存方案Curve支持S3 数据缓存方案 |版本|时间|修改者|修改内容| |---|---|---|---| |1.0|2021/8/18|胡遥|初稿| ||||| 背景 · 整体设计 - 元数据采用2层索引 - 对象名设计 - 读写缓存分离 • 缓存层级 • 对外接口 • 后台刷数据线程 • 本地磁盘缓存 - 关键数据结构 - 详细设计 - Write流程 。 ## 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序写和顺序读,而对于随机写和随机读来说也会有一定性能提升,但效果可能不会太好。 ## 元数据采用2层索引 由于chunk大小是固定的(默认64M),所以Inode中采用map缓存分离 读写缓存的设计采用的是读写缓存分离的方案。即读写缓存相互没影响不相关,写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 ## 缓存层级 缓存层级分为fs->file->chunk->datacache 4层,通过i 0 码力 | 9 页 | 179.72 KB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路Golang主动式内存缓存的优化探索之路 安晏伯 学而思网校 技术专家  问题引入 01 难点攻克 02 主动式内存缓存框架 03 总结 04 ## 第一部分 ## 问题引入 ## 为什么能有极致的性能? 主动式内存缓存 如何优化? • 主动式内存缓存,如何保证数据实时性? - 数据太多,内存不够用,如何进行存储扩展? ## 第二部分 难点攻克 ## “ ## 数据一致性如何保证? ## 一 致性 同步、更新  ## ➢ 被动方式 ✓ 缓存过期 ✓ 定期同步 ## 存储扩展  存储空间 VS 缓存性能 ## 冷热可交换,引擎可扩展 IStore Norma $ \tilde{M} $ ap MemoryTile CMap map[int]interface{} ![Im0 码力 | 48 页 | 6.06 MB | 2 年前3
CurveFS S3本地缓存盘方案Curvefs-S3 本地写缓存盘方案 背景 方案设计 主要数据结构定义 方案设计思考 POC验证 ## 背景 当前,s3客户端在写底层存储的时候是直接写入远端对象存储,由于写远端时延相对会较高,所以为了提升性能,引入了写本地缓存盘方案。也即要写底层存储时,先把数据写到本地缓存硬盘,然后再把本地缓存硬盘中的数据异步上传到远端对象存储。 ## 方案设计 ![Image] 480/p3_1.jpg) S3模块接收到写入后先写入写内存缓存页,如果满足持久化的条件后,那么则准备持久化。 做一个硬链接链接到该文件。 本次io在本地硬盘写入好之后,异步上传模块会适时把本地硬盘写缓存目录中的文件上传到远端对象存储集群,上传成功后,删除本地写缓存目录中的对应文件。 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 另 配置一个目录用于本地硬盘的文件管理,对作为缓存盘的本地硬盘进行格式化并挂载到该目录(如果没有缓存盘,那一般而言就是系统盘本身了)。 • 本地缓存盘的文件内容表示 本地缓存盘存放的文件即是存储到对象存储中的对象。 • 写缓存如何作为读缓存利用 除了写缓存目录,另外引入读缓存目录;当写缓存目录中有新文件加入时,则对该文件做硬链接到读缓存目录。 这样,写缓存目录中的文件上传完之后就可以直接删除了,那么该文件的读缓存还是存在的。0 码力 | 9 页 | 150.46 KB | 1 年前3
高可用与一致性:构建强一致性分布式数据库 TiDB-沈泰宁## 构建强一致性分布式数据库 TiDB 沈泰宁 R & D Engineer @ PingCAP ## 极客时间 | 企业服务 ## 想做团队的领跑者 需要迈过这些“槛” 成长型企业,易忽视人才体系化培养企业转型加快,团队能力又跟不上 团队成员技能水平不一, 难以一“敌”百人需求 寻求外部培训,奈何价更高且集中式学习 学习效果难以统计,产生不良循环 VS VS VS0 码力 | 45 页 | 4.63 MB | 2 年前3
微服务场景下的数据一致性解决方案 - 殷湘和平统一 # 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心  ## 大纲 • 离 数据一致性的起因 • 合 数据一致性的解决方案 • 断 方案选择建议 ## 离 数据一致性的起因  ## 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证  ## 微服务场景 ## 数据一致性无法完全通过数据库保证 离 独立进程  独立部署 独立技术 独立团队 MongoDB Cassandra ## 合 数据一致性的解决方案 ## Saga • 1987年Hector & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT =0 码力 | 31 页 | 4.28 MB | 2 年前3
2.2 龚浩华(月牙寂)p2p缓存系统 基于Golang的Aop设计模式## p2p缓存系统 ## 基于Golang的Aop设计模式 龚浩华 QQ 29185807 月牙寂 ## 背景 Web缓存(类似CDN技术) ☑ 网页、图片 普通下载 ■ 普通视频 P2P缓存 下载(bt等) ■ 视频(qvod、百度影音等) ## 背景 P2P缓存好处 ■ 一次获取,多次利用 ■ 减少局域网出网流量 ■ 提升用户体验 ## 背景 P2P缓存服务器(基于c++开发) 分布式系统中的节点无法做到时间的完全一致性,会导致一些行为的顺序不确定 ## 3、 非确定 普通程序输入则得到固定的输出。分布式系统则存在很多差异。 ## golang 基于golang的分布式程序(单进程) 1、针对 缺乏全局状态知识 全局状态是可以获取到的 2、针对 缺乏全局时间 全局时间是一致的 3、非确定 仍然存在不确定性 现实世界的设计模式直接可以拿来借鉴 ## P2P缓存框架 












