有道云笔记端架构设计与重构.pdf

上传人:爱问知识人 文档编号:3333809 上传时间:2019-08-13 格式:PDF 页数:56 大小:7.76MB
返回 下载 相关 举报
有道云笔记端架构设计与重构.pdf_第1页
第1页 / 共56页
有道云笔记端架构设计与重构.pdf_第2页
第2页 / 共56页
有道云笔记端架构设计与重构.pdf_第3页
第3页 / 共56页
有道云笔记端架构设计与重构.pdf_第4页
第4页 / 共56页
有道云笔记端架构设计与重构.pdf_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《有道云笔记端架构设计与重构.pdf》由会员分享,可在线阅读,更多相关《有道云笔记端架构设计与重构.pdf(56页珍藏版)》请在三一文库上搜索。

1、有道云笔记的特色云架构介绍 王奉坤 2013-11-02 有道云笔记简介 多平台支持 自动同步,安全可靠 用户数已超过1500万 大纲 数据与存储结构设计 云端基础架构设计 云端架构的演进 架构相关的特色设计 总结 数据与存储结构设计 设计时要考虑的因素 数据结构设计:功能需求 存储结构设计:性能需求 数据结构设计:功能需求 文本和附件 内容可随时编辑 支持历史版本 笔记可与人分享 数据结构设计:切块存储 基本数据结构:数据切块 只需要上传chunk X、Y 回收chunk C ABCDEF文件切块文件切块 ABXYDEF修改后修改后 ABCDEF ABXYDEF 数据结构设计:三级索引 En

2、try userA/a:3 Meta a_3: meta Chunk a_A: a_B: a_C: a_D: a_E: a_F: 数据结构设计:实现笔记分享 Entry userA/a:3 userB/link Meta a_3: meta Chunk a_A: a_B: a_C: a_D: a_E: a_F: 数据结构设计:支持历史版本 Entry userA/a:4 userB/link Meta a_3: meta a_4: meta Chunk a_A: a_B: a_C: a_D: a_E: a_F: a_X: a_Y: 存储结构设计:性能需求 最频繁的操作请求? 同步:查新 列取目

3、录 获取内容摘要 读取内容 修改上传 存储结构设计:性能需求 数据结构/大小 访问次数 100B 1G 1K 10M 10K 1M 100K 1M 性能优化性能优化 流式存取流式存取cache 存储结构设计:类似于SVN的版本管理机制 Entry / : 12 /notebook1 : 8 /notebook1/note11 : 7 /notebook1/note12 : 8 /notebook2 : 4 /notebook2/note21 : 4 /notebook3 : 12 /notebook3/note31 : 11 /notebook3/note32 : 12 Entry / : 1

4、3 /notebook1 : 13 /notebook1/note11 : 7 /notebook1/note12 : 13 /notebook2 : 4 /notebook2/note21 : 4 /notebook3 : 12 /notebook3/note31 : 11 /notebook3/note32 : 12 存储结构设计:切块后文件的流式读取 切块存储破坏了文件整体结构 以存储序下载chunk 客户端做数据拼接 Chunk a_A: a_B: a_C: a_D: a_E: a_F: a_X: a_Y: 存储结构设计:笔记存储结构 数据结构大小数据结构大小总大小总大小每天访问次数每

5、天访问次数Cache命中率命中率 User Version100B2G1G100% Entry100B20G0.5G100% Meta1K400G0.2G83% Chunk Data025M100T20M0% 大纲 数据与存储结构设计 云端基础架构设计 云端架构的演进 架构相关的特色设计 总结 框架:可扩展的云端架构 框架:鲁棒易用的分布式调用框架 分 布 式 调 用 框 架 Distribute RPC Service proxy RPC Call Switch RPC Proxy RPC Proxy RPC Proxy RPC Proxy RPC Service Impl RPC Serv

6、ice Impl RPC Service Impl RPC Service Impl Distribute Strategy RPC调用 框架:鲁棒易用的分布式调用框架 实现方式: Java reflect Java annotation 优缺点: 实现容易 使用方便 对使用者完全透明 无法支持java以外的语言 Method: public abstract void Protocol.foo(java.lang.String,int) args: Haha, 1001 使用Annotation的方式支持分布式逻辑 指定特殊的策略支持 此外,还可以带点AOP的味道 API:对桌面客户端的AP

7、I支持 API:对桌面客户端的API支持 重量级的API 保留所有数据细节 客户端逻辑支持 API:对web端的API支持 API:对web端的API支持 轻量级的API 屏蔽细节数据结构 服务器端逻辑支持 同步锁:笔记的并行修改与操作隔离 “存储模块”层的操作 “数据库”层的操作 W 时间轴 WW W WW “存储模块”层的操作 “数据库”层的操作 W 时间轴 WW W W 同步锁:笔记的并行修改与操作隔离 解决方案一:数据库的事务支持 问题: 分布式系统事务模型复杂,逻辑脆弱 带来性能的损耗 “存储模块”层的操作 “数据库”层的操作 W 时间轴 WW W W 同步锁:笔记的并行修改与操作隔

8、离 解决方案二:在“存储逻辑”层操作上加“锁” 详细: 通过一致性哈希和分布式调用框架,分发请求到逻辑存储模块 保证对同一个数据的操作分发到同一个逻辑存储模块 在这个模块上加本地“锁” “存储模块”层的操作 “数据库”层操作 W 时间轴 WW W W 同步锁:笔记的并行修改与操作隔离 用户级的事务支持 事务的实现方式:同步锁,用户版本号 版本 检查 Push(Version) Push数据 版本 更新 Pull数据 Pull(Version) No conflict Conflict Conflict Finished Read Lock Write Lock 用户数据回收逻辑 用户任何操作都

9、不能直接删除数据 删除操作:增加一个“已删除”版本 后台异步数据回收 过期的历史版本 用户回收站的过期数据 没有被引用的meta/chunk 大纲 数据与存储结构设计 云端基础架构设计 云端架构的演进 架构相关的特色设计 总结 云端架构1.0版 1.0版架构图 云端架构1.0版 1.0版特点 共用存储逻辑代码 跨进程共享锁 两套API直接存取数据 缺点和问题 共享锁的逻辑非常脆弱 异步流程导致数据一致性问题 架构层次不清晰 云端架构2.0版 2.0版架构图 云端架构2.0版 2.0版特点 引入RPC模块,屏蔽分布式细节 将存储逻辑包装成RPC服务 API通过RPC存取数据 优势 逻辑层次清晰

10、底层对上层透明 API轻量级 云端架构2.0版 云端架构2.0存在的问题 切块逻辑的尴尬 小文件切块效果不佳 大文件基本不修改 存取性能的限制 性能瓶颈:出现在没有想到的地方 类BigTable数据库的逻辑结构 分布式文件系统分布式KV数据库 云端架构3.0版 异构存储,支持非切块存储 Entry /a:4 Meta a_3: meta a_4: meta File a_3: a_4: 云端架构3.0版 文件系统直接存取数据 (1)“冷”文件dump到文件系统 (2) 文件直接存取 (3)逐步取消chunk 性能改进计划 传输协议的改进调研 HTTPS UDT SPDY, http pipel

11、ine CDN上传加速 API协议改进 优化协议表达能力 批量获取API 改进Push机制,彻底消除轮询 可靠的push 大纲 数据与存储结构设计 云端基础架构设计 云端架构的演进 架构相关的特色设计 总结 数据安全保障之一:多备份存储 分布式文件系统的特性之一 有效规避硬件故障带来的安全风险 File DataServerDataServerDataServerDataServer DFS 数据安全保障之二:容灾备份 规避分布式文件系统失败带来的风险 备份方式:整体拷贝 增量备份 增量备份: 原理:Snapshot + 增量change log 优点:数据连续传输 优点:可实现异地备份 优点

12、:可回溯版本的连续性 数据安全保障之二:容灾备份 Table Snapshot time WALogs t Replay by MapReduce New Table Snapshot t0 t 笔记的实时数据处理能力 笔记内容XSS过滤 笔记格式的版本兼容 笔记发微博 基于MapReduce的后台数据处理框架 定义一个任务,只需实现三个接口: UserFilter:定义和筛选要处理的用户 UserData Handler:选择要处理的数据 Reducer(s):数据处理、整合、统计 笔记的后台数据处理能力 笔记的空间回收 笔记图片的OCR识别 笔记附件的搜索支持 笔记内容建索引 满足数据智能

13、化的需求 手写笔记的支持 屏幕适配与排版 手写笔记的二次编辑 自动标签服务 根据内容为用户推荐标签 根据用户行为优化推荐算法 良好的可运维性 上线提出 审批 准备上线 上线 回测 完成 良好的可运维性 上线模拟上线模拟上线模拟上线模拟 不停服上线不停服上线不停服上线不停服上线 自动化测试自动化测试自动化测试自动化测试 丰富的外围可视化工具 集群监控:Ganglia(http:/ganglia.info/) BI系统 实时监控:Vaquero 性能监控服务 大纲 数据与存储结构设计 云端基础架构设计 云端架构的演进 架构相关的特色设计 总结 总结 数据与存储结构设计 考虑功能和性能需求 云端基础架构设计 云端架构,API,同步与事务,回收 云端架构的演进 三个版本的演进 架构相关的特色设计 备份、数据处理、可运维性、可视化 谢谢! Q&A 基础设施:优质云服务的先决条件 附录 文本切块算法: https:/www.usenix.org/conference/fast- 08/avoiding-disk-bottleneck-data-domain- deduplication-file-system http:/citeseerx.ist.psu.edu/viewdoc/summary?do i=10.1.1.12.3222

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1