国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

dubbo高級特性分析

這篇具有很好參考價值的文章主要介紹了dubbo高級特性分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.dubbo多協(xié)議支持

某些場景下,可能接口是使用的老的協(xié)議去發(fā)布的,此時希望接口能夠以一種新的協(xié)議去發(fā)布,老的服務(wù)按照老的協(xié)議去調(diào)用,新的服務(wù)按照新的協(xié)議去調(diào)用 而dubbo服務(wù)就可以支持發(fā)布多種協(xié)議,如 dubbo / hessian / thrift / grps http2.0/ protobuff, rest 等,如果要切換某種協(xié)議,只需要添加該協(xié)議對應的依賴包即可
以rest協(xié)議為例,它是基于JAX-RS 來實現(xiàn)的,dubbo發(fā)布rest服務(wù)是基于 RESTEasy的,同時需要容器的支持, 先修改 配置文件,指定服務(wù)發(fā)布的協(xié)議:dubbo高級特性分析
然后在服務(wù)實現(xiàn)類上面指定發(fā)布的協(xié)議:
dubbo高級特性分析
@DubboService(registry = {“shanghai”, “nanjing”}, protocol = {“dubbo”,“rest”}) 注解中配置protocol = {“dubbo”,“rest”} , 那么SayHelloServiceImpl 這個類會發(fā)布基于dubbo協(xié)議和rest協(xié)議的服務(wù),既可以通過dubbo協(xié)議來訪問服務(wù),也可以通過rest協(xié)議來訪問服務(wù),但是rest協(xié)議還需要額外加個配置:
(1) pom依賴

 <!-- 基于resteasy -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>3.13.0.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>3.13.0.Final</version>
        </dependency>

        <!-- jetty依賴,須注意與dubbo版本兼容問題-->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.4.19.v20190610</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>9.4.19.v20190610</version>
        </dependency>

添加jetty容器,注意與dubbo版本的兼容關(guān)系
通過HTTP協(xié)議發(fā)布rest風格的服務(wù):
dubbo高級特性分析
啟動注冊中心(這里用zookeeper)和provider服務(wù),這樣就可以通過瀏覽器去訪問這個rest協(xié)議的接口了:http://localhost:8888/say
服務(wù)的消費方也可以指定使用dubbo協(xié)議來進行消費:
dubbo高級特性分析
啟動消費方服務(wù)進行調(diào)用:
dubbo高級特性分析
provider端消息打?。?br>dubbo高級特性分析

2.Dubbo負載均衡

dubbo高級特性分析
從dubbo架構(gòu)圖中可以看到,provider如果有多個的話,consumer調(diào)用provider時必然會涉及到負載均衡,dubbo已經(jīng)默認配置了負載均衡策略,即使不配置,也會有默認的的負載均衡,從dubbo源碼中可以看到dubbo可以支持如下5種負載均衡算法:
dubbo高級特性分析

加權(quán)隨機負載均衡(默認的負載均衡算法);
加權(quán)輪詢負載均衡—— 根據(jù)權(quán)重大小生成區(qū)間,然后生成一個隨機數(shù),根據(jù)隨機數(shù)所落的區(qū)間來決定哪個服務(wù)器來處理請求

dubbo高級特性分析
dubbo高級特性分析
dubbo高級特性分析

一致性hash算法—— 解決數(shù)據(jù)分片場景下,增加/減少節(jié)點后hash計算帶來的數(shù)據(jù)遷移的問題(本質(zhì)是數(shù)據(jù)讀取不到,假設(shè)存入時hash%服務(wù)器數(shù)量后數(shù)據(jù)存到了第一臺服務(wù)器,這時擴容了,要去查詢這個數(shù)據(jù),再次用相同參數(shù)對服務(wù)器數(shù)量進行hash取模運算,得到的服務(wù)器可能就不是當初存儲數(shù)據(jù)的那臺服務(wù)器了) ,dubbo的一致性hash算法默認根據(jù)第一個參數(shù)進行取模
一致性hash算法詳細介紹: https://www.cnblogs.com/myseries/p/10956835.html
dubbo高級特性分析

配置負載均衡算法:
dubbo高級特性分析
如果負載均衡算法配置的是一致性hash算法,針對請求參數(shù)相同的請求,會落到同一臺服務(wù)器上。

負載均衡算法名字如果不知道的話,可以去具體的負載均衡算法類里面找:
dubbo高級特性分析

3.集群容錯

容忍錯誤的能力(出現(xiàn)錯誤之后怎么去處理)
分布式集群下,客戶端請求會存在三態(tài)問題:成功/失敗/未知

  • failover cluster(默認)
    失敗自動重試(重試其他服務(wù)器)—— 失敗自動切換
    @DubboService(cluster = “failover”, retries = 2, registry = {“shanghai”, “nanjing”}, version = “2.0”)
    這種場景下,如果時事務(wù)型操作,需要保證冪等,多次重試的結(jié)果相同 并且最終成功
  • failfast cluster
    快速失敗 ,如果插入數(shù)據(jù)失敗,立即報錯,適用于不需要冪等的場景
  • failsafe cluster
    失敗安全,出現(xiàn)異常時直接將異常吞掉。
  • failback cluster
    失敗自動恢復 :記錄失敗請求,定時重發(fā),保證最終一致
  • forking cluster
    并行調(diào)用多個服務(wù)節(jié)點,只要其中一個節(jié)點成功返回,就直接用這個節(jié)點的結(jié)果進行返回
  • broadcast cluster
    廣播調(diào)用,一個請求調(diào)用所有的服務(wù)提供者,只要其中一個節(jié)點報錯,則認為這個請求失??;
    比如更新服務(wù)器上的緩存等操作

4.Dubbo泛化

dubbo泛化解決的問題:針對跨語言調(diào)用dubbo服務(wù)的場景下,服務(wù)的消費端沒有公共契約(api服務(wù))時,如何去調(diào)用dubbo服務(wù);
這種場景下,接口定義直接寫在服務(wù)提供端(而不是api服務(wù)中),服務(wù)的消費端
dubbo高級特性分析
消費方泛化調(diào)用:
dubbo高級特性分析
啟動nacos注冊中心,訪問 demo接口:
dubbo高級特性分析
代碼:https://gitee.com/liuch890228/dubbo-learn/tree/dubbo-protocol-rest

5.服務(wù)降級

dubbo的服務(wù)降級很容易實現(xiàn),只需要在DubboReference注解中加一個mock屬性,值為新增的服務(wù)降級處理類的全路徑名
dubbo高級特性分析
dubbo高級特性分析
啟動nacos注冊中心和provider,consumer測試:
dubbo高級特性分析
演示代碼:https://gitee.com/liuch890228/dubbo-learn/tree/dubbo-fallback文章來源地址http://www.zghlxwxcb.cn/news/detail-438259.html

6.Dubbo常用配置

  • 啟動檢查
    解決服務(wù)之間相互依賴時,被依賴的服務(wù)未啟動導致當前服務(wù)無法啟動的問題
    (1)對消費端服務(wù)
    dubbo高級特性分析
    如上,DubboReference注解配置check=true則表示開啟啟動檢查,此時provider未啟動,則會啟動失敗,如果改為false則能夠正常啟動(consumer中所有使用 @DubboReference注解的地方 都需要加)
    (2)針對注冊中心不可用的場景,配置dubbo.registry.check=false 則是 關(guān)閉注冊中心啟動時檢查。
    更多啟動檢查配置,參考: dubbo啟動檢查
  • 主機綁定
    源碼:org.apache.dubbo.config.ServiceConfig#findConfigedHosts
    (1)查找環(huán)境變量中是否存在啟動參數(shù) DUBBO_IP_TO_BIND,(-d DUBBO_IP_TO_BIND=xx )如果存在則取這個值作為服務(wù)注冊的ip
    (2)讀取配置文件dubbo.protocols.dubbo.host 作為服務(wù)注冊的ip
    (3)hostToBind = InetAddress.getLocalHost().getHostAddress(); 獲取本機IP地址作為服務(wù)注冊的ip
    (4)如果(3)中 獲取的ip不合法,則通過socket去連接注冊中心獲取本機IP: dubbo高級特性分析
    (5)輪詢本機網(wǎng)卡,找到合適的IP
    上面獲取到的ip是bindIP, 如果需要作為服務(wù)注冊中心的ip,還會讀取環(huán)境變量 DUBBO_IP_TO_REGISTRY的值,如果這個值沒配置,才會將綁定ip作為注冊中心的ip
    dubbo高級特性分析
  • 配置優(yōu)先級
    方法級別的配置> 接口級別的配置
    客戶端沒配置,服務(wù)提供端為準
    客戶端和服務(wù)端都配置,以客戶端為準
    dubbo高級特性分析
    dubbo高級特性分析
    配置加載優(yōu)先級:環(huán)境變量 外部配置(application.properties) API 本地文件(dubbo.properties)

到了這里,關(guān)于dubbo高級特性分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • RabbitMQ3.13.0起支持MQTT5.0協(xié)議及MQTT5.0特性功能列表

    RabbitMQ3.13.0起支持MQTT5.0協(xié)議及MQTT5.0特性功能列表

    RabbitMQ 3.12 中發(fā)布的原生 MQTT 為物聯(lián)網(wǎng)用例提供了顯著的可擴展性和性能改進。 RabbitMQ 3.13 將支持 MQTT 5.0,因此將成為我們使 RabbitMQ 成為領(lǐng)先的 MQTT 代理之一的下一個重要步驟。 這篇博文解釋了如何在 RabbitMQ 中使用新的 MQTT 5.0 功能。 MQTT 是物聯(lián)網(wǎng) (IoT) 的標準協(xié)議。 物聯(lián)

    2024年04月13日
    瀏覽(27)
  • 干翻Dubbo系列第十二篇:Dubbo協(xié)議介紹

    干翻Dubbo系列第十二篇:Dubbo協(xié)議介紹

    文章目錄 文章說明 一:Dubbo協(xié)議 1:Dubbo協(xié)議簡介 2:Dubbo協(xié)議優(yōu)點 ?3:Dubbo協(xié)議幀的組成 (一):幻數(shù) (二):2Way (三):event (四):Serilization ID (五):status (六):RequestID (七):數(shù)據(jù)長度 ????????Rpc過程當中三個核心的要素就是: 協(xié)議、序列化 、通信方式 ????????Dubbo協(xié)議

    2024年02月12日
    瀏覽(21)
  • 自定義Dubbo RPC通信協(xié)議

    Dubbo 協(xié)議層的核心SPI接口是 org.apache.dubbo.rpc.Protocol ,通過擴展該接口和圍繞的相關(guān)接口,就可以讓 Dubbo 使用我們自定義的協(xié)議來通信。默認的協(xié)議是 dubbo,本文提供一個 Grpc 協(xié)議的實現(xiàn)。 Google 提供了 Java 的 Grpc 實現(xiàn),所以我們站在巨人的肩膀上即可,就不用重復造輪子了。

    2024年01月19日
    瀏覽(27)
  • SpringBoot集成Dubbo啟用gRPC協(xié)議

    SpringBoot集成Dubbo啟用gRPC協(xié)議

    本文記錄下SpringBoot集成Dubbo啟用gRPC協(xié)議,以及與原生 gRPC 在代碼編寫過程中的區(qū)別。 下面還有投票,幫忙投個票?? 2023.6.30 補充:Dubbo 官方文檔開放,為開發(fā)者使用提供友好的支持。 Dubbo 在 2.7.5 版本開始支持原生 gRPC 協(xié)議,對于計劃使用 HTTP/2 通信或者期望 gRPC 協(xié)議支持服

    2023年04月12日
    瀏覽(14)
  • Dubbo 的心臟:理解和應用多種協(xié)議【十三】

    Dubbo 的心臟:理解和應用多種協(xié)議【十三】

    歡迎來到我的博客,代碼的世界里,每一行都是一個故事 在分布式系統(tǒng)的世界里,協(xié)議就像是不同服務(wù)之間的共同語言。它決定了服務(wù)如何交流,影響著系統(tǒng)的性能和可靠性。Dubbo 作為一個優(yōu)秀的微服務(wù)框架,提供了多種協(xié)議選項,讓開發(fā)者能夠根據(jù)自己的需要靈活選擇。在

    2024年01月21日
    瀏覽(23)
  • 高級篇-rabbitmq的高級特性

    高級篇-rabbitmq的高級特性

    ? ? ?啟動MQ 創(chuàng)建Queues:? 兩種Callback: 1.ReturnCallback:全局callback? ?2.ComfirmCallback:?發(fā)送信息時候設(shè)置 ? ?執(zhí)行成功: ?監(jiān)控頁面: 模擬失?。??1.投遞到交互機失敗 2.投遞到交換機了,但是沒有進入隊列? ? ?注意: ? 演示數(shù)據(jù)是否默認持久化:? ? ? ?重啟mq: ?1. 交互機、

    2024年02月09日
    瀏覽(26)
  • 【Dubbo】Dubbo架構(gòu)的演進過程分析

    【Dubbo】Dubbo架構(gòu)的演進過程分析

    ??作者簡介: 小明java問道之路 , 2022年度博客之星全國TOP3 ,專注于后端、中間件、計算機底層、架構(gòu)設(shè)計演進與穩(wěn)定性建設(shè)優(yōu)化,文章內(nèi)容兼具廣度、深度、大廠技術(shù)方案,對待技術(shù)喜歡推理加驗證,就職于知名金融公司后端高級工程師。 ? ? ? ?? ?? 熱衷分享,喜歡原

    2024年02月07日
    瀏覽(21)
  • IntelliJ IDEA 2023.1正式發(fā)布,Maven項目大提速&支持Apache Dubbo

    IntelliJ IDEA 2023.1正式發(fā)布,Maven項目大提速&支持Apache Dubbo

    你好,我是 YourBatman :做愛做之事?交配交之人。 一年一個大版本,共計3個中型版本 ,北京時間2023年3月月29日終于迎來了IntelliJ IDEA今年的首個版本2023.1。老規(guī)矩,吃肉之前,可以先把這幾碗湯干了,更有助于消化(每篇都很頂哦): IntelliJ IDEA 2023.1正式發(fā)布,Maven項目大提

    2023年04月20日
    瀏覽(18)
  • PostgreSQL教程(四):高級特性

    PostgreSQL教程(四):高級特性

    在之前的章節(jié)里我們已經(jīng)涉及了使用SQL在PostgreSQL中存儲和訪問數(shù)據(jù)的基礎(chǔ)知識。現(xiàn)在我們將要討論SQL中一些更高級的特性,這些特性有助于簡化管理和防止數(shù)據(jù)丟失或損壞。最后,我們還將介紹一些PostgreSQL擴展。 本章有時將引用教程(三)中的例子并對其進行改變或改進以

    2024年02月21日
    瀏覽(22)
  • React高級特性解析

    react conText 使用API React.createContext 返回的是組件對象 可以利用結(jié)構(gòu)的方式 第一種方式 使用 Provider 包裹的組件都可以獲取提供者的 value Context.Consumer 組件里面使用函數(shù) 函數(shù)返回一個組件 函數(shù)的參數(shù)為Context初始化的參數(shù) 第二種方式 使用Context.Provider包裹所有的組件 在子組件里

    2024年02月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包