在做微服務架構設計時,我們一般選用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等相互之間調用