写点什么

Cinchcast 如何支持每日发布 1500 小时的视频内容

  • 2012-08-29
  • 本文字数:1462 字

    阅读完需:约 5 分钟

Dr. Aleksandr Yampolskiy,作为 Cinchcast 和 BlogTalkRadio 的首席技术官,在近期的一篇文章中从 Cinchcast 的软硬件系统、技术选型以及经验教训等方面分享了他们在扩展自己的平台时的一些经历和决策。(Cinchcast 公司提供的解决方案让客户能够基于创建、分享音频内容等服务来吸引和联系他们重要的业务干系人。)

整篇文章主要分为如下几部分:

一、统计数据概况

  • 浏览量每月超过 5000 万
  • 创建了 50000 小时的音频内容
  • 1500 万个流媒体
  • 175,000,000 次广告展示
  • 峰值每秒 40000 并发请求
  • MSSQL、Redis、ElasticSearch 集群中存储的数据达到每天数 TB,
  • 10 人工程师团队
  • 生产环境大概有 100 左右的硬件节点

二、数据中心

线上网站是在布鲁克林的数据中心运行,考虑到可控性,生产环境并没有用到云,但 QA 和 Staging 环境则使用了 Amazon EC2 实例,这一点值得我们参考, 因为测试环境就算不稳定也不会有什么大的风险,而生产环境则不同,大部分公司都愿意把控在自己的运维人员手中。

三、硬件

  • 大概有 50 台 Web 服务器
  • 15 台 MS SQL 数据库服务器
  • 2 台 Redis 的 NoSQL 的键值服务器
  • 2 台 NodeJS 服务器
  • 2 台 弹性搜索集群服务器

四、开发工具

  • NET 4 C#:ASP.NET 和 MVC3
  • IDE 用的是 Visual Studio 2010 Team Suite
  • 用 StyleCop、ReSharper 来强化代码标准
  • 使用敏捷。其中大的功能用 Scrum,小任务则通过看板任务墙管理
  • 测试和持续集成使用 Jenkins + Nunit
  • 自动化测试则是 Selenium 和 Sauce On Demand

五、软件和使用的技术

  • Windows Server 2008 R2 的 64 位操作系统
  • 基于微软 Windows Server 2008 Web 服务器下运行的 SQL Server 2005
  • 负载均衡是 EQL(Equalizer load balancers)
  • Redis 作为分布式缓存层和消息分发队列
  • NodeJS 用来进行实时分析和更新仪表盘
  • 搜索用得是 ElasticSearch,日志分析是通过 Sawmill+ 自定义分析器脚本

六、监测

  • NewRelic:性能监控
  • 性能对 KPI(转换率,页面浏览量)的影响:Chartbeat:
  • Gomez,WhatsupGold,Nagios 等用来各种预警和报警
  • SQL Server monitoring 的监控:来自 Red Gate 的 SQL Monitor

七、处事方法论

  • 尊重他人的时间。不要带着问题来,要拿出解决办法。
  • 不要去追逐当下的热点技术,先实现基本功能,然后再做锦上添花的。务实是最重要的。
  • 成为一个“如何做”的团队而不是总是说“不”的团队
  • 预先处理总比亡羊补牢要好,把安全植入到软件开发生命周期中,通过培训开发人员如何写出安全的软件并把它从一开始就作为业务优先考虑之处。

八、 架构

  • 所有的 Javascript, CSS 和图片都缓存在 CDN,通过 cookie 来区分常规用户和广告用户的请求,并分别指向不同的服务器集群。
  • 向 SOA 架构进行迁移,系统中的关键部分,如搜索、认证、缓存都是用不同语言实现的 RESTFUL 服务。
  • Redis NOSQL 的键值存储(redis.io)被用来作为一个数据库调用之前的缓存层。

九、经验教训

  • SQL Server 数据库中的文本搜索不好用,经常出现 CPU 阻塞,所以他们切换到 ElasticSearch,一个 Lucene 的衍生工具。
  • 微软内置的会话模块容易出现死锁,他们用 AngiesList 会话模块取代了它,并把数据存储到 Redis。
  • 日志是发现问题的关键。
  • 重新发明轮子,有时候也可以是一件好事。例如,在一个供应商的提供的 JS / CSS 的产品导致性能问题的时候,他们通过重写显著改善了网站的性能。
  • 并不是所有的数据都是关系型的。
  • 在开发中不使用指标检测就像在风暴中不参考高度表来降落飞机,因此整个开发过程中,一定要通过网站吞吐量,解决错误的时间、代码覆盖率,等指标来衡量你的效率。 总的来说,对于日 PV 百万级的网站来说,Cinchcast 的架构、研发、运维等层面的技术选型和经验值得学习和参考。
2012-08-29 03:201824
用户头像

发布了 42 篇内容, 共 17.8 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

管理者掌握这5个提问技巧,秒变提问高手

一笑

团队管理 管理 团队建设 提问的艺术 28天写作

28天瞎写的第二百二十四天:食品专业的编程高手

树上

28天写作

企业短信服务质量与用户体验如何监控?短信监测技术震撼来袭

博睿数据

短信 数据监测

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

脑极体

Orleans 知多少 | .NET分布式框架

圣杰

dotnet actor orleans

JVM的内存分代,这篇文章帮你理一理

Java鱼仔

Java 面试 JVM

重学JS | Web Workers让JS存在多线程环境

梁龙先森

编程 大前端 28天写作

Go中的SSRF攻防战

Gopher指北

安全 Go 语言

技术分享 | 漫谈音视频中的拥塞控制

拍乐云Pano

HDFS中的常用压缩算法及区别

王知无

大数据 hdfs

基础不牢,地动山摇;自学进大厂的第18天!

Java架构师迁哥

Windows DHCP最佳实践(三)

BigYoung

windows Windows Server 2012 R2 DHCP

项目管理变更之交付目标的变化

L3C老司机

直播预告丨NLP领域的2020年大事记及2021展望

京东科技开发者

机器学习 AI nlp

LKA是如何实现的(28天写作 Day13/28)

mtfelix

自动驾驶 28天写作

大数据知识专栏 - MapReduce的Combiner实现shuffle调优

小马哥

大数据 hadoop mapreduce 七日更

蔡超:这八点架构师感悟,真的很干货 | 大道至简

李忠良

28天写作

Spring Boot 中使用拦截器

武哥聊编程

Java springboot SpringBoot 2 拦截器 28天写作

竟然输给了一款软件「幻想小说 13/28」

道伟

28天写作

【盘点2020】机房网络性能哪家强?年度冠军揭晓

博睿数据

机房 评测

【并发编程的艺术】JAVA并发机制的底层原理

程序员架构进阶

Java 架构 并发编程 内存模型 28天写作

两层和三层网络架构差异

大数据知识专栏 -MapReduce 自定义排序技术

小马哥

大数据 hadoop mapreduce 七日更

从烟酒茶说系统化学习

张老蔫

28天写作

数据倾斜?Spark 3.0 AQE专治各种不服

王知无

大数据 spark

基于Prometheus+Grafana打造企业级Flink监控系统

王知无

大数据 flink 监控

京东架构师分享的 Redis学习笔记手抄版;

Java架构师迁哥

HTML(四)——建立超链接

程序员的时光

html 程序员 28天写作

程序员生产环境-软件篇

ITCamel

程序员 效率工具 工作效率

1000公里续航动力电池背后的迷雾与真相

脑极体

【我给面试官画饼】软件测试理论基础、质量保证常见面试题——会被面试官赶出来吗?

程序员阿沐

面试 软件测试 测试工程师 质量保证

Cinchcast如何支持每日发布1500小时的视频内容_架构_晁晓娟_InfoQ精选文章