RPC框架除了Dubbo或SpringCloud之外的選擇——Motan

2021-01-19 IT有意思

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

相關焦點

  • SpringCloud集成Dubbo實現RPC調用
    SpringCloud輕鬆集成Dubbo實現RPC調用很久之前在做微服務架構選型的時候就聽說阿里的微服務RPC框架dubbo,當時與Spring Cloud以http協議調用的架構做對比。發現dubbo的rpc框架學習成本較高,代碼入侵性強,本身生態不完整,需要整合多個外部組件,故選擇了相對性能弱一點的Spring Cloud全家桶。直到Spring Cloud Alibaba的出現,使用Nacos作為服務發現與註冊,同時兼容使用Feign的http方式和使用Dubbo的rpc方式調用。
  • 大廠面試系列(五):Dubbo和Spring Cloud
    dubbo的spi思想dubbo進行的服務治理、服務降級、失敗以及重試。服務端怎麼知道客戶端要調用的算法的?闡述下dubbo的架構dubbo支持的註冊中心有哪些,分別的優缺點dubbo執行流程?dubbo和springclond的架構區別和優劣?說一下dubbo的實現過程?註冊中心掛了可以繼續通信嗎?
  • SpringCloud微服務:基於Nacos組件,整合Dubbo框架
    核心依賴<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId
  • SpringCloud與Dubbo的比較
    Dubbo一、dubbo簡介Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spring框架無縫集成。三、dubbo的優勢單一應用架構,當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。此時,用於簡化增刪改查工作量的 數據訪問框架(ORM)是關鍵。
  • Spring Cloud 和 Dubbo,到底用哪個好?
    springcloud的接口協議約定比較自由且鬆散,需要有強有力的行政措施來限制接口無序升級dubbo的註冊中心可以選擇zk,redis等多種,springcloud的註冊中心只能用eureka或者自研但如果我選,我會用 Spring Cloud。
  • 全新架構的 Hmily 分布式事務框架 2.1.1發布
    多種RPC :支持 Dubbo, SpringCloud,Montan ,sofa-rpc等知名RPC框架。日誌存儲 :支持 mysql, oracle, mongodb, redis, zookeeper 等方式。複雜場景 :支持RPC嵌套調用事務。
  • Spring Cloud & dubbo 誰勝?
    兩者都是為服務框架。區別:1 最大的區別:Spring Cloud拋棄了Dubbo 的RPC通信,採用的是基於HTTP的REST方式。REST相比RPC更為靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴。2 跨平臺,復用度高。
  • Dubbo 3.0前瞻:重塑Spring Cloud服務治理
    : # dubbo 協議 name: dubbo # dubbo 協議埠( -1 表示自增埠,從 20880 開始) port: -1spring: application: # Dubbo 應用名稱 name: spring-cloud-alibaba-dubbo-server cloud: nacos: # Nacos 服務發現與註冊配置
  • Dubbo 3.0前瞻之重塑Spring Cloud服務治理
    -- Sample API --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dubbo-sample-api</artifactId> <version>
  • 微服務系列之DubboRPC通信
    /zh-cn/  Github:https://github.com/apache/dubbo  2018 年 2 月 15 日,阿里巴巴的服務治理框架 dubbo 通過投票,順利成為 Apache 基金會孵化項目。
  • 使用Nacos做為SpringCloud和Dubbo的共同註冊中心
    ;version>0.9.0.RELEASE</version></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId
  • Spring Cloud Alibaba生態探索
    >2.2.9.RELEASE</spring.boot.version>        <spring.cloud.version>Hoxton.SR1</spring.cloud.version>       
  • springcloud(五)遠程調用Feign(含源碼跟蹤)
    在分布式橫行的時代,服務與服務之間的通信也越來越頻繁,而spring cloud作為分布式的佼佼者,服務通信這一塊當然也不在話下,oprnFeign就是cloud提供服務通信的組件。;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.openfeign.EnableFeignClients
  • RPC框架的原理和應用方法
    首先是進程間的通信問題,對於分布式環境,rpc能夠幫助我們解決不同伺服器之間的通信及數據傳輸問題,即做好方法調用到數據的轉換,然後藉助網絡進行數據傳遞;rpc客戶端向rpc服務端發起遠程服務調用,通過請求的封裝,參數的封裝,序列化、編碼、約定協議傳輸、解析請求、處理請求、封裝返回消息數據、在進行返回數據的序列化、編碼、在通過網絡返回給客戶端。
  • RPC 框架 Dubbo 從理解到使用(一)
    一句話總結:JavaEE 消息框架標準。RPC 框架有很多:Apache Thrift、Apache Dubbo、Google Grpc 等。一句話總結:解決分布式系統中,服務之間的調用問題。遠程調用時,要能夠像本地調用一樣方便,讓調用者感知不到遠程調用的邏輯。
  • 微服務框架saf-3:saf-dubbo與demo的解析與體驗與容器化部署
    (2).saf-dubbo與demo的簡單解析1.saf-dubbo特性1.1本地0配置特性saf框架的一個最大特點是是本地0配置,所有配置都在分布式配置中心。saf-rpc-dubbo完成的就是這樣一件事,工程地址:https://github.com/saf-group/saf/tree/master/saf-rpc/saf-rpc-dubbo利用springboot中的BeanPostProcessor完成這個特性支持,首先我們先回顧一下spring中bean的實例化過程:===Spring IOC
  • springcloud小技能:服務註冊&發現如何隔離
    用過dubbo的都知道,dubbo服務發布&訂閱有2個重要的參數:version和group。那麼,在springcloud微服務架構下開發,同樣會遇到這個問題,又該怎麼解決呢?springcloud源碼之中毫無秘密,我們先看服務發現的源碼,以consul作為註冊中心為例,源碼在ConsulServerList.java中:private List<ConsulServer
  • 手擼rpc框架,並基於spring進行二次註解開發
    這是我返回給你的結果";該框架包括簡單示例都已上傳至github,連結自取:自定義rpc框架三、自定義rpc框架(一)、代碼架構rpc_apirpc_client:自定義rpc框架客戶端部分,實現了rpc客戶端部分邏輯。