Motan源码阅读--初识Motan

Motan

Motan是一套高性能,易于使用的RPC框架。提供了服务治理,包括服务节点自动发现,摘除,高可用和负载均衡。Motan具备良好扩展性,主要模块都提供了不一样实现,例如多种注册中心,多种rpc协议等。java

功能

  • 支持经过spring配置方式集成,无需额外编写代码便可觉得服务提供分布式调用能力。
  • 支持集成consul,zk等配置服务组件,提供集群环境服务发现及治理能力。
  • 支持动态自定义负载均衡,跨机房流量调整等高级服务调度能力。
  • 基于高并发,高负载场景进行优化,保障生产环境下RPC服务高可用。

模块

Motan框架中主要有register,transport,serialize,protocol几个功能,各个模块都支持经过SPI进行扩展。spring

image

registry

用来和注册中心交互,包括服务注册,服务订阅,服务变动通知,服务心跳发送等。server端会在系统初始化时经过registry模块注册服务,client端在系统初始化时经过registry模块订阅到服务提供者列表,当server列表变动时由registry模块通知client。并发

protocol

用来进行RPC服务端描述和RPC服务端配置管理,能够添加不一样filter来统计并发限制等功能。负载均衡

serialize

将RPC请求中的参数,结果等对象进行序列化和反序列化,进行对象与字节流互相转换,默认使用对java友好的hessian2。框架

transport

用来进行远程通讯,默认使用Netty nio的TCP长连接方式。分布式

cluster

Client端使用的模块,cluster是一组可用的server在逻辑上的封装,包含若干能够提供RPC服务的server,实际请求时,会根据不一样的高可用和负载均衡策略选择一个可用server发起远程调用。高并发

在进行RPC请求时,client经过代理机制调用cluster模块,cluster根据配置和HA和LoadBalance选出一个可用的server,经过serialize模块把RPC请求转换成字节流,而后经过transport发送到server端。性能

配置

Motan将功能模块抽象为四个可配置的元素,分别为:优化

  • Protocol:服务通讯协议,服务提供方与消费方进行远程调用的协议,默认为motan协议,使用hessian2进行序列化,netty做为endpoint及使用motan自定义的协议编码。
  • Registry:注册中心,服务提供方将服务信息(ip,端口,服务策略等信息)注册到注册中心,服务消费方经过注册中心发现服务,当服务发生变动,注册中心负责通知各个消费方。
  • Service:服务提供方提供的服务。使用方将核心业务抽取出来,做为独立的服务,经过暴露服务并将服务注册到注册中心,从而使调用方调用。
  • Referer:服务消费方对服务的引用,服务调用方。

Motan扩展来6个自定义的Spring xml标签:编码

  • motan:protocol
  • motan:registry
  • Motan:basicservice
  • motan:service
  • motan:basicreferer
  • motan:referer
相关文章
相关标签/搜索