【山大智云项目日志】Seahub+Proset分析(1)

2021SC@SDUSC

在项目的配置结束后,我们团队进入了代码开发和分析环节。在之前的团队分工中,我主要想选择前端方面的开发,前端方面包括Seahub+Proset+Seahub-extra,需要两个人来完成,最终我选择负责的模块是Seahub+Proset,而Seahub+Seahub-extra则由我们团队的武帅鹏同学完成。在正式进行代码分析之前,我先初步学习一下Seahub+Proset的相关知识。

Seahub

Seahub是Seafile的Web前端应用,主要采用了Python+Django框架和JavaScript+React框架。下面的图片展示了Seahub的代码结构:

主要的代码集中在seahub和frontend之中,其中seahub部分主要使用的是Python,而frontend主 要使用的JavaScript。前者主要使用的是Django框架,后者主要使用的React框架,这里我们先了解一下这两个框架。

Django

Django 是一个开放源代码的 Web 应用框架,由 Python 写成,它采用了 MVT 的软件设计模式,即模型(Model)、视图(View)和模板(Template)。Model部分编写程序应有的功能,负责业务对象与数据库的映射(ORM);Template部分负责如何把页面(html)展示给用户;View部分负责业务逻辑,并在适当时候调用 Model和 Template。除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model和Template。用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数,如果不涉及到数据调用,那么这个时候视图函数直接返回一个模板也就是一个网页给用户;如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。具体的流程图如下:

React

React 是一个用于构建用户界面的 JAVASCRIPT 库,它主要用于构建UI。React支持JSX语法,通过使用这种语法,可以在react代码中直接混合使用js和html来编写代码。元素是构成 React 应用的最小单位,它用于描述屏幕上输出的内容。JSX 就是用来声明 React 当中的元素。我们可以使用Babel来将JSX 编译成原生 JavaScript 代码,这样就能在浏览器中运行。

后续在代码开发和分析中我还会继续深入学习Django和React。

Proset

Proset是Seahub的扩充内容,主要分析seafes和seafevents,前者是建立ElasticSearch索引,后者是执行周期性计划任务的脚本。下面的图片展示了Proset的代码结构:

主要的代码集中在elasticsearch以及python中的seafes和seafevents。这里我们先对Elasticsearch进行一个初步的了解,seafes和seafevents的进一步分析学习在之后会进行。

Elasticsearch

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。通过 elasticsearch,我们能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、指标),搜索方式随心而变;同时我们也可以借助Elasticsearch实现分析大规模数据,这对我们山大智云的开发来说十分重要。本次的Elasticsearch开发选择的python语言。

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式。我们可以将Elasticsearch和关系数据库做一个简单的对照。

关系数据库      ⇒  数据库       ⇒     表      ⇒       行        ⇒ 列(Columns)

Elasticsearch  ⇒ 索引(Index)   ⇒ 类型(type)  ⇒ 文档(Docments)  ⇒ 字段(Fields)  

一个Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的文档(行),然后每个文档中又包含了很多的字段(列)。而Elasticsearch最关键的就是提供强大的索引能力了,这也就对应了我们项目中的seafes,seafes就是建立了Elasticsearch索引,也为我们数据的搜索提供了保障。关于seafes的索引建立,我也会继续学习分析。

以上就是我对Seahub和Proset的初步了解和学习,在之后我还会继续对这两部分进行开发分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值