校园短视频社交软件设计(Thrift框架,Python,Golang,MySQL)(论文15000字,外文翻译,程序代码,MySQL数据库)
摘要:本文设计并实现了一个校园短视频社交微信小程序。系统分为客户端和服务端两部分。客户端采用微信小程序开发,微信小程序提供的组件完成了简洁、美观的界面,API实现与用户的交互反馈和与服务端的网络请求。服务端主要采用微服务架构,最上层使用Nginx反向代理实现了负载均衡,分发来自客户端的请求到API服务集群。API服务为承上启下的一层,主要接收来自客户端的请求,进行简单的数据过滤和身份校验后,调用具体服务实现业务逻辑,最终将数据打包返回给客户端。而最重要的各模块服务则完成关键的业务逻辑,将重要的业务数据持久化到Mysql中,与API之间的交互则使用了Thrift框架,实现多语言的RPC调用。每个模块可以单独编写,使用不同语言,极大的提升了开发的灵活性。本次开发使用到了Python和Golang两种语言,意在展示不同语言间如何使用Thrift进行合作开发。本文从系统理论支持、需求分析、系统设计和系统实现等方面逐一详细论述整个系统的开发过程。
关键词:微信小程序;Nginx;Thrift;Python;Golang
Design and Implementation of Campus Short Video Social Software Based on Python
Abstract: This paper describes the process of implementing a campus short video social Wechat APP. The system is divided into two main parts of client and server design. The client uses the mini program to develop and complete the simple and beautiful interface through the components provided by the mini program, and uses the API provided by the mini program to implement feedback with the user and the network request with the server. The service end mainly adopts the microservice architecture. The uppermost layer uses Nginx reverse proxy to implement load balancing and distributes requests from the client to the API service cluster. The API service is a layer that connects the ins and outs. It mainly receives requests from clients, performs simple data filtering and identity verification, invokes specific services to implement business logic, and finally packages the data back to the client. The most important module services complete the key business logic and persist important business data into Mysql. The interaction with the API uses the Thrift framework to implement multi-language RPC calls. Therefore, each module can be written separately, and different languages can be used, which greatly improves the development flexibility. This development uses two languages, Python and Golang, to show how different languages can use Thrift for collaborative development. Whole system is discussed in detail from the aspects of system theory support, requirement analysis, system design and system implementation.
Key words: Mini Program;Nginx;Thrift;Python;Golang
主要内容
主要使用Python完成服务端开发,微信小程序作为前端展示,完成一个微信小程序版的校园短视频社交软件。此系统主要提供用户上传短视频、浏览短视频的核心需要,同时辅以点赞、关注、评论等社交核心元素。
服务架构上主要使用Nginx进行反向代理,实现负载均衡。采用微服务架构[8],在API层下,使用thrift框架实现Python、Golang语言间的RPC调用,使得各模块之间解耦,令系统拥有良好的扩展性。由于系统采用集群部署,可以有效的避免单点故障,极大的提升系统的稳定性。
核心内容上用户可以通过微信授权的方式方便的登录应用,应用使用微信头像和昵称作为用户信息,提升用户的真实性,方便用户之间的交流。核心用户可以通过手机摄像头实时拍摄短视频,也可以选择上传之前拍摄的或经过处理的短视频,并辅以文字内容来表达情感思想,发布到该软件。日常用户可以刷新主页选择按最近发布的短视频或按最热的短视频排序进行浏览,对喜爱的视频进行点赞,对喜爱的视频主进行关注,或者在评论区进行留言交流,表达自己的观点和看法。用户还可以方便的通过点击头像查看视频主的主页,观看他发布的所有短视频。在个人主页,用户可以查看自己发布的相关短视频内容,查看自己的关注列表,对不喜欢的人进行取关操作。总体来说,在这个应用中,用户可以非常方便的使用到所有常用的社交软件具有的功能。
目 录
1 引言 1
1.1 项目背景 1
1.2 项目目的 1
1.3 主要内容 2
2 理论支持 2
2.1 客户端采用微信小程序 2
2.1.1 微信小程序简介 2
2.1.2 微信小程序基本架构 3
2.1.3 微信小程序架构介绍 3
2.2 简单介绍网络编程中的HTTP请求 4
2.3 Nginx介绍 4
2.4 Python的Web微框架Flask介绍 5
2.5 MySQL介绍 5
2.6 Thrift介绍 5
2.7 Golang介绍 5
3 需求分析 6
3.1 系统的功能性需求 6
3.1.1 基于微信小程序的客户端 6
3.1.2 Nginx实现反向代理和负载均衡 6
3.1.3 Python实现API服务 7
3.1.4 各模块服务端 7
3.2 系统的非功能性需求 7
3.3 用例图 8
3.3.1 身份校验用例描述 9
3.3.2 浏览短视频用例描述 9
3.3.3 发布短视频用例描述 10
3.3.4 删除短视频用例描述 10
3.3.5 关注用例描述 11
3.3.6 取关用例描述 11
3.3.7 获取关注列表用例描述 12
3.3.8 获取粉丝列表用例描述 12
3.3.9 获取关注数用例描述 13
3.3.10 获取粉丝数用例描述 13
3.3.11 浏览评论用例描述 13
3.3.12 发表评论用例描述 14
3.3.13 点赞用例描述 14
3.3.14 取消点赞用例描述 15
3.3.15 获取点赞数用例描述 15
4 系统设计 15
4.1 系统结构 16
4.2 微信小程序设计 17
4.3 Nginx服务器设计 18
4.4 API服务设计 18
4.5 各模块服务设计 19
4.5.1 User模块接口设计 19
4.5.2 Item模块接口设计 19
4.5.3 Relation模块接口设计 19
4.5.4 Comment模块接口设计 20
4.6 数据库设计 20
4.6.1 用户信息表 20
4.6.2 短视频信息表 21
4.6.3 关注关系表 21
4.6.4 点赞关系表 21
4.6.5 评论信息表 22
5 系统实现 22
5.1 微信小程序客户端的实现 22
5.1.1 授权登录实现 22
5.1.2 首页实现 23
5.1.3 短视频详情页实现 24
5.1.4 个人页实现 25
5.1.5 发布短视频 25
5.2 实现Nginx负载均衡服务器 26
5.3 实现API服务 26
5.3.1 路由 26
5.3.2 RPC调用 26
5.3.3 授权登录及身份校验 27
5.3.4云存储视频和图片 28
5.4 实现各模块服务 28
5.4.1 User模块 29
5.4.2 Item模块 30
5.4.3 Relation模块 30
5.4.4 Comment模块 31
6 结束语 31
参考文献 32
致 谢 33