
百万在线直播互动平台基于Docker的微服务架构实践
原创2018-05-04 10:04:47本次峰会以软件开发为主题,新浪微博研发中心平台高级系统研发工程师温情在微服务与容器技术专场带来了主题为“基于 Docker 的微博直播互动微服务架构”的精彩演讲。
【51CTO.com原创稿件】本文从具体的项目实例出发和大家讨论如何从无到有地去搭建一个能够快速伸缩的微服务架构。

2017 年 12 月 1 日-2 日,由 51CTO 主办的 WOTD 全球软件开发技术峰会在深圳中州万豪酒店隆重举行。
本次峰会以软件开发为主题,新浪微博研发中心平台高级系统研发工程师温情在微服务与容器技术专场带来了主题为“基于 Docker 的微博直播互动微服务架构”的精彩演讲。
本文将围绕以下主题,探讨直播互动的微服务架构设计:
微博直播互动平台的背景与挑战
2017 年可谓直播大年,新浪微博在自己的 App 推出了直播服务,同时也打通了与淘宝、一直播、红豆等平台的互动。
从技术上说,直播一般分为两个部分:
直播的特点是:由于房间里人数众多,直播平台需要能够支持百万用户同时在线的场景。
直播互动系统的基本模型是一个消息转发的系统,即某个用户发送一条消息,其他用户收到该消息,并执行相应的存储。
消息系统一般具备三个基本的评判标准:实时性、可靠性、和一致性。对于直播这种消息系统而言,它对于可靠性和一致性的要求并不高,而对实时性的要求却非常高。
如果用户给主播送完礼物 10 秒钟或者 1 分钟之后,主播才能收到并回复。这是不可接受的。因此我们需要具有“秒级”的实时性。
而直播互动场景则不同,在用户加入房间之后,就算不做任何操作,也会收到一大堆的推送。这种实时性高的推送方式会给服务器造成持续的压力。
微博直播平台面临的挑战
由于用户对直播的需求量大,且玩法多样,我们面临了来自三个方面的挑战:
微博直播互动平台微服务架构演进
针对上述三大挑战,我们自己搭建了直播互动的微服务架构。上图是直播互动的架构图,我们对业务层进行了模块化的划分,包括发现服务、三方平台服务、推送服务等各种微服务。
在架构选型方面,我们先来看传统的单体模式。单体适用于许多场景,特别适合于敏捷开发。
由于微博互动的流量庞大,且系统相对复杂,因此会面临如下问题:
鲁棒性差。系统中任何一处的 bug,都会导致其他的服务,甚至是整个服务的瘫痪。
而微服务与单体之间的区别在于:微服务会将一些共同功能予以拆分,并且在拆分的基础上,每个模块都能维护自己的 DB 与资源。
因此微服务的好处体现在:
微服务的引入也带来一些新的问题:
难题一:服务拆分
对于微服务的拆分,大家最为关心的问题是拆分的力度。我们采取了如下简单的方式,大家可以在自己的项目中稍做借鉴:
例如:在服务器不够用时,我们只保护核心的服务,而非核心服务不会影响到核心服务。因此是一种根据业务重要性的拆分方式。
完成了基础拆分之后,我们就可以根据业务场景对核心服务进行进一步的拆分:
我们对于 Push Service 进行拆分的原因在于:
同理,如果房间里有 100 万人,则会产生 1000 万的推送量。可见该消息量的量级是非常大的,因此 Push Service 是我们需要频繁扩容的服务。
我们简单地从业务角度对非核心服务进行了如下拆分:
我们来看 Barrage Service 的拆分原因:由于该服务是一种用来批量获取历史消息的对外暴露式服务,那么批量地获取历史消息必然会带来大量的带宽消耗。
因此,我们需要采取如下的优化方式:
如上图所示,我们在进行微服务化拆分之前,各个服务被杂乱无章地杂糅在一起,我们不得不一起部署。因此,我们根据各种策略,按照上述方法进行了服务的拆分。
难题二:服务通信
同时我们也从同步与异步的角度,对服务之间的通信进行了拆分:
对于核心服务和非核心之间的通信交互,我们进行了场景分析。如上图所示,第三方服务(Third Service)包含两个方面:
对于 Barrage Service,我们采取的是共享数据库的方式。由于批量获取回放消息是一项大量消息带宽的服务,因此我们共用一个数据库,通过直接从库里 load,以保证系统资源的提供。
难题三:服务发现
对于 Push Service 类型的服务发现,我们弃用了以前挂在 DNS 处让 DNS 做服务发现的方式,而是采用了自己写的 Dispatch Service。
而对于 RPC 类型的服务发现,我们采用典型的 SOA 架构,包括:Registry 提供可用服务列表、server 提供服务、Client 发现并使用服务。因此,我们采用的是 Motan RPC,以快速地响应各种需求并完成发现。
总结起来,微服务解决了如下四方面的问题:
既然采用了快速扩容的框架,那么我们就需要运维同学的参与和部署。下面来讨论直播互动的弹性扩缩容策略。
微博直播互动平台的弹性扩缩容

由于对微博的使用是一个典型的流量激增场景,因此如果采用盲目购置服务器这一传统的应对方案的话,会造成整体负载饱和度的不均衡。
例如,大家一般在白天和半夜都不会去“刷微博”,服务器和网络的利用率会比较低。只有在晚高峰出现时才会有爆炸式负载的产生。
因此我们采用了快速弹性扩缩容的应对策略,即利用公有云端的各种快速弹性伸缩的资源服务。
但是,由于之前的私有云环境是在我们自己完全掌控的范围内,而如今引入的公有云则带来了环境上的差异性问题。于是我们参考业界的普遍方案,采用了 Docker。
Docker 的网络模型选择一般有 Bridge、Container 和 Host 等实现方式:
因此我们采用了 Host 模式,即:
在 Host 模式下的同一个 eth0 可以被共用,因此各方能够共享宿主机的网络命名空间。
同时由于它省去了各种路由的开销,因此会比 Bridge 模式更快。
可见,Docker 的优点在于简单轻便,非常适用于微博的应用场景。另外,再加上公有云端的一些资源,共同构成了基于 Docker 的混合云架构,我们称为 DockerDCP。
值得一提的是 DCP 已经开源了,在 GitHub 上有一张 Open DCP 的服务图,大家可以去搜索一下。
DCP 的作用是能够在 10 分钟之内扩容并部署 1000 台机器,以应对诸如“三大节日”的流量猛增。
因此,它每天都会有着 6000 亿次 API 的调用,以及万亿次的 RPC 调用。
为了让直播互动与 DCP 实现相关的自动化运维部署与扩缩容,我们每次都会将消息推送至 SLB(负载均衡),通过 Push Service 的推送服务来实现跨网服务的部署。
例如:内网的三个业务方— A、B、C 都有自己的多台服务器,而我们将它们设置为一个“共享池”。
业务 C 会因为峰值流量而申请池中的 3 台服务器,而在业务空闲时则将资源归还到池中。如此,我们可以自由地在私有云和共有云上实现快速扩容,即为“双云扩”。
我们直播互动的自动化扩缩容流程大致分为:
而缩容的流程与上述扩容流程较为类似,在此就不赘述了。
对于上述提到的监控指标,我们分为两大类:
相对应地,指定监控指标的流程为:对性能系统进行相应的压力测试>发现服务的瓶颈点>对瓶颈点进行分析>制定监控的指标。
如今我们也正在尝试着通过机器学习来实现自动化监控。我们一般会每周或是定时对各种服务进行压力测试,以及时地去发现服务的瓶颈。
由于新引入的机器可能会导致整体性能的不一致,而且随着服务需求和代码量的增多,整体服务的瓶颈点也可能会相应地迁移到其他地方,因此我们通过进化版的压力测试,实现了对瓶颈点的实时把握。
就 Push Service 的指标监控而言,我们在压力测试时所监控的业务性能包括:
而对于机器性能的指标,同样会包括带宽、PPS、CPU、内存、IOPS 等。
就监控指标的采集而言,我们分为两个方面:
总结起来,我们在弹性扩缩容方面实现了如下三点:
下面是在实现扩缩容架构之前与之后的两个直播案例的对比。
未实现自动化扩缩容时,我们曾做过对神州飞船回收的直播。由于发生在凌晨 3 点多、且各方人员并未被通知到,因此我们在不清楚会有多少观看流量的情况下采用了全量 Push。
通过次日的事后分析,我们发现:服务的流量已触及瓶颈点,出现了许多的报警,幸好有人员值班,所以并未出现故障。
从维护团队过于疲惫和服务保障的角度出发,我们决定开始着手实施自动化扩缩容。
如上图所示,这是我们在实现了自动化扩缩容后的一次直播。左侧图中蓝线的每一次波谷代表一次扩容操作。
在波谷处于最小长连数时,由于自动扩容出了一堆机器,因此那一时刻并无流量的进入,连接数基本为零。
之后连接数随即迅速上升,服务在 30 分钟之内做了 4 次快速自动扩容。而这些自动化扩容对于运维人员来说都是透明的,只是在扩缩容时会有邮件提醒而已。
温情,新浪微博高级系统研发工程师,从事微博视频和通讯相关系统的研发。当前负责微博直播消息互动系统的研发,推崇高可用,可弹性伸缩,低耦合的微服务架构设计。技术上擅长消息通讯方向,针对系统应对突增流量和高并发方面有丰富的实践经验。
如何启动docker ubuntu
docker第一次在2013年发布,它快速地演变成了一个针对分布式程序的开发平台。 为了满足工业期望,docker正在紧密地开发并持续地带来 新特性的升级。 这样ubuntu发行版中的docker版本可能很快就会过时。 比如, ubuntu 14.10 utopic 中的docker版本是1.2.0, 然而最新的docker版本是1.6.0。 对于那些想要跟随docker的最新开发的人而言,canonical为docker维护了一个独立的ppa。 使用这个ppa仓库,你可以很容易地在ubuntu上升级到最新的docker版本。 下面是如何设置docker的ppa和升级docker。 $ sudo add-apt-repository ppa:docker-maint/testing$ sudo apt-get update$ sudo apt-get install 检查安装的docker版本:$ docker --versiondocker version 1.5.0-dev, build a78ce5c
网络营销方式有哪些
网络营销方式主要有以下几点:1、搜索引擎营销。 需要懂网站代码,然后根据搜索引擎的需要优化网站结构。 2、邮件营销。 通过大量邮件发送达到宣传效果。 3、贴吧营销。 网络贴吧的用户最为集中,所以也就成为了网络营销的必争之地。 不过想要做好,就必须要掌握贴吧霸屏技术,配合各类软件完成闭环营销。 4、博客营销。 博客营销是通过博客网站或博客论坛接触博客作者和浏览者,利用博客作者个人的知识、兴趣和生活体验等传播商品信息的营销。 5、论坛营销。 主要靠策划一个有讨论性的内容引起网友互动,从而实现营销效果,不过还需要配合一些软件才能事半功倍。 6、知识营销。 这种营销含金量最高,通过传播实用的知识实现营销,可谓是商家和用户互利双赢的营销。 7、电子杂志营销。 在网络信息化的今天,看电子书的人越来越多。 商家可以将自己的电子产品通过互联网在各大网站上发表,吸引读者的关注并购买。 8、软文营销。 软文发布平台广,影响时间长,高质量的软文营销能达到非常好的效果。 但软文营销对文案的要求较高。 9、短信营销。 短信媒体是目标更集中、反馈率更强大的渠道。 短信已成为更时尚、更快捷、更大范围吸引潜在目标用户的新颖活动,受到商家和最终消费者的欢迎。 10、口碑营销。 口碑营销是人们通过口碑了解产品、树立品牌,最终达到企业销售产品和提供服务的目的。 这种营销方式对产品的质量要求较高。 11、网络广告营销。 网络广告营销是配合企业整体营销战略,发挥网络互动性、及时性、多媒体、跨时空等特征优势,策划吸引客户参与的网络广告形式,选择适当网络媒体进行网络广告投放。 12、媒体营销。 媒体营销是指企业和社会组织运用媒体的传播来扩大知名度,进行品牌产品推广的行为。 它不仅推动旨在通过社会媒体网络本身流量的网站,它的目的还在于借由争取提高网站的排名提到所有网站上。 13、网络活动营销。 活动营销是围绕活动而展开的线上营销,以活动为载体,使企业获得品牌的提升或是销量的增长。 14、事件营销。 也称为造势营销。 以事件为载体进行传播与宣传,是一种经典的网络营销方式。 15、整合营销。 是一种对各种营销工具和手段的系统化结合,根据环境进行即时性的动态修正,以使交换双方在交互中实现价值增值的营销理念与方法,把各个独立地营销综合成一个整体,以产生协同效应。 16、问答营销。 通过一问一答的方式解决用户问题的同时开展营销,由于在各种营销方式审核较为严格,所以一般高等级账号是开展知道营销的基础。 17、病毒式营销。 是利用公众的积极性和人际网络,让营销信息像病毒一样传播和扩散,营销信息被快速复制传向数以万计、数以百万计的观众,它能够像病毒一样深入人脑,快速复制,迅速传播,将信息短时间内传向更多的受众,是一种常见的网络营销方法。
为什么腾讯新闻门户网越来越垃圾
网易公司(NASDAQ:NTES)一家中国的主要门户网站,和新浪网、搜狐网、腾讯网并成为“中国四大门户”。 网易在开发互联网应用、服务及其它技术方面始终保持中国内业界的领先地位。 自1997年6月创立以来,凭借先进的技术和优质的服务,网易深受广大网民的欢迎,曾两次被中国互联网络信息中心(CNNIC)评选为中国十佳网站之首。 目前提供网络游戏、电子邮件、新闻、博客、搜索引擎、论坛、虚拟社区等服务。 互联网的发展具有强烈的使命感,网易利用最先进的互联网技术,加强人与人之间信息的交流和共享,实现“网聚人的力量”。 在开发互联网应用、服务及其它技术方面,网易始终保持业界的领先地位,并取得了中国互联网行业的多项第一:第一家中文全文检索,第一家提供全中文大容量的免费邮件系统,第一个无限容量免费的网络相册,第一个免费电子贺卡站,第一个网上虚拟社区,第一个网上拍卖平台,第一个24小时客户服务中心,第一个成功运营自主研发国产网络游戏并取得白金地位。 126 logo2001年12月,网易率先推出了首款自主研发的大型网络角色扮演游戏《大话西游 Online》, 2002年8月,在原作的基础上开发了《大话西游 Online II 》,成为国内第一个成功运营的国产网络游戏。 2003年11月,推出大型Q版网络游戏《梦幻西游Online》。 《大话西游 Online》在线人数目前已近三百万。 《梦幻西游Online》在线人数目前已达到惊人的256万。 (为世界同时在线人数最多的游戏)《2006年5月31日,网易自主研发的2.5D游戏《大唐豪侠》正式公测,便创下公测同时在线人数17万的纪录;2007年第一季度,全3D游戏《天下贰》出击国内网游市场;《大话西游Online II》的升级版《大话西游3》已于2007年5月20日进入内测阶段(8月15日公测),其他新游戏产品也将陆续推上运营日程。 目前,网易多款网络游戏多次获得“玩家最喜爱网络游戏奖”和“最佳原创国产网络游戏奖”等行业评选奖项,深受玩家和行业人士好评。 目前,网易游戏已占据国内网游市场最大份额,成为国内自主研发和自主运营能力最强的网络游戏厂商。 作为中国最有成就的互联网门户之一,网易与国内外几百家网上内容供应商建立了合作关系,提供全面而精彩的网上内容。 拥有中国互联网浏览量最大的单一页面首页资源,网易从2005年开始发动强大的内容攻势,凭借拥有丰富的新闻媒体操作经验的内容团队,中国最领先的互联网技术,并掌握新闻、娱乐、体育、财经等各大领域广泛的合作资源,全站流量与用户数增长显著,成为中国互联网用户生活中不可或缺的部分。 在中国互联网协会发布的《INTERNET GUIDE 2007中国互联网调查报告》显示,2006年有超过半数的网民访问了网易内容,用户年到达率达51.3%,荣居门户第二位。 2006年网易首页以遵从用户体验为目标的全新改版,号称网络内容建设的一场变革,使得网易内容整体优势继续提升。 目前网易的内容都采取了两栏结构,页面简洁、流畅、素雅。 更为了尊重用户浏览体验,网易要求对新闻进行二次加工而非简单转载,并在每篇文章后都经常出现对本话题的即时意见和反馈,增强了互动性。 同时充分考虑到不同地域网民的不同需求,在新闻板块中新增加了区域新闻导航功能,这些都深深受到广大网民的认可,从而巩固了网易内容模式的门户地位,也为门户网站的内容建设与发展开辟出了一条新路。 邮件业务是网易公司的发展重点及重要基础服务。 1998年1月,网易在国内率先推出 费电子邮件服务。 2001年11月,网易为了满足用户的更高要求推出了杀病毒、反垃圾和大容量的收费邮箱。 作为中国最大的免费电子邮件提供商,网易积极倡导反垃圾邮件活动,致力于为网民提供全国最好、最快、最大的免费邮件服务,并同时提供更安全更稳定的收费邮箱系统。 网易旗下六大电子邮箱(126、163、188、vip.163、yeah、netease)用户总数已突破1.9亿人,并且在免费邮件中提供最大的网络硬盘。 2000 年 9 月,网易正式推出了全中文搜索引擎服务, 并拥有国内唯一的互动性开放式目录管理系统(ODP),网易已经为广大网民创建
发表评论