作者:李庆丰,微博研发中心研发总监,负责微博消息箱及开放平台的技术研发工作。微博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)项目可以实现透明化接入。缺点是语言耦合度较高,跨语言支持难度较大。
跨语言调用型RPC框架有Thrift、gRPC、Hessian、Hprose等。这类框架侧重于服务的跨语言调用,能支持大部分语言,从而进行语言无关调用,非常适合多语言调用场景。但这类框架没有服务发现相关机制,实际使用时需要代理层进行请求转发和负载均衡策略控制。
Motan倾向于服务治理型,跨语言方面正在尝试与PHP调用集成。与Dubbo系列相比,功能或许不那么全,扩展实现也没那么多,但更注重简单、易用以及高并发高可用场景。
功能特点
Motan是一套轻量级的RPC框架ÿ