使用SequoiaDB的分布式文件系统搭建流媒体服务器

介绍

如今使用移动互联网的年轻人开始越来越多使用短视频展示自我,而流媒体则是支撑在线视频播放的核心技术。当我们开始构建流媒体站点时,往往面临最大的难题在于大量媒体音视频文件所占用的海量磁盘空间。譬如说,一个标准高清短视频可能需要30-50MB的存储空间,那么存储百万短视频的系统就需要几十TB的存储。而如果我们更进一步需要播放高清电影等视频内容,每个电影需要大概2GB左右的空间,十万部各种电影剧集则需要200TB的存储容量。

为了满足如此海量的音视频文件存储需求,大部分流媒体服务器使用外接NAS甚至分布式文件系统进行PB级海量数据存储。

通过阅读本文,用户可以了解到如何使用SequoiaDB巨杉数据库的分布式文件系统功能,为开源流媒体服务器Emby构建后端可弹性扩展的分布式存储。

Emby是一款被广泛使用的流媒体服务器,允许用户简单一键式部署自己的视频播放系统,将家庭内部或企业存储的图片、音视频文件进行统一管理,并能够在几乎全部设备上在线播放观看。

用户可以在Emby的服务端设置服务器路径指定其所访问的文件系统。一般来说,使用PC机或NAS设备内置的磁盘存储容量有限,因此如果希望将Emby后端的存储使用分布式文件系统替换传统内置盘,可以使用SequoiaDB所提供的分布式文件系统SequoiaFS,提供用户近乎无限可弹性扩展存储容量。

安装SequoiaDB

本文使用Linux Ubuntu Server 18.10作为服务器,SequoiaDB巨杉数据库版本为3.2。

本教程默认使用sudo用户名密码为“sequoiadb:sequoiadb”,默认home路径为/home/sequoiadb。

对于使用CentOS等其他Linux版本的用户,本文所描述的流程可能略有不同,需要根据实际情况自行调整。

下载SequoiaDB标准虚拟机模板的用户可以直接跳过该安装部署步骤。

更多安装细节可以查看SequoiaDB信息中心

1)     下载并安装SequoiaDB巨杉数据库

$ wget http://cdn.sequoiadb.com/images/sequoiadb/x86_64/sequoiadb-3.2-linux_x86_64.tar.gz

$ tar -zxvf sequoiadb-3.2-linux_x86_64.tar.gz

$ cd sequoiadb-3.2/

$ sudo ./setup.sh

之后一直回车确认各个默认参数即可。

2)     使用数据库实例用户创建默认实例

# 默认密码使用“sdbadmin”

$ sudo su sdbadmin

$ /opt/sequoiadb/tools/deploy/quickDeploy.sh

3)     使用root用户创建SequoiaFS文件系统

# 确认fuse内核组件被安装,且版本大于2.9.4。

$ which fusermount

/bin/fusermount

$ fusermount -V

fusermount version: 2.9.8

# 创建名为Nas.Storage的集合容器

$ /opt/sequoiadb/bin/sdb "db=new Sdb(); db.createCS('Nas'); db.Nas.createCL('Storage');"

# 创建mountpoint挂载点目录

$ mkdir -p /opt/sequoiadb/mountpoint

# 退出sdbadmin用户,回到默认sequoiadb用户

$ exit

# 密码默认为“sequoiadb”

$ sudo ln -s /opt/sequoiadb/bin/sequoiafs /usr/local/bin/sequoiafs

# 为fuse内核开启多用户访问权限

$ sudo sed -i "s/\#user_allow_other/user_allow_other/g" /etc/fuse.conf

# 创建sequoiafs所需的目录与空配置文件

$ sudo mkdir -p /opt/sequoiafs/conf/NasStorage/

$ sudo mkdir -p /opt/sequoiafs/log/NasStorage/

$ sudo touch /opt/sequoiafs/conf/NasStorage/sequoiafs.conf

$ sudo chown -R sdbadmin:sdbadmin_group /opt/sequoiafs

# 切换回数据库实例用户,密码默认为“sdbadmin”

$ sudo su sdbadmin

# 创建sequoiafs文件系统

$ sequoiafs /opt/sequoiadb/mountpoint -i localhost:11810 -l Nas.Storage --autocreate -c /opt/sequoiafs/conf/NasStorage/ --diagpath /opt/sequoiafs/log/NasStorage/ -o big_writes -o auto_unmount -o max_write=131072 -o max_read=131072 -o allow_other

# 检查文件系统加载正确

$ mount

sequoiafs on /opt/sequoiadb/mountpoint type fuse.sequoiafs (rw,nosuid,nodev,relatime,user_id=1001,group_id=1001,allow_other,max_read=131072)

安装Emby

本教程使用Emby版本为4.1.1。

1)登录Emby官网https://emby.media下载安装包

或登录sequoiadb用户,使用wget下载安装包

$ wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.1.1.0/emby-server-deb_4.1.1.0_amd64.deb

2)安装Emby Server

# 密码默认使用“sequoiadb”

$ sudo dpkg -i emby-server-deb_4.1.1.0_amd64.deb

3)打开浏览器,登录Linux服务器8096端口

4)按照向导进行配置,用户名密码建议均使用sdbadmin

5)在添加媒体页面添加SequoiaFS挂载点作为外接分布式文件系统

6)在添加媒体库页面,内容类型选择Movies,输入显示名后点击目录旁边的“+”号

7)使用/opt/sequoiadb/mountpoint作为分布式文件系统挂载点路径,并点击OK

8)点击OK进入下一步配置

9)按照向导完成后续配置

上传并使用流媒体服务器

1)将电影视频拷贝入/opt/sequoiadb/mountpoint目录

sftp> put YourName.mp4

Uploading YourName.mp4 to /opt/sequoiadb/mountpoint/YourName.mp4

sftp> put 教父BD双语双字.mkv

Uploading 教父BD双语双字.mkv to /opt/sequoiadb/mountpoint/教父BD双语双字.mkv

# 文件系统中通过ls可以看到文件大小

$ pwd

/opt/sequoiadb/mountpoint

$ ls -la

total 3978136

drwxr-xr-x  2 sdbadmin sdbadmin_group       4096 Jan  1  1970 .

drwxr-xr-x 23 sdbadmin sdbadmin_group       4096 May 15 10:13 ..

-rw-r--r--  1 sdbadmin sdbadmin_group  761962089 May 15 11:03 YourName.mp4

-rw-r--r--  1 sdbadmin sdbadmin_group 3311639424 May 15 11:12 教父BD双语双字.mkv

2)在Emby首页的媒体库点击“刷新元数据”进行后台元数据同步

进入电影库可以看到上传的电影

3)点击电影可以在线播放

结论

SequoiaDB巨杉数据库作为一款分布式数据库,提供包括结构化SQL、与非结构化文件系统和对象存储的机制。

使用SequoiaDB的非结构化存储能力,用户可以轻松基于分布式文件系统接口构建多媒体应用程序,并保持与传统Posix文件系统的完整兼容。

本文向读者展示了如何通过SequoiaDB的文件系统接口能力构建与Posix文件系统兼容的分布式文件系统,同时搭建Emby流媒体服务器。通过使用基于SequoiaDB的分布式文件系统能力,流媒体服务器能够使后台的存储空间得到近无限的弹性扩展能力。


SequoiaDB巨杉数据库入门:快速搭建流媒体服务器的更多相关文章

  1. 巨杉Tech|SequoiaDB 巨杉数据库高可用容灾测试

    数据库的高可用是指最大程度地为用户提供服务,避免服务器宕机等故障带来的服务中断.数据库的高可用性不仅仅体现在数据库能否持续提供服务,而且也体现在能否保证数据的一致性. SequoiaDB 巨杉数据库作 ...

  2. SequoiaDB 巨杉数据库

    传统单点数据库的容量瓶颈,仅仅是分布式数据库所解决的问题之一.更重要的是在未来微服务化应用开发以及云化平台的趋势下,应用不再以“烟囱式”的中间件加数据库模式进行构建,而是采用数千甚至上万的微服务程序构 ...

  3. 【巨杉数据库SequoiaDB】SequoiaDB 巨杉数据库 v3.4 版本正式发布

    深秋时节,SequoiaDB 巨杉数据库在深秋给大家带来了“一把火”.SequoiaDB v3.4 正式发布啦! 分布式交易场景性能大幅提升 SequoiaDB 巨杉数据库3.4版本正式发布,v3.4 ...

  4. SequoiaDB 巨杉数据库Docker镜像使用教程

    为方便用户快速体验,SequoiaDB 巨杉数据库提供基于 Docker 的镜像.本文介绍如何在 Docker 环境下部署 SequoiaDB 分布式集群环境.   集群规划 我们准备在五个容器中部署 ...

  5. koa2+koa-generator+mysql快速搭建nodejs服务器

    koa2+koa-generator+mysql快速搭建nodejs服务器 用koa的脚手架koa-generator可以快速生成项目骨架,可以用于发开或者测试接口 https://github.co ...

  6. [Windows Azure] 使用 Windows Azure 快速搭建 Redis 服务器

    [Windows Azure] 使用 Windows Azure 快速搭建 Redis 服务器   Redis相信玩开源,大数据的朋友们并不陌生,大家最熟悉的使用者就是新浪微博,微博的整体数据缓存都是 ...

  7. Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势

    之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载 ...

  8. 使用 Live555 搭建流媒体服务器

    最近因为工作需要,需要搭建流媒体服务器,所以研究了一下,在此分享我的搭建过程. 搭建过程还是非常简单的! 搭建环境为Centos 7.2 64bit 一.安装gcc编译器 yum install gc ...

  9. Linux-Nginx+rtmp+ffmpeg搭建流媒体服务器

    Nginx+rtmp+ffmpeg搭建流媒体服务器 说明: nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块 具体操作步骤: 安装nginx (1)下载第三方扩展模块ngin ...

随机推荐

  1. A tiny problem with integers

    # A tiny problem with integers 给定长度为N的数列A,然后输入M行操作指令. 第一类指令形如“C l r d”,表示把数列中第l~r个数都加d. 第二类指令形如“Q X” ...

  2. leetcode腾讯精选练习之旋转链表(四)

    旋转链表 题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = ...

  3. Linux学习记录(二):常用工具

    博主使用的操作系统为Ubuntu tmux 终端分屏 安装 Ubuntu使用apt-get安装 sudo apt-get install tmux 使用 默认命令键:Ctrl + B %(百分号) 左 ...

  4. P5016 龙虎斗

    链接:P5016 ------------------------------------ 作为2019年的模拟,还是有必要写一些的 --------------------------------- ...

  5. 【46】谷歌 Inception 网络简介Inception(2)

    Inception 网络(Inception network) 在上节笔记中,你已经见到了所有的Inception网络基础模块.在本节笔记中,我们将学习如何将这些模块组合起来,构筑你自己的Incept ...

  6. 洛谷题解 P1024 【一元三次方程求解】

    原题传送门 题目描述 有形如:ax^3+bx^2+cx^1+dx^0=0这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至10 ...

  7. 怎么解决Chrome浏览器“Failed to load resource: net::ERR_INSECURE_RESPONSE”错误?

    用科学方法安装的arcgisServer,需要修改系统时间,但是修改了系统时间,可能会出各种问题, office 不能正确验证,chrome 不能正常使用,访问网页, 如果直接输入本地地址进行访问的话 ...

  8. 【Debian学徒记事】Debian快速呼出Terminal终端

    Debian快速呼出Terminal终端 书接上回,Debian已经安装完毕 失踪的Ctrl+Alt+T 安装完毕启动,我发现了剑很诡异的事,Ctrl+Alt+T居然失灵了 (在多次测试后发现,Deb ...

  9. [Python] for in单行循环生成dict

    for循环体内的语句只有一行的情况的下,可以简化for循环的书写,尤其当你需要生成一个可迭代对象的时候 d = {x:x*10 for x in range(3)} print(d) d1 = [x* ...

  10. [CTSC2008]网络管理 [树剖+整体二分]

    这题的复杂度可以到达惊人的\(\log^4\)据说还能跑过去(差点没吓死我 直接二分+树剖树套树(\(n \log^4 n\)) 一个\(\log\)也不少的4\(\log\) 但是我有个\(\log ...