视频私有云实战:基于Docker构建点播私有云平台
私有云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序。其核心属性是专有的资源。本篇文章将会结合网易云信的实践经验,以全局概述的方式带大家认识点播私有化平台构建的整体架构面貌。
推荐阅读
《高并发IM系统架构优化实践》
云计算的出现,通过硬件的虚拟化将大量的服务器硬件抽象为巨大的资源池,可以动态的为用户提供基础设施、平台和应用三种形式的服务。目前企业的使用方式有公有云和私有云。公有云下,企业可以抛弃复杂的基础设施构建和维护,按需购买计算资源和应用服务。但是考虑到一些数据的敏感性和网络互连互通问题的限制,企业将自己最核心的业务完全托管至公有云有很大顾虑。因此,基于业务上的可靠性、安全性、可控性,很多企业选择建设私有云。
私有云是为一个客户单独使用而构建,因而提供对数据、安全性和服务质量的有效控制。前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序。其核心属性是专有的资源。
架 构
点播私有云平台的模块设计

基础服务包括:
l 缓存、数据库、消息队列等部署在PaaS层的服务,提供数据的存储和访问。
l 容器管理基于Docker和Kubernetes管理点播服务各个组件的生命周期。
能力管理集群包括:
l 上传服务集群,基于S3设备的分布于不同节点的断点上传。
l 流媒体服务集群,支持视频的边下边播等播放特性。
l 转码集群,处理视频转码的引擎。
通过提供基础服务和能力管理集群构建平台服务,用户只需要在此基础上接入业务应用,集成播放SDK和上传SDK,即可快速构建点播服务。
点播私有云平台的部署实施设计

上图阐述了点播私有化平台的最小部署集群,其中控制集群包含通过基于Openstack进行的硬件资源虚拟化、Docker和Kubernetes实现的容器服务管理、基于虚拟资源和容器的哨兵监控以及账号管理。计算集群包含点播服务组件的部署以及依赖的存储、数据管理服务。
平台组成
整个私有化平台从底层向上构建包括:硬件资源的虚拟化、数据存储服务构建、点播组件服务部署。
硬件资源的虚拟化

上图阐述了将硬件资源虚拟化的分层抽象架构:
IaaS:基于Openstack的云计算基础服务(包括云计算、云网络和本地存储)
将硬件资源虚拟化为云主机,支持云主机的管理操作(创建、启动、停止、重启、删除、快照、修改规格、离线迁移、修改云主机名称等操作)、镜像快照管理、安全组管理、网络资源管理(通过管理内网IP和外网IP浮动池,使用获取,销毁释放至IP池)、监控报警(云主机的各项指标监控)。
Pass服务:基于IaaS构建的多租户PaaS服务(包括存储服务、数据库)
Kubernetes:多租户的集群编排的容器服务
Kubernetes服务为分布式应用服务提供容器的创建、编排、调度、服务发现、弹性伸缩等功能。基于Kubernetes的特性同时融合基础服务的负载均衡服务能够保证服务的高可用、高可靠、弹性扩容、不同级别的服务隔离。
管理服务:提供用户管理和API操作相关服务
提供产品的开发环境、测试环境、线上环境等生命周期的容器服务平台。通过SOA服务化系统的部署,支持静态资源发布、后端服务的动态扩容发布、服务的自动上下线等。
数据存储服务构建
PaaS层上数据库的构建
基于MySQL在计算节点上进行主从部署,隔离网络环境,提供私有网络实例。所有实例都是高可用实例,即每个实例都有master和slave角色。slave宕机时,不会对服务产生影响,master发生宕机的情况,会切换至slave实例,同时服务管理会拉起master实例。从而提供稳定可靠的数据库服务,提供多重安全防护措施和专业的备份、恢复等功能。
PaaS层上存储服务的构建
基于S3设备,同时提供多节点的断点上传、以及图片和视频处理云信息获取服务。提供高可用、支持断点续传,同时针对视频文件特性,获取视频文件元信息的存储特性。其中上传服务和云信息获取服务采用Docker镜像部署,保证服务的管理自动化。
点播组件服务部署
所有点播组件的部署基于Docker镜像,通过容器管理服务保证服务的高可用以及自动化管理。组件图如下所示:

l Registry:服务注册与发现的注册中心。部署原生的zookeeper集群作为独立的注册中心,主要使用zookeeper提供的一致性同步协调能力和服务探活能力。zookeeper的部署采用Docker容器,利用容器的服务管理能力保障服务的稳定、高可用。
l Consumer:调用远程服务的服务消费方。包含对外提供的API接口和为直播录制视频存储开放的接口。用户通过接口进行视频上传、转码和管理。消费方服务部署采用Docker容器,利用容器的服务管理能力保障服务的稳定、高可用。
l Provider:调用远程服务的服务提供方。包含视频处理服务、视频检测服务、录制视频处理服务、统计服务。提供方服务部署采用Docker容器,利用容器的服务管理能力保障服务的稳定、高可用。
l Monitor:统计服务的调用次数和调用时间的监控中心。
组件间调用关系
l 服务提供者启动,向注册中心注册自己提供的服务。
l 服务消费者启动,向注册汇总新订阅自己所需的服务。
l 注册中心基于长连接推送服务提供者列表给消费者。
l 服务消费者从列表中,基于一定的负载均衡算法,选一台进行调用,如果失败,再选取另一台调用。
l 服务消费者和提供者,内存中累计调用次数和时间,定时发送统计数据到监控中心。
优 点
私有云相比较于公有云,在数据安全、充分利用现有硬件和软件资源、服务质量、管理流程上有突出优势。基于Docker构建点播私有云平台在具有以上优势的同时,还具备资源弹性管理、监控完善、部署简易、自动化维护等特性。
(1)数据安全。由于存储服务部署于用户的硬件环境,构筑在防火墙之后,同时存储服务的高可用,能够保证用户数据的可靠和安全。
(2)监控完善。上述描述的哨兵系统介入整个点播私有化平台的构建过程,能够及时上报各个过程中组件的异常情况。
(3)资源弹性管理。基于Openstack构建IaaS平台,能够自由管理创建云主机。基于Docker和Kubernetes构建容器管理服务,能够基于服务镜像自由创建服务,同时容器管理服务能够做到弹性扩容。
(4)部署简易、自动化维护。在通过事先编排好的脚本构建好基础IaaS平台后,利用服务镜像能够快速部署服务。容器管理服务的服务发现能力使得服务的维护变得简单。
总 结
整体来说,私有云由于其特性,在实施过程中,运维成本远远高于开发成本。所以,在面向用户交付实施的过程必需简易,后续维护尽量做到自动化。尽大可能减少人工介入。本文构建过程中采用的架构技术特点(Openstack、Docker、Kubernetes、zookeeper)比较符合这些特点。本文以全局概述的方式试图带大家认识点播私有化平台构建的整体架构面貌。后续将会在此基础上不断深入每个过程的细节,探讨实现的考虑点和合理性。想要获取更多产品干货、技术干货,欢迎关注网易云信博客。
视频私有云实战:基于Docker构建点播私有云平台的更多相关文章
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...
- 基于 Docker 构建企业 Jenkins CI平台
持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...
- 基于docker构建flink大数据处理平台
https://www.cnblogs.com/1ssqq1lxr/p/10417005.html 由于公司业务需求,需要搭建一套实时处理数据平台,基于多方面调研选择了Flink. 初始化Swarm环 ...
- 基于Docker构建企业Jenkins CI平台
- 【原创】基于Docker的CaaS容器云平台架构设计及市场分析
基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交 ...
- Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务
本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...
- 【docker构建】基于docker构建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 基于docker构建jenkins和svn服务(转)
码农们很定都知道svn的重要性,机器坏掉丢代码的惨痛教训想必很多人都有. jenkins可能很多人都不了解.这是一个持续集成的工具,在敏捷开发领域很流行:跟svn结合可以实现定期build.check ...
- Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了.七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那 ...
随机推荐
- C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)
原文:C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号.密码) 目录: 1,界面设计 2,数据模型的建立与数据绑定 3,添加QQ数据 4,修改QQ数据 5,删除QQ数据 6,密码选 ...
- 使用python3的base64编解码实现字符串的简易加密解密
import base64 copyright = 'Copyright (c) 2012 Doucube Inc. All rights reserved.' def main(): #转成byte ...
- Http请求格式(在Linux下使用telnet亲测,通过这篇我才明白)
命令行窗口中用telnet测试HTTP协议请求消息格式响应消息格式1. 命令行窗口中用telnet测试HTTP协议 HTTP消息是由普通ASCII文本组成.消息包括消息头和数据体部分.消息头以行为单位 ...
- BZOJ 3329 Xorequ 数字DP+矩阵乘法
标题效果:特定n,乞讨[1,n]内[1,2^n]差多少x满足x^3x=2x x^3x=2x相当于x^2x = 3x 和3x=x+2x 和2x=x<<1 因此x满足条件IFFx&(x ...
- get与post一些特殊情况下
p=574"> 文章已经迁移至http://androiddevelop.cn/?p=574 版权声明:本文博客原创文章.博客,未经同意,不得转载.
- IdentityServer学习目录
IdentityServer IdentityServer的基本概念与特性 IdentityServer流程图与相关术语 最简单的IdentityServer实现 最简单的IdentityServer ...
- Poco vs Boost(Poco也有不少优点,特别是网络功能更强)
POCO的优点: 1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级. 2) 比 boost:asio更全面的网络库.但是boost:asio也是一个非常好的网络库. ...
- MVVM模式的几个开源框架
原文:MVVM模式的几个开源框架 实现MVVM的框架有很多,如: • MVVM Light Toolkit: http://mvvmlight.codeplex.com • Microsoft Pri ...
- 【Android】解决微信调起支付接口没反应,调不起来微信的问题
原文:[Android]解决微信调起支付接口没反应,调不起来微信的问题 //#前言 吐槽一下,微信支付的sdk真难用,文档混乱,坑不少. 正文:可能引起这种情况的问题 1. 最不能出现的 你的APPI ...
- .NET与Java互通AES算法加密解密
/// <summary>AES加密</summary> /// <param name="text">明文</param> /// ...