栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【山大智云】源码分析分工 —— SeafileServer

【山大智云】源码分析分工 —— SeafileServer

2021SC@SDUSC

项目结构

  • seafile-server:seafile的服务端核心。
  • seahub:seafile的Web前台,使用Django框架开发。
  • seafdav:seafile的WebDav服务。
  • seafevents:用于处理周期事件(包括建索引、杀毒、自动删除等)。
  • seafes:ElasticSearch与seafile结合,对文件内容建立全文索引。
  • seafobj:用于访问seafile数据模型。
分工

我负责seafile-server的分析。以下是我对seafile-server项目的结构分析:

Seafile-Server结构

以下内容为编译相关

  • autogen.sh

    用于自动生成makefile、configure的脚本。

    完整的工具链详见Wiki - GNU Autotools,流程图如下:

  • configure.ac

    编译配置。

    可以从中看到编译该项目所需的全部Makefile.am,进而确认哪些目录中的源代码需要被编译。

  • Makefile.am

    编译规则。

    该文件与configure.ac结合生成Makefile.in。在随后的过程中通过一系列步骤生成Makefile。

    可以从中看到编译某部分内容所需要的所有源代码,以及该部分源代码的类型(库文件、头文件、源文件等)。

  • m4

    与autoconf有关。

以下内容为开源相关

  • LICENSE.txt

    开源证书。

  • README.markdown

    项目介绍与说明。

  • README.testing.md

    测试说明。

  • run_tests.sh

    测试脚本。(调用ci/run.py)

  • updateversion.sh

    升级脚本。

  • ci

    持续集成(Continuous integration),利用的是Github Actions。(具体配置在“.github/workflows”下)

    • install-deps.sh

      安装依赖项。

    • run.py

      自动化安装、自动化测试。

    • serverctl.py

      被run.py调用,自动化配置seafile-server。

    • utils.py

      向前两者封装了所需的实用方法(主要是系统命令)。

    从“.github/workflows/ci.yml”中可以得知CI的具体流程为:

    1. 进入工作目录
      cd $GITHUB_WORKSPACE
      
    2. 安装依赖项
      ./ci/install-deps.sh
      
    3. 安装并测试。
      ./ci/run.py
      
  • scripts

    各种用于安装、配置、管理的脚本。

  • doc

    文档。

  • tools

    目前只有seafile-admin,一个协助安装与管理的工具。

以下内容为客户端源代码

  • python

    通过python实现了seafile服务端对应的的RPC客户端。

    此子项目依赖pysearpc,一个Searpc的Python Binding(Python调用C库)。详见【libsearpc】。

    • seafile

      初步实现了一个RPC客户端。可以连接到指定的RPC服务端。

    • seaserv

      进一步封装RPC客户端,并加入了异常处理。可以通过环境变量以及配置文件来连接到指定的RPC服务端。

以下内容为C语言实现的服务端源代码

  • lib

    库文件。

  • include

    头文件。

  • common

    通用源文件。

  • fuse

    C实现的用户空间文件系统(Filesystem in Userspace)。

  • server

    C实现的服务端核心。分为Seaf API(RPC协议)和Http API(Http协议)。

    其中Seaf API用于向Seahub提供文件访问服务,Http API用于向桌面客户端提供文件同步服务。

以下内容为Go实现的服务端源代码

  • fileserver

    Go实现的服务端核心,同样也分为Seaf API和Http API。同时还包含了Go实现的用户空间文件系统。

  • controller

    启动seafile-server、ccnet-server、seafile-monitor。修复seafile-server和ccnet-server的进程。

以下内容为测试脚本

  • tests

    通过python实现的RPC客户端进行功能测试。


由上述结构分析可见,seafile-server的核心代码主要在服务端核心这一部分,即lib,include,common,fuse,server以及fileserver中。此后我将重点分析C语言实现的服务端源代码,即lib,include,common,fuse,server中的内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号