私有云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序。其核心属性是专有的资源。本篇文章将会结合网易云信的实践经验,以全局概述的方式带大家认识点播私有化平台构建的整体架构面貌。

推荐阅读

几十万人同时在线的直播间聊天,如何设计服务端架构?

高并发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构建点播私有云平台的更多相关文章

  1. DevOps实践之一:基于Docker构建企业Jenkins CI平台

    基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...

  2. 基于 Docker 构建企业 Jenkins CI平台

    持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...

  3. 基于docker构建flink大数据处理平台

    https://www.cnblogs.com/1ssqq1lxr/p/10417005.html 由于公司业务需求,需要搭建一套实时处理数据平台,基于多方面调研选择了Flink. 初始化Swarm环 ...

  4. 基于Docker构建企业Jenkins CI平台

  5. 【原创】基于Docker的CaaS容器云平台架构设计及市场分析

    基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交 ...

  6. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

  7. 【docker构建】基于docker构建wordpress博客网站平台

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...

  8. 基于docker构建jenkins和svn服务(转)

    码农们很定都知道svn的重要性,机器坏掉丢代码的惨痛教训想必很多人都有. jenkins可能很多人都不了解.这是一个持续集成的工具,在敏捷开发领域很流行:跟svn结合可以实现定期build.check ...

  9. Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了.七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那 ...

随机推荐

  1. SWIFT学习笔记02

    1.//下面的浮点文字等于十进制12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalD ...

  2. Python: 文件操作与数据读取

    文件及目录操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块,主要用到的几个函数是, import os 返回指定目录下的所有文件和目录名: os.listdir() 重命名: ...

  3. Leetcode 318 Maximum Product of Word Lengths 字符串处理+位运算

    先介绍下本题的题意: 在一个字符串组成的数组words中,找出max{Length(words[i]) * Length(words[j]) },其中words[i]和words[j]中没有相同的字母 ...

  4. Poco logger 日志使用小析

    Poco logger 日志使用小析 Poco logger 日志使用小析 日志 logger 库选择 Pocologger 架构简析 步骤一 生成消息 步骤二 写入logger 步骤三 导入chan ...

  5. python 教程 第二十二章、 其它应用

    第二十二章. 其它应用 1)    Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c ...

  6. 如何构造请求处理对象链(Pipeline)

    在开发中,我们经常会遇到这样一个场景:传入一个对象,经过不同的节点对这个对象做不同的操作,比如ASP.NET Core 中的pipeline,IIS中的HTTPpipeline等.在这类问题中,往往我 ...

  7. 【Quartz】定时器初步实验(一)

    原文:[Quartz]定时器初步实验(一)     以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不. ...

  8. Qt翻译---Thread Support in Qt

    Thread Support in Qt QT提供线程支持在平台独立的线程类.一个安全线程的传递事件的方式,一个信号槽的链接在线程之中.这使得开发多线程容易.多线程程序也是一个有用的范例为不冻结用户界 ...

  9. [数字dp] hdu 3271 SNIBB

    意甲冠军:有两个查询: q=1.在[x,y]间隔,兑换b十进制,数字和m多少个月. q=2.在[x,y]间隔,兑换b十进制,数字是m第一k的数目是多少(十进制),没有输出由给定的主题. 思维: 和比特 ...

  10. 【Linux知识】server性能测试--UnixBench

    链接地址: http://blog.csdn.net/jason_asia/article/details/38309079 1.1.   server性能测试UnixBench 分别DELL R72 ...