2.2 龚浩华(月牙寂)p2p缓存系统 基于Golang的Aop设计模式## p2p缓存系统 ## 基于Golang的Aop设计模式 龚浩华 QQ 29185807 月牙寂 ## 背景 Web缓存(类似CDN技术) ☑ 网页、图片 普通下载 ■ 普通视频 P2P缓存 下载(bt等) ■ 视频(qvod、百度影音等) ## 背景 P2P缓存好处 ■ 一次获取,多次利用 ■ 减少局域网出网流量 ■ 提升用户体验 ## 背景 P2P缓存服务器(基于c++开发) 潜在bug多 重构 or 重新推倒? ## 背景 现实世界是怎么样的 分布式、并发 职能化、松散化 自组织、智能化 程序框架是否也可以这样? ## OOP ## C++对象代码运行 ■ 有属性(成员变量)、有行为(成员函数) 没有可以独立执行的机制 ■ 有属性(成员变量)、有行为(成员函数) 还有独立执行的活动(有自己独立的线程) ■ 有属性(成员变量)、有行为(成员函数) 借助其他线程运行 (agent-oriented programming) Agent: 智能体、职能代理。源于分布式人工智能(DAI) 1、自主的、智能的 2、具有社会性(与环境通信) 3、反应能力,理解环境并对环境刺激做出适应的反应 4、主动性,不是简单的反应,而是有目的的反应 5、一般agent处在分布式网络中,行为具有局部效应和全局效应 ## golang 1、对象:类 2、属性:成员变量 3、行为:成员函数0 码力 | 29 页 | 338.20 KB | 2 年前3
Cache-Friendly Design in Robot Path Planning0 码力 | 216 页 | 10.68 MB | 1 年前3
Node 的设计错误## Node 的设计错误 Ryan Dahl JS Conf 柏林 2018.06 ## 背景: 1. 基于最初的开发,我创建了并管理 Node。 2. 我的主要关注目标是事件驱动的 HTTP server。 3. 这一主要目标对当时服务器端的 JavaScript 起着关键作用。即使在当时这一点不那么明显,但是服务器端 JS 的成功需要事件循环的助力。 ## 背景: 2012 年我离开 Node(或多或少)实现了我的预定目标:创建一个用户友好的非阻塞框架,具体内容如下 1 核心支持许多协议:HTTP,SSL... 2. 在 Windows(使用 IOCP)Linux(EPOLL)和MAC(KQuey)上跨平台工作。 3. 一个比较稳定的相对较小的核心API。 4. 通过 NPM 增加外部模块的生态系统。 但我错了...因为还有许多问题仍待解决..... ## 使得 Node 保持增长的几项关键工作 1. NPM(Isaac 开发)将核心 Node 库解耦并允许生态系统的分布。 2. N-API 是设计精美的绑定API。 3. Ben Noordhuis 和 Bert Belder 构建了 libuv。 4. Mikeal Rogers 组织了管理活动和社区。 5. Fedor Indutny 在代码基础上产生了巨大的影响,尤其是在加密中。 6. 还有许多为 Node 增长作出贡献的人:0 码力 | 28 页 | 767.84 KB | 2 年前3
2.1.1 Golang主动式内存缓存的优化探索之路Golang主动式内存缓存的优化探索之路 安晏伯 学而思网校 技术专家  问题引入 01 难点攻克 02 主动式内存缓存框架 03 总结 04 ## 第一部分 ## 问题引入 ## 为什么能有极致的性能? 主动式内存缓存 如何优化? 如何优化? 极致的性能 ## 复杂的查询怎么办? 支持多种维度的查询 - 提供类似SQL的查询模式 - 支持灵活的信息过滤条件  ## 内存不够用怎么办? 存储扩展,冷热数据交换  同样的性能,需要更少的硬件资源,降低成本 02 核心数据在本地,依赖少,更稳定 ## “ 通过本次分享,可以带来哪些收获? • 千万级内存对象,GC严重耗时,如何解决? - 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? - 数据太多,内存不够用,如何进行存储扩展? ## 第二部分0 码力 | 48 页 | 6.06 MB | 2 年前3
Curve支持S3 数据缓存方案Curve支持S3 数据缓存方案 |版本|时间|修改者|修改内容| |---|---|---|---| |1.0|2021/8/18|胡遥|初稿| ||||| 背景 · 整体设计 - 元数据采用2层索引 - 对象名设计 - 读写缓存分离 • 缓存层级 • 对外接口 • 后台刷数据线程 • 本地磁盘缓存 - 关键数据结构 - 详细设计 - Write流程 - Read流程 - ReleaseCache流程 - Flush流程 - FsSync流程 - 后台流程 • poc测试验证 ## 背景 基于s3的daemon版本基于基本的性能测试发现性能非常差。具体数据如下: nuyao@pubbetal-nostest2:~/mnt$ fio -bs=4k -direct=1 --fallocate=none -size=10M get,在内存中合并完后再put的方式,对s3操作过多 2. 对于4k 小io每次都要和s3交互,导致性能非常差。 因此需要通过Cache模块解决以上2个问题。 ## 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序写和顺序读,而对于0 码力 | 9 页 | 179.72 KB | 1 年前3
领域驱动设计&中台/物联网平台的反应式设计## 物联网平台的反应式设计 唐成 DDCHINA ## CONTENTS 01 什么是物联网平台 02 为什么需要反应式架构 03 我们做了什么 ## 什么是物联网平台 ## 什么是物联网平台 Application  Actuator  ## 物联网平台的构成  Devices Message ## 单体的逻辑架构  ## 为什么需要反应式架构 ## 设备影子业务说明 1. 设备上报状态 6. 期望状态和上报状态的差异 (delta) 同步至设备 3. 应用查询上报的状态 4. 应用设置期望的状态 7. 设备上报新的状态0 码力 | 18 页 | 1.81 MB | 2 年前3
Swift改善既有代码的设计 - 翁阳改善既有代码的设计 翁阳(酒仙) ## 有时候相似 不是巧合 Refactoring Improving the Design of Existing Code  [美] Martin Fowler 著 熊节 译 软件开发的不朽经典 生动阐述重构原理和具体做法 普通程序员进阶到编程高手必须修炼的秘笈 ## 重构与Swift有啥关系 ## ?  ## 你必须面对既有代码! 无论是不是由你编写 ## 这些既有代码你无法逃避 ① 遗留的老项目 ② Cocoa Touch ③ Cocoa 00c1cf989fd20e3c9e0afd0906ebbbf1/p8_1.jpg) ## 这是我们的例子 一个已知,却一直未被很好 解决的问题 |Carrier|11:06 AM| |---|---| |同步数据|点击进行同步| |我的好友我的群|| ||| ||| ## 非常常见的 - (IBAction)syncButtonTouched:(UIButton *)sender {0 码力 | 48 页 | 4.68 MB | 2 年前3
CurveFS S3本地缓存盘方案Curvefs-S3 本地写缓存盘方案 背景 方案设计 主要数据结构定义 方案设计思考 POC验证 ## 背景 当前,s3客户端在写底层存储的时候是直接写入远端对象存储,由于写远端时延相对会较高,所以为了提升性能,引入了写本地缓存盘方案。也即要写底层存储时,先把数据写到本地缓存硬盘,然后再把本地缓存硬盘中的数据异步上传到远端对象存储。 ## 方案设计 。 • 本地缓存盘的文件内容表示 本地缓存盘存放的文件即是存储到对象存储中的对象。 • 写缓存如何作为读缓存利用 除了写缓存目录,另外引入0 码力 | 9 页 | 150.46 KB | 1 年前3
领域驱动设计&中台/DDD的为与不为## DDD的为与不为 滕云@ThoughtWorks DDCHINA ## 关于我 01 ThoughtWorks架构师&编码者 02 Java/TechOps/DDD 03 《实现领域驱动设计》/《人件》译者 ## 实现 区域驱动设计 IMPLEMENTING DOMAIN-DRIVEN DESIGN ## 我眼中的DDD 道 原则 弱约束 最佳实践 编码强相关 不是架构师专属标榜 对软件匠艺的执着追求 套路化之后的有条理的多 关于软件结构的新思维方式 分离技术复杂度和业务复杂度 ## 我眼中的DDD 道 原则 弱约束 最佳实践 编码强相关 面向对象进阶 数据驱动之反面 优先处理业务逻辑 不是架构师专属标榜 对软件匠艺的执着追求 套路化之后的有条理的多 关于软件结构的新思维方式 分离技术复杂度和业务复杂度 [Image](/uploads/documents/9/3/d/3/93d3a6c71b68211ff5b41379afc2926e/p7_2.jpg) ## DDD为何? ## 为了简单 ## 套路化之后的有条理的多 V S ## 如何做战略设计?  ## 事件风暴?0 码力 | 25 页 | 931.68 KB | 2 年前3
TiDB 可观测性的设计与实现 陈霜## TiDB 可观测性 的设计与实现 ## - 陈霜 ## 精彩继续! 更多一线大厂前沿技术案例 广州站 QCon 全球软件开发大会 时间:2022年7月31–8月1日 地点:广州·万富希尔顿酒店 北京站 GITC 全球大前端技术大会 时间:2022年8月 地点:北京·国际会议中心 北京站 QCon 全球软件开发大会 时间:2022年9月 地点:北京·国际会议中心 g13672fc9a52_0_156 ☑ Externally Shared ▲ Not in a shared drive 我的云端硬盘 / ☐ ArchSummit-TiDB 可观测性的设计与实现 ☆ ☐ 文件 编辑 查看 插入 格式 幻灯片 排列 工具 插件 帮助 上次修改是在 34 分钟前进行的 ## CPU Profiling By SQL Request go-demo • rust-demo ## GetGoroutineStats() executeSQL() end := GetGoroutineStats() queryCost := end.Sub(begin) // 获取执行 SQL 消耗的 cpu stats 信息 ## Trace - Use Go trace to collect runtime information. curl http://localhost:10080/debug/pprof/trace\0 码力 | 39 页 | 3.97 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













