微博平台的RPC服务化实践概述

2014年第一分钟,新浪微博的发布量以808298条再次刷新记录,第一秒微博发布量相较去年提升55%。(数据来源:新浪科技 )这是微博平台 RPC 框架 “Motan” 上线后第一次抗峰值,整体表现平稳,基本达到最初的“应用方无感知”的目标。

在RPC服务化这个事情上,微博平台不是第一个吃螃蟹的:早的有亚马逊和eBay等国外先驱,近的有Twitter的finagle,淘宝的dubbo等等,网上各种公开的资料铺天盖地。另一方面,单纯的RPC调用功能实现,从技术上看其实并不复杂:client 发起调用,框架拦截调用信息,序列化,传输,server端收到调用信息,反序列化,根据调用信息发起实际调用获取结果,再原路返回。实现这些功能可能也就三五天的事情,但在一个复杂的业务环境下,稳定可靠的应用它,才是最大的挑战。

微博平台的 RPC 服务化拆分历程始于2013年7月。在此之前,我们花了很长的时间讨论服务化的目标,主要是项目的范围:哪些问题不属于服务化项目需要解决的问题。 实际的框架代码开发花了三个工程师(王喆@wangzhe_asdf9 陈波@fishermen 麦俊生@麦俊生)大约一个月时间,然后花了将近两个月的时间推动在第一个业务上线:调整工程师的开发模式,调整测试流程,修改上线系统,添加监控和报警,小流量测试,灰度发布,最后才是全量上线。然后又花了一个月,在微博平台主要业务中全部上线。

微博RPC的一些基本的数据指标:

Motan 框架:2w+ 行 Java 代码,1w 行 test 代码,UT行覆盖率超过 70%(当前 Motan 实现中,与微博平台内部多个系统都有功能绑定,还不具备开源条件,但开源是我们从一开始就设立好的目标之一)

支持 2 种调用方式:inJVM 和 TCP远程调用。inJVM 方式类似 loopback 网卡:数据经过了协议栈流程处理,但没有流经真正的网络设备。inJVM方式主要用来支持开发调试和测试,以及在RPC服务上线初期作为Fail-Back降级使用

典型业务场景下单实例 tps 极限 20k,微博平台一般采用单机双实例,即单机极限 40k

典型业务场景下平均响应时间 <3 ms,框架层额外消耗 < 0.01 ms

最大的单个核心业务日调用量超过 800亿次

RPC服务化的目的大约有两种:将一个大一统的应用拆分成多个小的RPC服务,那么目的就是为了解耦和,提升开发效率;如果是将传统的Http或其它方式远程调用改造成高效的RPC调用,那么就是为了提升运行效率。不幸的是,微博平台的RPC框架,需要同时达到这两个目的:既要在平台内部将一个大一统的应用拆分,又要考虑到后续向开放平台的大客户们提供RPC接入的可能。因此,微博平台在技术选型和方案设计上做了很多的权衡和妥协:

首先,是选择已有开源方案,还是自己开发一个新方案?选择的依据按重要程度排序:是否满足自己的核心需求,方案成熟度,认知成本(即二次开发难度)。由于是拆分一个已有的复杂应用,微博平台的一个核心需求是:应用开发方希望尽可能的平滑迁移,最好能做到应用方无感知。我们评估的多个开源方案没有一个能满足,所以只能自己做一个了

灵活性与误用的可能性:框架开发方总是有一个偏见,觉得我这个框架越灵活越好,最好每个步骤每个环节都是可以由使用方自己配置或定义。但对于一个内部强制使用的框架来说,使用方式的统一性也同样重要,换句话说,对于大部分的环节步骤,都需要保证团队内部各使用方都按同样的方式进行配置,防止误用,并降低学习和沟通成本。我们的经验是,框架开发完成后,还需要有“框架使用方”角色,将所有的灵活性限制在框架使用方的层面,避免直接暴露所有细节到最终的业务开发方

序列化方式选择:微博平台从2011年引入了 PB 序列化方式,以替代 cache 和 db 中的 json 文本。但在 RPC 框架上线过程中,我们选择了对 Java 对象更为友好的 Hessian2 。因为之前的 PB 序列化需要定义 proto 文件和生成代码,平台只对必要的 model 类做了支持,而 rpc 可能涉及到更多的 wrap 类,业务逻辑类等,为所有的类提供 pb 支持的工作量太大,而且后期维护困难。当然了,Motan 框架支持各种不同的序列化方式配置。

通讯协议选择:在评估了几个开源RPC框架的协议设计后,我们最终选择了在 TCP 链接基础上设计自己的 RPC 通讯协议,一个简单的二进制协议:定长 header 中包含一个 length 字段,然后就是二进制的 body payload,即序列化之后的 rpc request 或 response 。

集群管理:微博平台Motan框架当前依赖于内部开发的Config Service(Code name Vintage,based on ZooKeeper)来进行服务注册,服务发现和变更通知。

Trace系统:微博平台Motan框架当前依赖于内部开发的类似Twitter Zipkin的Trace系统(Code name Watchman)来对RPC请求做抽样及全量trace。

Motan 架构图(RPC调用数据流图)

时间: 2024-10-30 23:41:13

微博平台的RPC服务化实践概述的相关文章

微博平台架构和安全——微博平台首席架构师杨卫华演讲

微博平台首席架构师杨卫华演讲 新浪科技讯11月16日下午消息,由新浪微博(http://t.sina.com.cn)主办的中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴 作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展 以下为演讲实录: 大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心 最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的 很多技术人员对微博

微博平台核心服务接口的可用性

随着2014年元旦微博平台抗峰的顺利通过,2013年微博平台核心服务接口的可用性指标被定格在99.991%. 微博服务可用性提升是2013年微博平台技术团队的一个重要目标,为此,平台内部还特别建立的微博平台的SLA指标体系,其中微博平台核心服务接口(主要以feed服务相关接口为主)的可用性指标为:全年平均接口请求性能<100ms的比例>99.99%,即4个9的可用性指标. 我们的挑战在哪里? 说到feed服务大家都知道,feed服务是微博最核心,最有价值的服务,于是它也是产品经理们花心思最多的

微博平台的链路追踪及服务质量保障系统:Watchman系统

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

OSSIM平台安全事件关联分析实践

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1760414 OSSIM平台安全事件关联分析实践        在<开源安全运维平台OSSIM最佳实践>一书中叙述到,事件关联是整个OSSIM关联分析的核心,对于OSSIM的事件关联需要海量处理能力,主要便于现在需要及时存储从设备采集到的日志,并能关联匹配和输出,进而通过Web UI展示.从实时性上看,关联分析的

【ATF】林伟:大数据计算平台的研究与实践

  2016 ATF阿里技术论坛于4月15日在清华大学举办,主旨是阐述阿里对世界创新做出的贡献.阿里巴巴集团技术委员会主席王坚,阿里巴巴集团首席技术官(CTO)张建锋(花名:行癫),阿里巴巴集团首席风险官(CRO)刘振飞(花名:振飞),蚂蚁金服首席技术官(CTO)程立(花名:鲁肃)以及来自阿里巴巴集团各部门多位技术大咖齐聚一堂,与莘莘学子分享阿里的技术梦想.   在下午的云计算与大数据论坛上,阿里云资深专家林伟(花名:伟林)带来了以<大数据计算平台的研究与实践>为主题的深度分享.林伟目前负责阿

Docker在云平台上的最佳实践: 当容器服务遇到深度学习

12月9日云栖计算之旅线下沙龙第2期<Docker在云平台上的最佳实践>,阿里云技术专家必嘫给大家带来了"当容器服务遇到了深度学习"的演讲.本文主要从深度学习的兴起开始谈起,进而介绍了Docker技术.阿里云容器服务,重点介绍了支持云上的高性能计算应用需要哪些,包括GPU的调度.隔离和监控. 视频回顾 深度学习 人工智能已经进入了深度学习时代.传统的让机器自动化的方式已经不再适合解决一些问题,机器学习开始兴起,让机器像小孩子一样自己去认识世界.而深度学习本身是机器学习的一个

欧洲杯期间腾讯体育联动腾讯微博平台强势出击

2012http://www.aliyun.com/zixun/aggregation/2727.html">欧洲杯已经落下帷幕.近日,腾讯方面宣布,欧洲杯期间,腾讯体育联动腾讯微博平台强势出击,以文字.图片.视频等多种"微"观赛事形式,全方位立体性地呈现19个比赛日赛况,吸引了超过500万热情球迷的全程互动,而外围观赛覆盖人群更是达到了4500万,腾讯微博平台更是创造了超过2亿条球迷话题广播的新纪录. 欧洲杯结束当日,搜索关键词"巴神",显示广播数

《编译与反编译技术实战 》一 第2章 编译器实践概述

第2章 编译器实践概述 人与计算机之间的交流也是通过语言进行的,但人类能理解的语言与机器可以理解的语言是不同的,中间需要翻译,因此,相应的编译器诞生了.编译技术所讨论的问题就是如何把符合人类思维方式的意愿(即源程序)翻译成计算机能够理解和执行的形式(即目标程序),而实现从源程序到目标程序转换的程序被称为编译程序或编译器.最早的编译器是20世纪50年代后期的Fortran编译器,该编译器也为后续高级语言和编译器的涌现奠定了基础.与编译技术相反,反编译技术所讨论的问题就是如何把计算机能够理解和执行的

高达58.57%的CEO认为腾讯会逐渐开放微博平台

摘要: 腾讯科技的调查显示,高达58.57%的CEO认为腾讯会逐渐开放微博平台.这与腾讯董事会主席兼CEO马化腾观点相一致,马化腾曾在腾讯微博中表示:"会开放API的.只是还差不少工作量,要 8月20日消息,在2010互联网大会上腾讯科技现场专访了上百位CEO及专家,并针对其中70位嘉宾做出问卷调查.调查显示,近6成CEO认为腾讯微博平台将逐渐全面开放,淘宝则是最被看好的国内尚未上市的互联网公司. 在互联网大会的3天里,腾讯科技开展了这项"2010年中国互联网产业"问卷调查,