作者:李庆丰,微博研发中心研发总监,负责微博消息箱及开放平台的技术研发工作。微博Motan RPC框架项目负责人。十年互联网架构研发及技术管理经验,专注高性能高可用架构。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》
Motan(https://github.com/weibocom/motan)是微博技术团队研发的基于Java的轻量级RPC框架,已在内部大规模应用多年,每天稳定支撑微博上亿次的内部调用。
RPC调用优势
随着公司业务发展,微博内部调用和依赖越来越多,传统方式逐渐显现出弊端。
- jar包依赖调用使得服务间耦合太紧,相互影响,同时也存在跨语言调用问题;
- HTTP依赖调用在协议上比较重,常在性能和效率上出现瓶颈。
越是大型复杂的系统,越需要轻量的依赖调用方式,RPC依赖调用很好地解决了上述问题。
典型RPC框架对比
目前,业界RPC框架大致分为两类,一种偏重服务治理,另一种侧重跨语言调用。服务治理型的RPC框架代表是Dubbo和DubboX。前者是阿里开源的分布式服务框架,实现高性能的RPC调用同时提供了丰富的管理功能,是一款应用广泛的优秀RPC框架,但现在维护更新较少。后者则是当当基于Dubbo扩展,支持REST风格的远程调用、Kryo/FST序列化,增加了一些新功能。
这类RPC框架的特点是功能丰富,提供高性能远程调用、服务发现及服务治理能力,适用于大型服务的解耦及治理,对于特定语言(如Java)项目可以实现透明化接入。缺