亿级用户下的新浪微博平台架构

亿级用户下的新浪微博平台架构

序言

新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。

微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。

随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化、服务化和组件化,后台系统从php替换为Java,逐渐形成SOA架构,在很长一段时间支撑了微博平台的业务发展。

在此基础上又经过长时间的重构、线上运行、思索与沉淀,平台形成了第三代架构体系。

我们先看一张微博的核心业务图(如下),是不是非常复杂?但这已经是一个简化的不能再简化的业务图了,第三代技术体系就是为了保障在微博核心业务上快速、高效、可靠地发布新产品新功能。

第三代技术体系

微博平台的第三代技术体系,使用正交分解法建立模型:在水平方向,采用典型的三级分层模型,即接口层、服务层与资源层;在垂直方向,进一步细分为业务架构、技术架构、监控平台与服务治理平台。下面是平台的整体架构图:

如上图所示,正交分解法将整个图分解为3*4=12个区域,每个区域代表一个水平维度与一个垂直维度的交点,相应的定义这个区域的核心功能点,比如区域5主要完成服务层的技术架构。

下面详细介绍水平方向与垂直方向的设计原则,尤其会重点介绍4、5、6中的技术组件及其在整个架构体系中的作用。

水平分层

水平维度的划分,在大中型互联网后台业务系统的设计中非常基础,在平台的每一代技术体系中都有体现。这里还是简单介绍一下,为后续垂直维度的延伸讲解做铺垫:

  1. 接口层主要实现与Web页面、移动客户端的接口交互,定义统一的接口规范,平台最核心的三个接口服务分别是内容(Feed)服务、用户关系服务及通讯服务(单发私信、群发、群聊)。
  2. 服务层主要把核心业务模块化、服务化,这里又分为两类服务,一类为原子服务,其定义是不依赖任何其他服务的服务模块,比如常用的短链服务、发号器服务都属于这一类。图中使用泳道隔离,表示它们的独立性。另外一类为组合服务,通过各种原子服务和业务逻辑的组合来完成服务,比如Feed服务、通讯服务,它们除了本身的业务逻辑,还依赖短链、用户及发号器服务。
  3. 资源层主要是数据模型的存储,包含通用的缓存资源Redis和Memcached,以及持久化数据库存储MySQL、HBase,或者分布式文件系统TFS以及Sina S3服务。

水平分层有一个特点,依赖关系都是从上往下,上层的服务依赖下层,下层的服务不会依赖上层,构建了一种简单直接的依赖关系。

与分层模型相对应,微博系统中的服务器主要包括三种类型:前端机(提供 API 接口服务)、队列机(处理上行业务逻辑,主要是数据写入)和存储(mc、mysql、mcq、redis 、HBase等)。

垂直延伸技术架构

随着业务架构的发展和优化,平台研发实现了许多卓越的中间件产品,用来支撑核心业务,这些中间件由业务驱动产生,随着技术组件越来越丰富,形成完备的平台技术框架,大大提升了平台的产品研发效率和业务运行稳定性。

区别于水平方向上层依赖下层的关系,垂直方向以技术框架为地基支撑点,向两侧驱动影响业务架构、监控平台、服务治理平台,下面介绍一下其中的核心组件。

接口层Web V4框架

接口框架简化和规范了业务接口开发工作,将通用的接口层功能打包到框架中,采用了Spring的面向切面(AOP)设计理念。接口框架基于Jersey 进行二次开发,基于annotation定义接口(url, 参数),内置Auth、频次控制、访问日志、降级功能,支撑接口层监控平台与服务治理,同时还有自动化的Bean-json/xml序列化。

服务层框架

服务层主要涉及RPC远程调用框架以及消息队列框架,这是微博平台在服务层使用最为广泛的两个框架。

MCQ消息队列

消息队列提供一种先入先出的通讯机制,在平台内部,最常见的场景是将数据的落地操作异步写入队列,队列处理程序批量读取并写入DB,消息队列提供的异步机制加快了前端机的响应时间,其次,批量的DB操作也间接提高了DB操作性能,另外一个应用场景,平台通过消息队列,向搜索、大数据、商业运营部门提供实时数据。

微博平台内部大量使用的MCQ(SimpleQueue Service Over Memcache)消息队列服务,基于MemCache协议,消息数据持久化写入BerkeleyDB,只有get/set两个命令,同时也非常容易做监控(stats queue),有丰富的client library,线上运行多年,性能比通用的MQ高很多倍。

Motan RPC框架

微博的Motan RPC服务,底层通讯引擎采用了Netty网络框架,序列化协议支持Hessian和Java序列化,通讯协议支持Motan、http、tcp、mc等,Motan框架在内部大量使用,在系统的健壮性和服务治理方面,有较为成熟的技术解决方案,健壮性上,基于Config配置管理服务实现了High Availability与Load Balance策略(支持灵活的FailOver和FailFast HA策略,以及Round Robin、LRU、Consistent Hash等Load Balance策略),服务治理方面,生成完整的服务调用链数据,服务请求性能数据,响应时间(Response Time)、QPS以及标准化Error、Exception日志信息。

资源层框架

资源层的框架非常多,有封装MySQL与HBase的Key-List DAL中间件、有定制化的计数组件,有支持分布式MC与Redis的Proxy,在这些方面业界有较多的经验分享,我在这里分享一下平台架构的对象库与SSD Cache组件。

对象库

对象库支持便捷的序列化与反序列化微博中的对象数据:序列化时,将JVM内存中的对象序列化写入在HBase中并生成唯一的ObjectID,当需要访问该对象时,通过ObjectID读取,对象库支持任意类型的对象,支持PB、JSON、二进制序列化协议,微博中最大的应用场景将微博中引用的视频、图片、文章统一定义为对象,一共定义了几十种对象类型,并抽象出标准的对象元数据Schema,对象的内容上传到对象存储系统(Sina S3)中,对象元数据中保存Sina S3的下载地址。

SSDCache

随着SSD硬盘的普及,优越的IO性能使其被越来越多地用于替换传统的SATA和SAS磁盘,常见的应用场景有三种:1)替换MySQL数据库的硬盘,目前社区还没有针对SSD优化的MySQL版本,即使这样,直接升级SSD硬盘也能带来8倍左右的IOPS提升;2)替换Redis的硬盘,提升其性能;3)用在CDN中,加快静态资源加载速度。

微博平台将SSD应用在分布式缓存场景中,将传统的Redis/MC + Mysql方式,扩展为 Redis/MC + SSD Cache + Mysql方式,SSD Cache作为L2缓存使用,第一降低了MC/Redis成本过高,容量小的问题,也解决了穿透DB带来的数据库访问压力。

垂直的监控与服务治理

随着服务规模和业务变得越来越复杂,即使业务架构师也很难准确地描述服务之间的依赖关系,服务的管理运维变得越来难,在这个背景下,参考google的dapper和twitter的zipkin,平台实现了自己的大型分布式追踪系统WatchMan。

WatchMan大型分布式追踪系统

如其他大中型互联网应用一样,微博平台由众多的分布式组件构成,用户通过浏览器或移动客户端的每一个HTTP请求到达应用服务器后,会经过很多个业务系统或系统组件,并留下足迹(footprint)。但是这些分散的数据对于问题排查,或是流程优化都帮助有限。对于这样一种典型的跨进程/跨线程的场景,汇总收集并分析这类日志就显得尤为重要。另一方面,收集每一处足迹的性能数据,并根据策略对各子系统做流控或降级,也是确保微博平台高可用的重要因素。要能做到追踪每个请求的完整调用链路;收集调用链路上每个服务的性能数据;能追踪系统中所有的Error和Exception;通过计算性能数据和比对性能指标(SLA)再回馈到控制流程(control flow)中,基于这些目标就诞生了微博的Watchman系统。

该系统设计的一个核心原则就是低侵入性(non-invasivenss):作为非业务组件,应当尽可能少侵入或者不侵入其他业务系统,保持对使用方的透明性,可以大大减少开发人员的负担和接入门槛。基于此考虑,所有的日志采集点都分布在技术框架中间件中,包括接口框架、RPC框架以及其他资源中间件。

WatchMan由技术团队搭建框架,应用在所有业务场景中,运维基于此系统完善监控平台,业务和运维共同使用此系统,完成分布式服务治理,包括服务扩容与缩容、服务降级、流量切换、服务发布与灰度。

结尾

现在,技术框架在平台发挥着越来越重要的作用,驱动着平台的技术升级、业务开发、系统运维服务,本文限于篇幅限制,没有展开介绍,后续会不断地介绍核心中间件的设计原则和系统架构。

原文发布时间:2015-01-21

本文来自云栖合作伙伴“linux中国”

时间: 2024-10-01 03:52:20

亿级用户下的新浪微博平台架构的相关文章

为支持亿级用户,短视频应用应该如何打造技术架构?

本文系美图架构师麦俊生,在Boss直聘主办的直聘学院「对话架构师」活动上的分享整理,介绍短视频社交"美拍"架构实践的总结. 麦俊生,Boss直聘「直聘学院」特邀分享嘉宾.美图架构平台深圳技术总监,曾担任新浪微博.奇虎360技术专家,从事高性能高可用架构设计开发工作,参与建设微博的feed和私信im系统.负责rpc框架motan.cache service. counter service.公用类库等基础建设,以及奇虎360存储服务和基础框架方面的建设.个人擅长性能调优.高可用中间件.分

快捷支付时代,支付宝如何保障亿级用户的性能稳定?

本文从产品和架构演进.性能及稳定性挑战与优化实践.超级APP运维体系.架构上的容灾规划四个方面分享了支付宝APP亿级用户的性能稳定性优化及运维实践.性能方面,主要介绍了性能.电量.流量.内存.存储五个方面的优化.稳定性方面,主要介绍了Crash优化和稳定性优化. 直播视频:点此进入 PDF下载:点此进入 以下为整理内容: 支付宝介绍 刚开始的支付宝内容非常单薄,只有转账.缴费.话费充值.经过五六年的努力,现在的支付宝已经变成了整个蚂蚁金服承载金融业务的一个重大平台,承载着非常丰富的场景,也将作为

高德导航免费背后:迅速突破亿级用户

中介交易 SEO诊断 淘宝客 云主机 技术大厅 高德导航免费背后:迅速突破亿级用户(Techweb配图) [<财经>记者 谢丽容]数字地图.导航和位置服务解决方案供应商高德对外宣布,即日起对旗下"高德导航"手机应用实行免费政策.高德董事长兼CEO成从武称,这是"经过深思熟虑.审时度势之后"的决定. 高德并未同期公布免费后建立一套怎样的商业模式.高德副总裁郄建军对<财经>记者表示,做大用户规模是高德导航目前最大的目标,希望在短期内,用免费政策帮

移动互联网又一个亿级用户产品诞生

百度最近宣布,百度视频APP在移动端的累积激活用户数已经突破1个亿.据百度公布的数据,目前百度视频APP的日活跃用户维持在2000万左右,人均单日使用时长超过80分钟,占据大部分移动视频分发流量. 从近期的数据和流量来看,移动视频已经成为继移动社交,游戏之外,用户平均耗时最长的应用,有望成为移动互联网的又一入口.近期豌豆荚推出的"视频搜索",以及360推出的"影视大全"都将目光锁定在移动视频领域.百度视频客户端同样采取"资源聚合"的思路,将移动领

大数据下的数据分析平台架构

随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求. 作为一家互联网数据分析公司,我们在海量数据的分析领域那真是被"逼上梁山".多年来在严苛的业务需求和数据压力下,我们几乎尝试了所有可能的大数据分析方法,最终落地于Hadoop平台之上. Hadoop在可伸缩性.健壮性.计算性能和成本上具有无可替代的优势,事实上已成为当前互联网企业

亿级用户平台的大数据实践

公司介绍 轻松筹于2014年9月成立,2015年9月注册用户达到100万,2016年9月注册用户突破1亿,并入选民政部网络募捐平台.到今天,轻松筹的手机号注册用户已经超过1.6亿,意味着每7个上网用户里就有1个人使用过轻松筹. 轻松筹每天有300GB的结构化数据产生,数据量以后还会越来越大,要应对的并发量也会越来越多.所以,一个支持PB级以上的数据库来存储这些海量数据并且能够支持及时查询,成了必需. 项目背景(Why) 我们希望筹款能帮助每一位病人重获健康,同时我们也希望解决更多老百姓的社会保障

Mobvista亿级流量背后的云服务架构支撑

Mobvista联合创始人.技术VP黄伟坚接过我的名片时,兴奋地说:"我们在北京也有办事处".这也让我能深切的感受到其作为Mobvista一员的骄傲.成立于2013年的Mobvista主要运营全球移动广告和海外游戏发行两项业务,在2年中公司经历了裂变式的发展,人员从成立之初的4名创始人扩展到现在的250人. 正是因为站在移动广告出海的风口上,Mobvista的业务得到不断的飞跃,这也造成了IT的压力.在全球化业务和稳定性的考虑下使用AWS云服务支撑整体业务,并在业务量的增长过程中实现了

云上实践:轻松打造亿级用户的全球化高性能系统

导读 本文会介绍一个真实的全球性的中等规模的APP应用背后的技术选型与关键组件,涉及到高性能分布式系统.全球化网络布局.大数据平台与数据分析等关键技术. 厂家选择: 国内毫无疑问首选阿云,国外AWS当然是体量最大的,体验也不错,其实对ECS/EC2虚拟机.RDS数据库来说,基本功能.稳定性都相差无几,规模优势越来越明显的情况下,如果没有特殊考虑,基本木有考虑其他小厂的必要了. AWS/阿里云服务各有特色和短长,AWS发力早,国际技术社区/第三方市场更成熟,阿里云也有自己的特色的.很实用的功能如D

[转载]亿级短视频社交美拍架构实战

一.短视频市场的发展 近几年来,短视频应用在国内应用市场引爆,美图公司推出了美拍,相关的产品还有 GIF 快手.秒拍.微视.逗拍.玩拍等,一系列短视频产品的出现也丰富了短视频应用市场. 短视频的相继爆发,与几个因素有关: 1.带宽,随着中国基础网络环境的发展,越来越多的2G移动网民开始转向使用 3G/4G 网络,从而体验到更好的上传下载带宽和更稳定的网络, 目前 3G/4G 的移动用户比例大概占比 85% 以上:同时随着资费的进一步降低,月户平均流量也达到了 360M,甚至不少部分是 GB 甚至