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

推荐阅读

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

高并发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. POJ 1438 One-way Traffic

    意甲冠军: 与 http://blog.csdn.net/houserabbit/article/details/38958891 类别似  仅仅不是将原本的无向图变为混合图 思路: 在上一篇我也写过 ...

  2. ASP.NET Core Razor 视图起始页 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Razor 视图起始页 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 视图起始页 上一章节中我们介绍了布局视图, ...

  3. WPF 实现水纹效果

    原文:WPF 实现水纹效果 鼠标滑过产生水纹,效果图如下:     XMAL就放置了一个img标签   后台主要代码 窗体加载: private void Window_Loaded(object s ...

  4. 使用openssl工具生成密钥

    下载Openssl工具 进入OpenSSL工具,输入以下命令. OpenSSL> genrsa - #生成私钥 OpenSSL> pkcs8 -topk8 -inform PEM -in ...

  5. react项目实践——(1)使用webpack创建项目

    1. 新建文件夹,命名为项目名称——myapp,并打开myapp文件夹. mkdir webpack-demo && cd webpack-demo 2. 在./myapp中打开命令行 ...

  6. .NET Framework 源代码

    微软在线源代码:http://referencesource.microsoft.com/ 压缩包:http://download.csdn.net/detail/xunzaosiyecao/8497 ...

  7. 如何把Go调用C的性能提升10倍?

    目前,当Go需要和C/C++代码集成的时候,大家最先想到的肯定是CGO.毕竟是官方的解决方案,而且简单. 但是CGO是非常慢的.因为CGO其实一个桥接器,通过自动生成代码,CGO在保留了C/C++运行 ...

  8. sql in(inner join)

    查看执行任务可知,使用in关键字,会进行inner join,找出匹配项  

  9. jquery对象及页面加载完成写法

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  10. 读BeautifulSoup官方文档之html树的搜索(2)

    除了find()和find_all(), 这里还提供了许多类似的方法我就细讲了, 参数和用法都差不多, 最后四个是next, previous是以.next/previous_element()来说的 ...