使用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. PHP0014:PHP操作文件

    查看源代码 用这种方式抓取网页,和原始网页一模一样. 数组不能用echo 将一个网页保存到本地html文件

  2. MySQL 8 在一台机器上运行多个MySQL实例

    可以为每个实例使用一个MySQL Server二进制程序,也可以为不同实例使用同一个MySQL Server二进制程序. 不管哪一种选择,部分参数可能需要不同配置,以避免多个实例之间的冲突. 可能需要 ...

  3. 利用 serviceStack 搭建web服务器

    1,资料地址 参考资料 https://docs.servicestack.net/ https://docs.servicestack.net/create-your-first-webservic ...

  4. Mysql字符串截取,去掉时间,匹配日期等于今日

    Mysql字符串截取,去掉时间,匹配日期等于今日 方案一 select time from jsb where date(time)=date(now()); 方案二 ));

  5. 浅谈python的第三方库——pandas(三)

    令笔者对pandas印象最为深刻的一件事,就是在pandas中已经内置了很多数据导入导出方法,然而本人并不了解,在一次小项目的工作中曾手写了一个从excel表格导入数据到DataFrame的pytho ...

  6. select下拉框相关操作(更新中。。。)

    背景 记录一些关于html标签的操作,基本上都是jquery操作 select下拉框 根据value查找对应option,然后执行选中操作 $("#selectId").find( ...

  7. Java求素数和

    描述 从键盘任意输入两个整数m,n,编程计算并输出m~n之间的所有素数之和. 输入 在一行上输出m和n. 输出 m和n之间(包括m和n)的素数的和 难度 一般 输入示例 2 5 输出示例 10 完成代 ...

  8. javaSE学习笔记(11)--- Map

    javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Jav ...

  9. Android之碎片Fragment

    Fragment是个特别的存在,有点像报纸上的专栏,看起来只占据页面的一小块,但是这一小块有自己的生命周期,可以自行其是,仿佛独立王国,并且这一小块的特性无论在哪个页面,给一个位置就行,添加以后不影响 ...

  10. zedboard通过BRAM实现PS和PL的简单通信

    使用Block Memory进行PS和PL的数据交互或者数据共享,通过zynq PS端的Master GP0端口向BRAM写数据,然后再通过PS端的Mater GP1把数据读出来,将结果打印输出到串口 ...