在做微服务架构设计时,我们一般选用RPC框架的会是Dubbo或SpringCloud。
今天介绍一个在这两者之外的其他框架—–Motan
基本介绍
Motan是一套基于java开发的RPC框架,由新浪微博开源。可靠性经过新浪微博生产环境验证。
除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现、摘除、高可用和负载均衡等。Motan具有良好的扩展性,主要模块都提供了多种不同的实现,例如支持多种注册中心,支持多种rpc协议等。
架构概述
Motan中分为服务提供方(RPC Server),服务调用方(RPC Client)和服务注册中心(Registry)三个角色。
- Server提供服务,向Registry注册自身服务,并向注册中心定期发送心跳汇报状态;
- Client使用服务,需要向注册中心订阅RPC服务,Client根据Registry返回的服务列表,与具体的Sever建立连接,并进行RPC调用。
- 当Server发生变更时,Registry会同步变更,Client感知后会对本地的服务列表作相应调整。
三者的交互关系如下图:
模块概述
Motan框架中主要有register、transport、serialize、protocol几个功能模块,各个功能模块都支持通过SPI进行扩展,各模块的交互如下图所示:
功能
- 支持通过spring配置方式集成,无需额外编写代码即可为服务提供分布式调用能力。
- 支持集成consul、zookeeper等配置服务组件,提供集群环境的服务发现及治理能力。
- 支持动态自定义负载均衡、跨机房流量调整等高级服务调度能力。
- 基于高并发、高负载场景进行优化,保障生产环境下RPC服务高可用。
综述:
从架构设计上来看,和Dubbo非常相似。但是市场占有率和知名度不及Dubbo
目前项目也还在维护中。这点也比较靠谱
Motan的一大优点是,跨语言的Rpc框架。除了java外,还支持PHP、Go、Lua等相互之间调用
地址:https://github.com/weibocom/motan