日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java 微服务框架对比:Dubbo 和 Spring Cloud

發(fā)布時(shí)間:2023/12/10 java 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 微服务框架对比:Dubbo 和 Spring Cloud 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

微服務(wù)特點(diǎn):

微服務(wù)(Microservices)是一種架構(gòu)風(fēng)格,一個(gè)大型復(fù)雜軟件應(yīng)用由一個(gè)或多個(gè)微服務(wù)組成。

  • 獨(dú)立部署
  • 松耦合
  • 單一職責(zé),每個(gè)服務(wù)僅關(guān)注一件任務(wù)
  • 微服務(wù)框架

    ?相關(guān)概念:

    ?

    rpc

    1、遠(yuǎn)端過(guò)程調(diào)用,其調(diào)用協(xié)議通常包含傳輸協(xié)議和編碼協(xié)議

    2、RPC 可以把 HTTP 作為一種傳輸協(xié)議(比如 gRPC 使用 HTTP 2.0 協(xié)議傳輸),本身還會(huì)封裝一層 RPC 框架的應(yīng)用層協(xié)議,不同語(yǔ)言之間調(diào)用需要依賴(lài) RPC 協(xié)議

    grpcHTTP 2.0 協(xié)議傳輸
    dubbo自定義報(bào)文的 TCP 協(xié)議。編碼協(xié)議包含: 如基于文本編碼的 XML Json,也有二進(jìn)制編碼的 ProtoBuf Binpack 等
    restREST 風(fēng)格直接把 HTTP 作為應(yīng)用協(xié)議(直接和服務(wù)打交道),不同語(yǔ)言之間調(diào)用比較方便

    ?

    為什么 Dubbo 比 Spring Cloud 性能要高一些?

    Dubbo 采用單一長(zhǎng)連接和 NIO 異步通訊(保持連接/輪詢(xún)處理),使用自定義報(bào)文的 TCP 協(xié)議,并且序列化使用定制 Hessian2 框架,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況,但不適用于傳輸大數(shù)據(jù)的服務(wù)調(diào)用

    Spring Cloud 直接使用 HTTP 協(xié)議(但也不是強(qiáng)綁定,也可以使用 RPC 庫(kù),或者采用 HTTP 2.0 + 長(zhǎng)鏈接方式(Fegin 可以靈活設(shè)置))。

    Dubbo

    分布式服務(wù)框架,致力于提供高性能和透明化的?RPC 遠(yuǎn)程服務(wù)調(diào)用方案,以及?SOA 服務(wù)治理方案。簡(jiǎn)單的說(shuō),Dubbo 就是個(gè)服務(wù)框架,說(shuō)白了就是個(gè)遠(yuǎn)程服務(wù)調(diào)用的分布式框架.

    dubbo

    Provider: 暴露服務(wù)的服務(wù)提供方

    Consumer: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方
    Registry: 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心
    Monitor: 統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心
    Container: 服務(wù)運(yùn)行容器

    SpringCloud

    基于 Spring Boot,為微服務(wù)體系開(kāi)發(fā)中的架構(gòu)問(wèn)題,提供了一整套的解決方案——服務(wù)注冊(cè)與發(fā)現(xiàn),服務(wù)消費(fèi),服務(wù)保護(hù)與熔斷,網(wǎng)關(guān),分布式調(diào)用追蹤,分布式配置管理等。Spring Boot 是 Spring 的一套快速配置腳手架,使用默認(rèn)大于配置的理念,用于快速開(kāi)發(fā)單個(gè)微服務(wù)

    核心功能:

    • 分布式/版本化配置
    • 服務(wù)注冊(cè)和發(fā)現(xiàn)
    • 路由
    • 服務(wù)和服務(wù)之間的調(diào)用
    • 負(fù)載均衡
    • 斷路器
    • 分布式消息傳遞

    流程:

    • 請(qǐng)求統(tǒng)一通過(guò) API 網(wǎng)關(guān)(Zuul)來(lái)訪問(wèn)內(nèi)部服務(wù)。
    • 網(wǎng)關(guān)接收到請(qǐng)求后,從注冊(cè)中心(Eureka)獲取可用服務(wù)。
    • 由 Ribbon 進(jìn)行均衡負(fù)載后,分發(fā)到后端具體實(shí)例。
    • 微服務(wù)之間通過(guò) Feign 進(jìn)行通信處理業(yè)務(wù)。
    • Hystrix 負(fù)責(zé)處理服務(wù)超時(shí)熔斷。
    • Turbine 監(jiān)控服務(wù)間的調(diào)用和熔斷相關(guān)指標(biāo)。

    對(duì)比

    dubbo

    優(yōu)點(diǎn):

    Dubbo 支持?RPC 調(diào)用,服務(wù)之間的調(diào)用性能會(huì)很好。

    支持多種序列化協(xié)議,如 Hessian、HTTP、WebService。

    Dobbo Admin后臺(tái)管理功能強(qiáng)大,提供了路由規(guī)則、動(dòng)態(tài)配置、訪問(wèn)控制、權(quán)重調(diào)節(jié)、均衡負(fù)載等功能。

    在國(guó)內(nèi)影響力比較大,中文社區(qū)文檔較為全面

    阿里最近重啟維護(hù)

    缺點(diǎn):

    1、Registry 嚴(yán)重依賴(lài)第三方組件(zookeeper 或者 redis),當(dāng)這些組件出現(xiàn)問(wèn)題時(shí),服務(wù)調(diào)用很快就會(huì)中斷

    2、只支持 RPC 調(diào)用。使得服務(wù)提供方(抽象接口)與調(diào)用方在代碼上產(chǎn)生了強(qiáng)依賴(lài)

    3、Dubbo?只是實(shí)現(xiàn)了服務(wù)治理,其他微服務(wù)框架并未包含,需要結(jié)合第三方框架實(shí)現(xiàn)(比如分布式配置用淘寶的 Diamond、服務(wù)跟蹤用京東的 Hydra,但使用相對(duì)麻煩些),開(kāi)發(fā)成本較高,且風(fēng)險(xiǎn)較大。

    springcloud

    優(yōu)點(diǎn)

    1、有強(qiáng)大的 Spring 社區(qū)、Netflix 等公司支持

    2、標(biāo)準(zhǔn)化的將微服務(wù)的成熟產(chǎn)品和框架結(jié)合一起,Spring Cloud 提供整套的微服務(wù)解決方案,開(kāi)發(fā)成本較低,且風(fēng)險(xiǎn)較小

    3、基于 Spring Boot,具有簡(jiǎn)單配置、快速開(kāi)發(fā)、輕松部署、方便測(cè)試的特點(diǎn)

    4、支持 REST 服務(wù)調(diào)用,相比于 RPC,更加輕量化和靈活(服務(wù)之間只依賴(lài)一紙契約,不存在代碼級(jí)別的強(qiáng)依賴(lài)),有利于跨語(yǔ)言服務(wù)的實(shí)現(xiàn),以及服務(wù)的發(fā)布部署。另外,結(jié)合 Swagger,也使得服務(wù)的文檔一體化

    5、提供了 Docker 及 Kubernetes 微服務(wù)編排支持

    6、企業(yè)應(yīng)用非常多,經(jīng)受了大公司的應(yīng)用考驗(yàn)(比如 Netfilx 公司),以及強(qiáng)大的開(kāi)源社區(qū)支持

    缺點(diǎn):

    1、REST 服務(wù)調(diào)用性能會(huì)比 RPC 低一些(但也不是強(qiáng)綁定)

    2、Spring Cloud 整合了大量組件,相關(guān)文檔比較復(fù)雜,需要針對(duì)性的進(jìn)行閱讀

    3、支持 REST 服務(wù)調(diào)用,可能因?yàn)?strong>接口定義過(guò)輕,導(dǎo)致定義文檔與實(shí)際實(shí)現(xiàn)不一致導(dǎo)致服務(wù)集成時(shí)的問(wèn)題(可以使用統(tǒng)一文檔和版本管理解決,比如 Swagger)。

    ?

    性能比較:

    選型出發(fā)點(diǎn)

    微服務(wù)選型要評(píng)估以下幾點(diǎn):

  • 內(nèi)部是否存在異構(gòu)系統(tǒng)集成的問(wèn)題;
  • 備選框架功能特性是否滿(mǎn)足需求;
  • HTTP 協(xié)議的通信對(duì)于應(yīng)用的負(fù)載量會(huì)否真正成為瓶頸點(diǎn)(Spring Cloud 也并不是和 HTTP + JSON 強(qiáng)制綁定的,如有必要 Thrift、ProtoBuf 等高效的 RPC、序列化協(xié)議同樣可以作為替代方案);
  • 社區(qū)活躍度、團(tuán)隊(duì)技術(shù)儲(chǔ)備等。作為已經(jīng)沒(méi)有團(tuán)隊(duì)持續(xù)維護(hù)的開(kāi)源項(xiàng)目,選擇 Dubbo 框架內(nèi)部就必須要組建一個(gè)維護(hù)團(tuán)隊(duì),先不論你要準(zhǔn)備要集成多少功能做多少改造,作為一個(gè)支撐所有工程正常運(yùn)轉(zhuǎn)的基礎(chǔ)組件,問(wèn)題的及時(shí)響應(yīng)與解答、重大缺陷的及時(shí)修復(fù)能力就已足夠重要。
  • 選型建議

    1、使用 Dubbo 構(gòu)建的微服務(wù)架構(gòu)就像組裝電腦,各環(huán)節(jié)我們的選擇自由度很高,但是最終結(jié)果很有可能因?yàn)橐粭l內(nèi)存質(zhì)量不行就點(diǎn)不亮了,總是讓人不怎么放心,但是如果你是一名高手,那這些都不是問(wèn)題;而 Spring Cloud 就像品牌機(jī),在 Spring Source 的整合下,做了大量的兼容性測(cè)試,保證了機(jī)器擁有更高的穩(wěn)定性,但是如果要在使用非原裝組件外的東西,就需要對(duì)其基礎(chǔ)有足夠的了解。

    2、Spring Cloud 可以說(shuō)是一個(gè)更完備的微服務(wù)解決方案,它從功能性上是 Dubbo 的一個(gè)超集對(duì)于一些中小型企業(yè) Spring Cloud 可能是一個(gè)更好的選擇

    3、Dubbo 和 Spring Cloud 的主要不同體現(xiàn)在兩個(gè)方面:服務(wù)調(diào)用方式不同專(zhuān)注點(diǎn)不同(生態(tài)不同)

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的Java 微服务框架对比:Dubbo 和 Spring Cloud的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。