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
相關文章
相關標籤/搜索