62

新浪微博温情:基于微服务的微博直播互动架构设计经验分享

 6 years ago
source link: http://news.51cto.com/art/201711/559087.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

新浪微博温情:基于微服务的微博直播互动架构设计经验分享

原创
作者:杜美洁 2017-11-25 19:11:45
新浪微博研发中心平台高级系统研发工程师温情将在WOTD全球软件开发技术峰会的微服务与容器技术专场带来主题为"基于Docker的微博直播互动微服务架构"的精彩演讲,届时他将与来宾分享如何利用当下的技术热门话题‘微服务’,设计出一个稳定的支持百万在线的微博直播互动微服务架构。

【51CTO.com原创稿件】2017年12月01日-02日,由51CTO主办的WOTD全球软件开发技术峰会将在深圳中州万豪酒店隆重举行。本次峰会以软件开发为主题,数十位专家级嘉宾将带来多场精彩的技术内容分享。届时,新浪微博研发中心平台高级系统研发工程师温情将在微服务与容器技术专场带来主题为"基于Docker的微博直播互动微服务架构"的精彩演讲,届时他将与来宾分享如何利用当下的技术热门话题‘微服务’,设计出一个稳定的支持百万在线的微博直播互动微服务架构。51CTO诚邀您莅临大会,与我们共享技术带来的喜悦。

  会前,51CTO记者采访了温情,针对微服务架构应用,微博直播互动微服务架构设计等内容分享了自己的经验。

  【讲师简介】

微博-研发中心平台高级系统研发工程师温情

微博-研发中心平台高级系统研发工程师温情

  温情,微博研发中心平台高级系统研发工程师,从事微博视频和通讯相关系统的研发。当前负责微博直播消息互动系统的研发。个人推崇高可用,可弹性伸缩,低耦合的微服务架构设计。技术上擅长消息通讯方向,针对系统应对突增流量和高并发方面有丰富的实践经验。

  我们为什么需要微服务架构?

  微服务(MicroServices)架构是当前互联网业界的一个技术热点,我们究竟为什么需要微服务架构?它能解决哪些问题?

  对此,温情认为,微服务架构可以解决两大难题:

  一方面,在一个系统功能比较单一的情况下,用单体式的方式进行开发部署是没有问题的,但是随着业务需求增多,复杂度增高,任何一次小需求的变更都需要进行打包上线、测试、部署,导致开发团队难以进行敏捷开发,每次添加新功能和修复bug都会变得非常耗时。一个应用越复杂,依赖的资源越多,启动速度越慢,难以实现快速扩展。

  另一方面,随着开发人员越来越多,维护同一个应用,任何一个人的严重bug,例如内存泄漏等问题,都会导致整个服务不可用。

  而微服务架构可以解决这些问题,所以微服务架构应运而生了。

  微服务架构的优势与不足

  事物的存在是具有两面性的,微服务架构也一样,存在着优势和不足。温情表示,微服务架构的优势与不足表现的都很明显。

  优势在于:***,通过服务划分的方式,解决了复杂性问题。第二,每个微服务独立开发,不同的开发团队可以用不同的语言,不同的技术实现。第三,每个微服务独立部署,独立扩展,减少服务之间依赖,同时不同服务的类型是不同的,有些是内存性,有些是CPU性,可根据服务类型选择不同类型的服务器。

  不足在于:***,相互依赖的服务之间的通信问题,可能会因为网络等因素而增加新的开销。第二,微服务拆分后,服务规模的增加,提高了运维的难度。第三,任何请求,在依赖的服务中都可能出错,排查问题的难度增加。

  温情建议,虽然微服务架构有着很明显的优势,但是企业还需根据实际情况来考虑是否应用微服务。尤其在企业系统复杂度不高,业务不复杂的场景下,尽量还是用单体式开发。而千万不要为了“微服务”而强行进行微服务化。微服务不仅仅对开发人员提出了新的要求,同时也需要更加强大的运维团队支持。在系统复杂度不高的场景下,引入微服务,可能会成倍地增加维护的成本。同时也可能会引起难以快速响应需求,线上问题难以快速定位等问题。

  微博直播互动微服务架构设计需要注意的那些细节

  谈及微博直播互动微服务架构的设计,温情以目前正负责的微博识别消息互动系统的研发项目为例,对架构设计需要注意的细节等问题进行了深入的分析解读。

  微博直播消息互动系统是一个相对比较复杂的系统,在设计上有很多特殊的需求。首先,在微服务化过程中,研发团队会比较注意核心服务和非核心服务的划分,从而在服务遇到瓶颈时,可以通过降级的方式保证核心业务不受影响。其次,对容易瓶颈的服务进行划分,减少对其他服务的依赖,使服务更加轻量化,从而实现服务快速扩展。第三,微博的服务常常会面临流量激增的问题,微博直播互动系统同样面临这样的问题,甚至激增的特性更加明显。在流量激增时,仅靠人工方式无法快速扩展服务,所以需要实现服务的自动化弹性伸缩。

  微服务架构设计主要分为三个步骤:微服务的划分、微服务间的通信、微服务的部署。对设计的整个过程中的这三个环节中,有很多需要注意的细节。

  对于微服务的划分,需要注意服务划分的粒度,切莫一开始就过于细粒度。而是根据服务和需求的的发展,在恰当的时候,对复杂度较高的服务进行拆分,将同一类功能的服务进行归类划分。举例来说,对于直播互动这个系统,服务的难点在于长期维护与用户的长连,并持续推送消息。一个10w人同时在线的房间,每秒有10个人评论,那推送的消息量将会是100w条/s。因此,推送服务也是最容易出现瓶颈和最需要快速扩容的服务。那么,在微服务划分时,需尽量地使推送服务轻量化,减少对其他服务的依赖,加快扩容速度。

  对于微服务间的通信,需要注意的是服务依赖的问题。例如:一个服务A,它同步依赖的服务B平均耗时1s,这就会导致服务A的平均响应时间至少是1s。

  对于微服务的部署,需要注意两点:一是,快速扩容时,依赖的资源和服务需要一起扩容,其中包括负载均衡、缓存,甚至是DB,否则服务仍会遇到瓶颈。二是,在升级服务时,依赖服务之间的上线问题。

  WOT峰会演讲内容提前知

  在本届峰会,温情将为大家带来有关微博直播互动微服务架构设计的主题演讲。

  采访中,他向记者介绍,本次演讲将着重介绍在微服务化过程中,如何解决微服务粒度划分,微服务通信以及微服务部署等方面问题。在架构设计中,如何通过利用Docker化技术,解决混合云平台引入的环境差异问题,实现服务更加快速地部署和扩展。对于直播波峰波谷明显,以及微博特色的流量激增等特性,直播互动服务利用混合云的可弹性伸缩特性,搭建出一套自动化的可弹性伸缩服务,既解决了峰值应对问题,又实现了成本***化。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:蓝雨泪 来源: 51CTO.com

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK