HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:201805
用户头像

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

关注

评论

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

基于一段神奇的CSS渐变制作噪点效果

南城FE

CSS 前端 css特效 渐变

浅谈MySQL Binlog日志

闫同学

MySQL 数据库 Binlog 11月月更

架构模块六-作业

许四多

在使用Note.js的过程中对于tty对于终端的运用、加密模块以及Assert的事件驱动程序的深入运用理解

恒山其若陋兮

前端 11月月更

基于 Pipeline 实现完整的代码部署流水线

忙着长大#

架构实战营模块6作业-拆分电商系统为微服务

冷夫冲

架构 「架构实战营」

【web 开发基础】PHP回调函数之变量函数 (35)

迷彩

php 回调函数 11月月更

企业级项目开发中的交互式解释器以及global全局定义、Stream流的合理运用和实战【Note.js】

恒山其若陋兮

前端 11月月更

运维进阶训练营 -W05H

赤色闪电

运维

电商平台微服务架构

Jack

架构实战训练营9期

关于登录框的渗透测试

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

【web 开发基础】PHP自定义回调函数之call_user_func_array() (36)

迷彩

回调函数 web开发基础 11月月更 call_user_func_array 自定义回调函数

【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战

恒山其若陋兮

前端 11月月更

跳板机逐渐被堡垒机替代的最主要原因是这个!

wljslmz

运维 堡垒机 跳板机 11月月更

防火墙是网络安全的第一道防线,你认同吗?

wljslmz

网络安全 防火墙 11月月更

ubuntu部署ELK-三节点

忙着长大#

ELK

一文熟悉 Go 的循环结构 —— for 循环

陈明勇

Go golang for 11月月更 for-range

电商微服务架构图

Johnny

架构实战训练营9期

2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。 DROP TABLE IF EXISTS `em

福大大架构师每日一题

MySQL 数据库 福大大

发布MagicOS 7.0, 荣耀如何打造“松弛感”的操作系统?

脑极体

MobPush for Flutter

MobTech袤博科技

极客时间运维进阶训练营第五周作业

忙着长大#

极客时间

云原生下日志采集的3种方式

穿过生命散发芬芳

11月月更 云原生日志采集

「Go实战」基于Prometheus+Grafana搭建完整的监控系统

Go学堂

golang 程序员 个人成长 监控 11月月更

【web 开发基础】PHP类静态函数和对象方法的回调 (37)

迷彩

对象 回调函数 11月月更 静态方法 成员方法

项目经理和Scrum Master之间的不同(译)

Bruce Talk

Scrum 敏捷开发 Agile

模块六-拆分电商系统为微服务

Geek_b35d92

微服务 拆分

分布式锁:不同实现方式实践测评

闫同学

Go 分布式 后端 分布式锁 11月月更

Maven 如何配置推送的仓库

HoneyMoose

「Go实战」记一次降低30%的CPU使用率的优化

Go学堂

golang redis 程序员 个人成长 11月月更

ELK 各组件功能及Elasticsearch 的节点角色类型介绍

忙着长大#

ELK

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