2.1.1 Golang主动式内存缓存的优化探索之路Golang主动式内存缓存的优化探索之路 安晏伯 学而思网校 技术专家  问题引入 01 难点攻克 02 主动式内存缓存框架 03 总结 04 ## 第一部分 ## 问题引入 ## 为什么能有极致的性能? 主动式内存缓存 如何优化? - 支持灵活的信息过滤条件  ## 内存不够用怎么办? 存储扩展,冷热数据交换  同样的性能,需要更少的硬件资源,降低成本 02 核心数据在本地,依赖少,更稳定 ## “ 通过本次分享,可以带来哪些收获? • 千万级内存对象,GC严重耗时,如何解决? - 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? - 数据太多,内存不够用,如何进行存储扩展? ## 第二部分 难点攻克 ## “ ## 数据一致性如何保证? ## 一 致性 同步、更新 !0 码力 | 48 页 | 6.06 MB | 2 年前3
JVM 内存模型## JVM 内存模型 0 码力 | 1 页 | 48.42 KB | 2 年前3
Curve支持S3 数据缓存方案Curve支持S3 数据缓存方案 |版本|时间|修改者|修改内容| |---|---|---|---| |1.0|2021/8/18|胡遥|初稿| ||||| 背景 · 整体设计 - 元数据采用2层索引 - 对象名设计 - 读写缓存分离 • 缓存层级 • 对外接口 • 后台刷数据线程 • 本地磁盘缓存 - 关键数据结构 - 详细设计 - Write流程 append接口目前采用先从s3 get,在内存中合并完后再put的方式,对s3操作过多 2. 对于4k 小io每次都要和s3交互,导致性能非常差。 因此需要通过Cache模块解决以上2个问题。 ## 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序 为了后续从对象存储上遍历,反查文件,这里就要求inodeId是永远不可重复。 ## 读写缓存分离 读写缓存的设计采用的是读写缓存分离的方案。即读写缓存相互没影响不相关,写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 ## 缓存层级 缓存层级分为fs->file->chunk->datacache 4层,通过i0 码力 | 9 页 | 179.72 KB | 1 年前3
CurveFS S3本地缓存盘方案Curvefs-S3 本地写缓存盘方案 背景 方案设计 主要数据结构定义 方案设计思考 POC验证 ## 背景 当前,s3客户端在写底层存储的时候是直接写入远端对象存储,由于写远端时延相对会较高,所以为了提升性能,引入了写本地缓存盘方案。也即要写底层存储时,先把数据写到本地缓存硬盘,然后再把本地缓存硬盘中的数据异步上传到远端对象存储。 ## 方案设计 ![Image] 8480/p3_1.jpg) S3模块接收到写入后先写入写内存缓存页,如果满足持久化的条件后,那么则准备持久化。 做一个硬链接链接到该文件。 本次io在本地硬盘写入好之后,异步上传模块会适时把本地硬盘写缓存目录中的文件上传到远端对象存储集群,上传成功后,删除本地写缓存目录中的对应文件。 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 配置一个目录用于本地硬盘的文件管理,对作为缓存盘的本地硬盘进行格式化并挂载到该目录(如果没有缓存盘,那一般而言就是系统盘本身了)。 • 本地缓存盘的文件内容表示 本地缓存盘存放的文件即是存储到对象存储中的对象。 • 写缓存如何作为读缓存利用 除了写缓存目录,另外引入读缓存目录;当写缓存目录中有新文件加入时,则对该文件做硬链接到读缓存目录。 这样,写缓存目录中的文件上传完之后就可以直接删除了,那么该文件的读缓存还是存在的。0 码力 | 9 页 | 150.46 KB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 复旦大学 报告日期:2022.11.25 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## Rust语言 ## 系统级安全编程语言 ■ 内存安全 ■ 4_5.jpg) AWS, Huawei, Google, Microsoft, Mozilla... ## Rust如何保障内存安全? ☐ 内存安全问题产生的主要原因之一是指针别名导致悬空指针 ■ 手动释放内存或调用析构函数 函数返回时发生的自动析构或内存释放 ☐ Rust设计的目标之一是编译时检查指针别名(共享可变引用) 但一般意义上的指针分析是NP-hard问题 智能指针可行,但作为运行时方案,效率低 9ba55bcfd8da3bffc5dde2647ec86e55/p9_2.jpg) ## Rust实际表现如何? ☐ 调研了2020年12月31日前报告的185个内存安全漏洞[TOSEM'21] ■ Rust在内存安全防护方面效果不错 - 所有的漏洞(除了1个编译器漏洞)都需要unsafe code - 大部分CVEs都是 API soundness的问题(未在可执行程序中发现)0 码力 | 28 页 | 1.55 MB | 2 年前3
Vue声明式编程## V ue声明式编程 ## 摘要 • 声明式与图灵完备性 • 声明式与UI编程的演进 • 声明式与UI架构 • 声明式与交互 ## 声明式与图灵完备性 ## 声明式 • 我们对语言有很多划分的维度 • 声明式 vs 命令式 • 声明式语言:HTML XML CSS SQL • 命令式语言:C++ Java JavaScript ## 图灵完备性 · 图灵完备:“可计算性” 图灵完备:“可计算性” • 命令式的图灵完备性:if/for, if/goto • 声明式的图灵完备性:if/递归 ## V ue的Template的图灵完备性 • 实际上Vue的组件系统具有图灵完备性 • 使用Vue计算阶乘 • 使用Vue计算斐波那契数列 ## 声明式与UI编程 ## UI编程 • 70年代 MVC诞生 人们意识到视图应该被独立抽象 • 80年代 标记语言大热 最初更与文本相关 • “HTML5” ## 声明式优势 • 可视化的“可逆性” • 声明式与可再绑定性 • 听说近年某框架把html和css塞回JS了? ## 可重复绑定性 • recycle-list ## 声明式与UI架构 ## MVVM • MVC => MVP => MVVM —脉相承的演化 • MVVM是为声明式/多语言量身定做的编程模型 ## MVVM的数据绑定 • 数据绑定是声明式的数据与UI通讯0 码力 | 19 页 | 155.76 KB | 2 年前3
Java 应用与开发 - Java 内存模型与分配机制Java 内存模型与分配机制 王晓东 wangxiaodongQouc.edu.cn 中国海洋大学 September 30, 2018 Java 内 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2. 理解 Java 程序的运行过程,学会通过调 HH 变化 3. 了解 Java 内存管理,认识垃圾回收 4. 建立编程时高效利用内存、避免内存溢上 D 的理 的理 试模式观察内存的 大网 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大网 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 接下来… Java 内存模型 大网 Java 内存模型 Java 内存管理建议 Java 虚拟机 (Java Virtual Machine, JVM )0 码力 | 44 页 | 818.30 KB | 2 年前3
为JVM提供基于 REDIS的高性能驻内存数据网格(IMDG)REDIS的高性能驻内存数据网格(IMDG) ULTRA-FAST REDIS BASED IN-MEMORY DATA GRID FOR JAVA ’ alt=‘OCR图片’/> Redis客户端 ’ alt=‘OCR图片’/> Redis缓存 业务逻辑代码与数据源关联紧密 业务逻辑可能会有多个数据源 缓存属于附加产物 ’ alt=‘OCR图片’/> Redisson缓存 RMapCache 允许多个数据源,不影响业务逻辑 缓存优先设计,代码简单易懂 ’ alt=‘OCR图片’/> Redisson本地缓存 RLocalCachedMap ’ alt=‘OCR图片’/> BOSS级缓存结构 RLocalCachedMapCache ’ alt=‘OCR图片’/> 终极缓存结构 RClusteredLocalCachedMapCache ’ alt=‘OCR图片’/> 终极缓存结构 RCl RClusteredLocalCachedMapCache ’ alt=‘OCR图片’/> 缓存推送更新 ’ alt=‘OCR图片’/> 缓存推送更新 ’ alt=‘OCR图片’/> 缓存推送更新 ’ alt=‘OCR图片’/> 缓存推送更新 Redis,数据库0压力 缓存推送更新 ’ alt=‘OCR图片’/> 缓存推送更新-原理1 可配置的MapWriter Write-through/Write-behind更新策略0 码力 | 19 页 | 1004.16 KB | 1 月前3
MongoDB 分布式架构演进## 阿里云 ## MongoDB 分布式架构演进 张友东(林青) 阿里云数据库技术团队 # MongoDB MongoDB as in "humongous". Used to describe something extremely large or important. ## MongoDB 核心优势 灵活 · 文档模型 高可用 • 复制集 可扩展 分片集群 ##0 码力 | 29 页 | 2.03 MB | 2 年前3
分布式任务系统cronsun## 分布式任务系统 cronsun 苏创绩 ## 目录 01 任务系统 02 分布式任务系统 03 cron sun 04 心得体会   分布式crontab cmd1 cmd2 Mesos 之上的具有分布式容错特性的作业调度器 1. 可替代 cron 2. 有 UI 3. 支持ISO8601标准,允许更灵活地定义调度时间 4. 支持任务依赖 ## Dkron ## 分布式高可用的任务调度系统 1. 易用、有 UI 2. 高可用 3. 可扩展性高,支持大量任务和成千上万结点 ## 我眼里的“西施” 1. 可替代 cron 2. 分布式、高可用 3. 支持多种任务属性0 码力 | 48 页 | 1.52 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













