熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量与重要性比较高,所以成为 golang 小试牛刀的首批高性能高并发服务。

把大服务拆细, 然后服务化独立部署,更容易简化部署,也容易单点细节优化与升级。多数服务的能力是通用的,如平滑重启、多机房部署等。

关于在线服务,如果 1000 万用户在线,即使每 30 秒一次在线 http 发送打点,那么也有每秒 30 万+的接口 qps。

Golang 提供的 http server 性能非常好,一个普通工程师如果做到单虚机支撑 1w - 2w 每秒的请求量,那么只需要 10 - 20 台后台服务器了。

用其他非高性能语言,需要的机器能需要多翻好几倍; C++ 性能足够,但对工程师要求很高。

房间服务是主要服务, 需要核心保障,所以对房间服务里面的版块,进行了再细粒度的拆分。

对房间信息变更频繁的内容也采用独立存储,如人数计数等字段,这样的缺点是每次去房间信息会多带来一次额外的访问人数服务的成本。这也是架构设计需要权衡点之一。

礼物系统是多数视频直播平台的标配,国内有礼物消费习惯的土豪不少,高峰期送礼物的并发量很大,尤其很多土豪对刷的时候。

礼物系统对一致性要求略高,所以存一份数据建多条索引也是一种选择,也可以降低对事务的依赖。

弹幕交互方式是一个很不错的体验,更偏年轻化,大量用户喜欢通过这种方式与主播互动。

国内网络状况比较复杂,最好根据用户位置选择就近对应运营商的单线机房接入弹幕消息服务,让弹幕更及时。也可以用 BGP 机房,但网络带宽价格会比单线贵不少。

对于大房间,弹幕消息量特别大,主播与用户都看不过来, 在产品策略层面可以做一些体验上的优化。

 

视频直播体验是整体平台最关键点,视频 CDN 是一种让用户就近获取所需流媒体的技术,且解决延时、卡顿等问题。 从技术角度不要只依赖某一 CDN 提供商或线路,业内很多视频直播平台都做了拉流线路互备,推流后视频(转码、转发)集群也是一个可优化的点,做互推是冗余了部分推流资源,但对优化直播流的体验与高可用性显而易见。

包含自由业务逻辑的接口代理服务, 是很多公司都有的一个公共服务,可以把公司内网服务低成本的提供来外网来使用。不过需要考虑好外网安全策略,包括授权认证、服务关系映射、频率限制、业务资源隔离等

能看到最后肯定是对我们技术及业务感兴趣的朋友,熊猫 TV 技术团队正在招聘 Golang 工程师,全部配备高配电脑与 DELL 双屏大屏幕显示器,并提供有挑战性的技术环境。感兴趣朋友请扫码进入(同时也有大量 PHP、前端、运维、DBA 等技术岗位)。

Golang在视频直播平台的高性能实践(含PPT下载)的更多相关文章

  1. Golang在视频直播平台的高性能实践

    http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ...

  2. 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

    在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...

  3. Azure 媒体服务发布可靠的视频直播平台

    Sudheer Sirivara Azure 媒体服务总监 两个月前,Azure 媒体服务发布了视频直播和内容保护产品的公共预览版.这一 Internet规模的直播解决方案已被十余家业界领先的国际广播 ...

  4. 基于Red5的视频直播平台

    搭建环境:Win2008 server + jdk1.8+red5-server-1.0.6 下载地址:https://github.com/Red5 修改启动配置文件(修改为jdk路径): 安装模版 ...

  5. 基于开源Red5搭建的视频直播平台

    开始之前,为了便于大家了解Red5,此处引用网络文字,非原创 引言 流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了用户等待播放的时间.另外通过网络播放流媒 ...

  6. 零基础如何一步一步开始搭建高性能直播平台?现以GitChat·架构来进行说明

    前言 现在直播已经成为移动互联网时代一个新的重要流量入口,从YY.斗鱼到花椒直播,直播已经成为人们分享交流的新方式,应用场景众多,主要分为: 金融类直播:金融直播可应用于实时解盘,在线专家讲座,专家在 ...

  7. iOS平台基于ffmpeg的视频直播技术揭秘

    现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需 ...

  8. 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标1077视频监控平台

    开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中 ...

  9. 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案

    一.方案介绍 1.1.方案背景 在2016年10月25日至28日的安博会上,我们看到了不少的幼教平台厂商,我们注意到大部分的幼教平台,为了追求极佳的用户体验,在微信或者APP端能够做到极快的打开速度, ...

随机推荐

  1. Navicat oracle to postgresql ERR

    可能的解决思路是设好源数据和目标数据库后,先建立表结构,然后修改表结构字段数据类型 参考 https://www.cnblogs.com/stephen-liu74/archive/2012/04/3 ...

  2. c free 使用MSDN library定制

    为了不使用vc6但是还要使用visual assist的各种自动功能,决定使用c free ,但是怎么调用微软的MSDN library呢,我目前使用的版本是MSDN 1.5精简版bing自动翻译的. ...

  3. Vue折腾记 - (3)写一个不大靠谱的typeahead组件

    Vue折腾记 - (3)写一个不大靠谱的typeahead组件 2017年07月20日 15:17:05 阅读数:691 前言 typeahead在网站中的应用很多..今天跟着我来写一个不大靠谱的ty ...

  4. HDU 4468 Spy(KMP+贪心)(2012 Asia Chengdu Regional Contest)

    Description “Be subtle! Be subtle! And use your spies for every kind of business. ”― Sun Tzu“A spy w ...

  5. Linux TCP协议使用的变量

    Linux /proc/sys/net/ipv4/* 变量 TCP变量:somaxconn - INTEGER    listen()的backlog参数的上限,在用户态为SOMAXCONN.默认是1 ...

  6. 学习MVC中出现的一个BUG

    BUG描述:No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.S ...

  7. 【PHP】- session_cache_limiter(private,must-revalidate)是什么意思

    session_cache_limiter(private,must-revalidate)是什么意思 表义一: 指定会话页面所使用的缓冲控制方法: 当session_cache_limiter('p ...

  8. 【bzoj2326】[HNOI2011]数学作业 矩阵乘法

    题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...

  9. jquery/js iframe 元素操作

    1.判断id/ class 是否存在? <script> $(function(){ if(("#id_name").length()>0){ //如果id 存在 ...

  10. 【BZOJ 3643】Phi的反函数 数搜索

    这道题是典型的数搜索,讲究把数一层一层化小,而且还有最重要的大质数剪枝. #include <cstdio> #include <cmath> typedef long lon ...