【发布时间】:2018-06-06 02:48:24
【问题描述】:
我正在尝试使用
建立一个视频上传、查看、分享网站软件:
后端数据库MySQL 5.7.19
HTTP 服务器:Apache 2.4.27
服务器硬件信息:
Window 2012 server 至强处理器 32 GB RAM
240 GB Intel 730 Series SSD
4 SAMSUNG 850 PRO 2.5" SSD 1TB(总共 4TB)
用于缓存的 Memcached 1.45
BACKEND': 'django.core.cache.backends.memcached.MemcachedCache
我担心性能和可扩展性。
我想分享我的方法,如果我错了,请纠正我,或者你可以建议我更好的方法。
我已经在 Django.contrib.auth.model>>User 上有了默认用户数据库 并将使用相同的用户信息上传、点赞、观看和其他与视频的互动
01.创建 Model.py(这是示例)
from django.db import models
from django.contrib.auth.models import User
class Channel(models.Model):
name = models.CharField(max_length=100)
subscribers = models.ManyToManyField(User, related_name='+', blank=True)
creation_time = models.DateTimeField(auto_now_add=True)
modified_time = models.DateTimeField(auto_now=True)
class Subscription(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')
channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
notifications = models.BooleanField(default=True)
class Playlist(models.Model):
name = models.CharField(max_length=100)
video = models.ManyToManyField('Video')
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Category(models.Model):
name = models.CharField(max_length=100)
class ChannelSettings(models.Model):
channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
verified = models.BooleanField(default=False)
02 创建 View.py
渲染 Html 模板框架。 如视频观看页面、频道页面、播放列表页面、历史页面、搜索页面 我不会使用 Django 模板标签来填充任何信息。
03 创建api.py
使用 django rest 框架创建 Rest API 有了这个,我将获取并放置视频信息、元数据、喜欢、观看次数和其他更新。
04 JavaScript
通过 Ajax 读取信息并动态呈现页面。 例如获取观看历史列表并使用缩略图进行渲染。等在html页面中。
请建议我构建具有视频上传进度、自动缩略图创建和重要视频压缩的视频上传页面的最佳方法。
关于我的视频上传网站的一般信息:
截至目前的大约视频:5000+(平均时间 30 分钟)
用户:400 +
原始视频大小 - 4K、2K 和最小 1280*720
这种方法在性能和规模方面是否足够好?
【问题讨论】:
-
不是播放列表有很多视频吗?它可能是视频的 M2M 领域
-
可扩展性是一个单独的主题,可能是针对 Server Fault SE 的,但总的来说,问题是您希望在不久的将来扩展多远以及(2)可靠如何你需要服务。对于任何一种体面的可靠性,单个服务器都不会这样做。如果可能,建议通常使用亚马逊、微软等提供的云 SaaS 服务。
标签: python mysql django django-models django-rest-framework