中国最大的开源技术社区 微博开源轻量级 RPC 框架:Motan。 Motan是一套基于java开发的高性能、易于使用的分布式远程服务调用(RPC)框架,除了常规的点对点调用外,motan还提供服务治理功能,包括服务节点的自动发现、摘除、高可用和负载均衡等。Motan具有良好的扩展性,主要模块都提供了多种不同的实现,例如支持多种注册中心,支持多种rpc协议等。 功能
架构概述 Motan中分为服务提供方(RPC Server),服务调用方(RPC Client)和服务注册中心(Registry)三个角色。
三者的交互关系如下图: 模块概述 Motan框架中主要有register、transport、serialize、protocol几个功能模块,各个功能模块都支持通过SPI进行扩展,各模块的交互如下图所示:
用来和注册中心进行交互,包括注册服务、订阅服务、服务变更通知、服务心跳发送等功能;Server端会在系统初始化时通过register模块注册服务,Client端在系统初始化时会通过register模块订阅到具体提供服务的Server列表,当Server 列表发生变更时也由register模块通知Client。
用来进行RPC服务的描述和RPC服务的配置管理,这一层还可以添加不同功能的filter用来完成统计、并发限制等功能。serialize 将RPC请求中的参数、结果等对象进行序列化与反序列化,即进行对象与字节流的互相转换;默认使用对java更友好的hessian2进行序列化。
用来进行远程通信,默认使用Netty nio的TCP长链接方式。
Client端使用的模块,cluster是一组可用的Server在逻辑上的封装,包含若干可以提供RPC服务的Server,实际请求时会根据不同的高可用与负载均衡策略选择一个可用的Server发起远程调用。 在进行RPC请求时,Client通过代理机制调用cluster模块,cluster根据配置的HA和LoadBalance选出一个可用的Server,通过serialize模块把RPC请求转换为字节流,然后通过transport模块发送到Server端。 配置概述 Motan框架中将功能模块抽象为四个可配置的元素,分别为:
Motan推荐使用spring配置rpc服务,目前Motan扩展了6个自定义Spring xml标签:
每种标签的详细含义请参考后文配置说明部分。全部参数清单请参考配置清单。
使用Motan Motan主要使用Spring进行配置,业务代码无需修改。关于在项目中使用Motan框架的具体步骤,请参考:快速入门。 在使用Motan框架时,除了配置之外还需要注意工程依赖及Motan框架本身的异常处理。
工程依赖 Motan框架采用模块化设计,使用时可以按需依赖。目前的模块有:
详情及文章蓝色链接请在阅读原文中查看 开源中国|ID:oschina2013 每天为你送上精选资讯早点 还有每天的 OSChina乱弹哦 本文转载自:微信公众账号 - 开源中国,版权归原作者所有! |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|