- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Seafile项目经验分享教学讲义.pptx
开源的企业文件云存储平台潘凌涛 freeplant@@freeplant内容提纲产品介绍,Seafile 是什么项目理由,为什么要做 Seafile工作原理,Seafile是怎么工作的经验分享,从 Seafile项目从学到的经验Seafile 是什么Seafile 是一个面向企业、团队的云盘,解决文件管理和共享的问题。在此基础上,Seafile 提供群组协作的功能,形成一个以文档为中心的协作平台。资料库和个人页面群组页面和讨论机构页面资料库页面Seafile 特色群组协作功能端到端加密小巧/高性能,可部署于非常多的平台10000 次/月的服务器软件下载1300+ Github Star Seafile 怎么工作 –资数据料库模型一个资料库是一个带历史的去重的文件系统Seafile 怎么工作 – 数据存储文件对象,目录对象,文件块存在操作系统的文件系统上,或者 S3/Swift/Ceph 这样的外部存储中。结构化数据存在 MySQL 或者 SQLite。同步算法定期到服务器查看最新的 Commit下载文件和元信息,和本地内容归并本地有修改,生成新的 Commit,并增量上传到服务器Seafile 怎么工作 – 架构Ccnet 负责通信,Seahub 网站界面,HttpServer 模块负责网页端的文件上传下载。Seafile 负责数据管理和同步。实现语言选择Ccnet/Seafile/HttpServer 用 C 语言实现,使用 libevent 事件循环+线程池处理异步任务的架构。Seahub 使用 Python Django 框架。TaskDaemon 处理后台发邮件等任务,用Python 语言。实现语言选择进程间通信使用自己设计的 RPC。用 python 和 c 都上实现了一遍 RPC Server/Client。用 json 来做数据交换的格式, 以支持跨语言的数据交换。Seafile 项目经验产品设计架构设计实现技术选择产品设计在确定功能核心的基础上,列出最小功能集合,把易用性和符合大众习惯放在第一位来进行设计产品设计Seafile 的核心是团队文件共享,群组和多资料库同步是最基本的功能多资料库同步照成了一定的入门难度,但是我们认为是必要的。产品设计原来为了方便,客户端的界面是用 Python 来实现了一个本地的 Web 界面。造成了不少混淆,这是不符合大众习惯的反面例子。后来我们改成了 Qt。架构设计客户端不应该采用复杂的多进程架构通信协议选择程序内部的多组件(可能分布在多个机器上)通信,效率和便捷性是第一位的,在 TCP 协议上直接设计一套 RPC 是最好的。多程序间以及互联网的通信,互操作性才是最重要的。HTTP协议才是互联网标准的通信协议。通信协议选择 – HTTP 协议HTTP 的坏处是比较复杂,它不是一个为传输文件而设计的协议。在处理文件传输的时候,有太多的小陷阱。好处是一旦使用了 Http 协议,你的应用就能使用上 Proxy, Cache, Load Balance 这些基础服务。实现语言选择客户端:C/C++ 是最好,最成熟的跨平台语言服务器:Python 写 Web 和脚本都是非常好的选择。追求性能的地方要用 C。总结难点:无论是服务器还是客户端都要运行在多个平台上。功能选择还有架构设计上都要保持简单。使用最成熟的、支持最广泛的实现技术。如果重新编写客户端使用单进程,用 QT 框架, C++ 语言。客户端和服务的通信使用 HTTP 协议。服务器端保持目前的架构,使用 Python + C。关于 Seafile 更多信息
文档评论(0)