精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java面試被問到Dubbo,怎么回答可以得高分?

開發(fā) 后端
Dubbo是阿里巴巴公司開發(fā)的一款高性能、高可用的分布式服務(wù)框架。在分布式架構(gòu)中,Dubbo擔(dān)任著重要的角色,實(shí)現(xiàn)了服務(wù)的注冊、發(fā)現(xiàn)、負(fù)載均衡、容錯等功能,為分布式系統(tǒng)提供了更好的可擴(kuò)展性和可維護(hù)性。

大家好,我是哪吒。

面試中被問到dubbo,我覺得可以從以下10點(diǎn)著手回答,堪稱完美!

Dubbo是一個高性能的Java RPC框架。RPC是遠(yuǎn)程過程調(diào)用的縮寫,其基本思想是:客戶端像調(diào)用本地方法一樣,通過網(wǎng)絡(luò)請求調(diào)用遠(yuǎn)程服務(wù)器上的服務(wù)。Dubbo可以幫助我們更方便地構(gòu)建分布式應(yīng)用程序,它具有高效的遠(yuǎn)程調(diào)用、服務(wù)自動注冊和發(fā)現(xiàn)、負(fù)載均衡、容錯機(jī)制等眾多特性,是企業(yè)級應(yīng)用中可靠的基礎(chǔ)架構(gòu)。

一、介紹

1、Dubbo是什么

Dubbo是一種高性能、輕量級的分布式服務(wù)框架,它的設(shè)計(jì)目標(biāo)是為大規(guī)模分布式應(yīng)用提供支持。

Dubbo由阿里巴巴提供,最初由Alibaba Dubbo Team開發(fā),目前已經(jīng)成為Apache基金會的頂級項(xiàng)目。Dubbo在國內(nèi)得到了廣泛的應(yīng)用,像阿里巴巴、京東、美團(tuán)等眾多互聯(lián)網(wǎng)企業(yè)都在使用該框架。

圖片圖片

2、為什么需要Dubbo

在分布式系統(tǒng)中,服務(wù)之間相互依賴非常復(fù)雜,需要大量的通信和協(xié)調(diào)。Dubbo可以幫助我們更方便地構(gòu)建分布式應(yīng)用程序,它具有高效的遠(yuǎn)程調(diào)用、服務(wù)自動注冊和發(fā)現(xiàn)、負(fù)載均衡、容錯機(jī)制等眾多特性。通過Dubbo,我們可以更方便地實(shí)現(xiàn)服務(wù)治理、服務(wù)調(diào)用鏈追蹤、服務(wù)降級、服務(wù)熔斷等重要功能。

3、Dubbo的特性

Dubbo最重要的特性包括:

  • 高效的遠(yuǎn)程調(diào)用,支持多種傳輸協(xié)議、序列化協(xié)議和集群容錯機(jī)制;
  • 可擴(kuò)展的服務(wù)自動發(fā)現(xiàn),支持多種注冊中心;
  • 豐富的負(fù)載均衡策略,支持輪詢、隨機(jī)、最少活躍調(diào)用等多種策略;
  • 靈活的集群容錯機(jī)制,支持多種容錯策略;
  • 多協(xié)議支持,Dubbo同時支持dubbo://、http://和hessian://等多種協(xié)議。

二、Dubbo的核心概念

1、暴露Export

Dubbo的暴露和引用是通過ProviderConfig和ConsumerConfig實(shí)現(xiàn)的。

ProviderConfig是服務(wù)提供者配置類,可以用于配置服務(wù)的接口、服務(wù)實(shí)現(xiàn)類、協(xié)議等,還可以設(shè)置暴露服務(wù)所用的協(xié)議、權(quán)重、端口號等信息。

ConsumerConfig是服務(wù)消費(fèi)者配置類,可以用于配置服務(wù)消費(fèi)者所接口、協(xié)議等信息,還可以設(shè)置引用服務(wù)所用的協(xié)議、集群等信息。

圖片圖片

暴露:

  1. 暴露過程中,首先需要解析配置,根據(jù)配置中的協(xié)議創(chuàng)建相應(yīng)的協(xié)議實(shí)現(xiàn)。
  2. 將協(xié)議綁定到指定的 IP 和端口上。
  3. 將服務(wù)地址信息注冊到注冊中心,以供其他調(diào)用者查詢。
  4. 通知訂閱者(監(jiān)聽器)服務(wù)地址信息的變化。
  5. 調(diào)用者接收到訂閱者的通知,得知服務(wù)地址信息變化。
  6. 調(diào)用者通過網(wǎng)絡(luò)層向提供者發(fā)起調(diào)用請求。
  7. 提供者處理請求后,返回結(jié)果給調(diào)用者。

2、引用Refer

引用的過程類似,只是方向相反,具體如下:

圖片圖片

引用

  1. 引用過程中,同樣需要解析配置,根據(jù)配置中的協(xié)議創(chuàng)建相應(yīng)的協(xié)議實(shí)現(xiàn)。
  2. 連接到指定的服務(wù)地址。
  3. 查詢注冊中心,獲取對應(yīng)服務(wù)地址信息。
  4. 返回服務(wù)地址信息給調(diào)用者。
  5. 提供者處理調(diào)用請求,返回結(jié)果給調(diào)用者。
  6. 調(diào)用者接收到結(jié)果,結(jié)束調(diào)用過程。

3、服務(wù)提供者和服務(wù)消費(fèi)者

Dubbo的服務(wù)提供者是指提供服務(wù)的主體,通常會暴露自己的服務(wù)接口,并通過某種協(xié)議提供服務(wù)。而服務(wù)消費(fèi)者是使用服務(wù)的主體,通常會引用提供者的服務(wù)接口,并通過某種協(xié)議調(diào)用服務(wù)。

圖片圖片

  • 服務(wù)提供者向 Zookeeper 注冊服務(wù),服務(wù)消費(fèi)者向 Zookeeper 訂閱服務(wù)。
  • 服務(wù)消費(fèi)者通過 Zookeeper 獲取服務(wù)提供者的地址信息,然后調(diào)用服務(wù)提供者的服務(wù)。

4、注冊中心

Dubbo最核心的概念就是注冊中心,它用于管理服務(wù)提供者的注冊與發(fā)現(xiàn),使服務(wù)消費(fèi)者能夠動態(tài)地發(fā)現(xiàn)和訪問服務(wù)提供者。Dubbo支持多種注冊中心,包括Zookeeper、Redis、Multicast等等,其中Zookeeper是Dubbo默認(rèn)的注冊中心。

圖片圖片

注冊中心

  • 服務(wù)提供者將自己提供的服務(wù)注冊到注冊中心。
  • 服務(wù)消費(fèi)者從注冊中心訂閱所需的服務(wù)列表。
  • 注冊中心返回可用的服務(wù)列表給服務(wù)提供者和服務(wù)消費(fèi)者。
  • 服務(wù)消費(fèi)者調(diào)用服務(wù)提供者的服務(wù)。
  • 服務(wù)提供者返回服務(wù)結(jié)果給服務(wù)消費(fèi)者。

5、負(fù)載均衡

Dubbo 的負(fù)載均衡是指服務(wù)消費(fèi)者在調(diào)用服務(wù)提供者的時候,如何從多個服務(wù)提供者中選擇一個進(jìn)行調(diào)用。

Dubbo 默認(rèn)提供了多種負(fù)載均衡策略,例如隨機(jī)、輪詢、最少活躍數(shù)等。服務(wù)消費(fèi)者通過 Dubbo 的負(fù)載均衡模塊,將請求分發(fā)給多個服務(wù)提供者,然后由負(fù)載均衡模塊根據(jù)選定的負(fù)載均衡策略選擇一個服務(wù)提供者進(jìn)行調(diào)用,從而達(dá)到分?jǐn)傌?fù)載的效果。

圖片圖片

負(fù)載均衡

在圖中,服務(wù)消費(fèi)者 A 需要調(diào)用一個服務(wù)提供者,但是有多個服務(wù)提供者可供選擇,這時候負(fù)載均衡 B 就發(fā)揮作用了。B 會根據(jù)負(fù)載均衡策略,選擇一個服務(wù)提供者進(jìn)行調(diào)用,例如選擇了服務(wù)提供者1 C。如果 C 發(fā)生故障或宕機(jī),B 就會重新選擇一個可用的服務(wù)提供者,例如選擇了服務(wù)提供者2 D。這樣,服務(wù)消費(fèi)者 A 就可以通過 Dubbo 的負(fù)載均衡模塊,動態(tài)地選擇服務(wù)提供者,從而實(shí)現(xiàn)負(fù)載均衡。

6、集群容錯

Dubbo的集群容錯是指當(dāng)服務(wù)提供者發(fā)生故障時,Dubbo如何從備選節(jié)點(diǎn)中選擇一個可用的節(jié)點(diǎn)讓服務(wù)消費(fèi)者訪問。Dubbo提供了多種集群容錯策略,包括快速失敗、失敗切換、失敗重試等等,可以根據(jù)需求選擇適合的策略。

圖片圖片

集群容錯

  • Consumer:服務(wù)的消費(fèi)者,發(fā)起服務(wù)調(diào)用的一方。
  • Invoker:Dubbo 中的調(diào)用器,將消費(fèi)者的請求轉(zhuǎn)換成可執(zhí)行的任務(wù)并執(zhí)行。
  • Cluster:Dubbo 中的集群容錯模塊,將多個 Invoker 封裝成一個集群。
  • Failover:Dubbo 集群容錯模塊中的容錯策略之一,如果某次調(diào)用失敗,會自動切換到下一個 Invoker 進(jìn)行調(diào)用,直到成功為止。
  • Failfast:Dubbo 集群容錯模塊中的容錯策略之一,如果某次調(diào)用失敗,會立即拋出異常。
  • Failsafe:Dubbo 集群容錯模塊中的容錯策略之一,如果某次調(diào)用失敗,會記錄下異常,但不會拋出異常。
  • Failback:Dubbo 集群容錯模塊中的容錯策略之一,如果某次調(diào)用失敗,會在后臺異步重試。
  • Forking:Dubbo 集群容錯模塊中的容錯策略之一,將請求并發(fā)調(diào)用多個 Invoker,只要有一個 Invoker 成功返回結(jié)果,就立即返回。

三、Dubbo的架構(gòu)

1、服務(wù)提供者和服務(wù)消費(fèi)者之間的通信流程

在Dubbo中,服務(wù)提供者和服務(wù)消費(fèi)者之間的通信流程較為復(fù)雜,涉及到多個角色的交互。

下面簡要介紹Dubbo的通信流程:

  1. 服務(wù)消費(fèi)者向注冊中心發(fā)起服務(wù)發(fā)現(xiàn)請求,獲取服務(wù)列表。
  2. 注冊中心返回服務(wù)列表給服務(wù)消費(fèi)者。
  3. 服務(wù)消費(fèi)者根據(jù)負(fù)載均衡策略選擇一個服務(wù)提供者。
  4. 服務(wù)提供者返回自身的 IP 地址和端口號給服務(wù)消費(fèi)者。
  5. 服務(wù)消費(fèi)者通過網(wǎng)絡(luò)向服務(wù)提供者發(fā)送請求消息。
  6. 服務(wù)提供者處理請求并返回響應(yīng)消息給服務(wù)消費(fèi)者。

圖片圖片

dubbo的架構(gòu)

整個通信流程中,Dubbo使用了類似RPC(Remote Procedure Call)的方式進(jìn)行通信,即服務(wù)消費(fèi)者發(fā)送請求給服務(wù)提供者,服務(wù)提供者返回結(jié)果給服務(wù)消費(fèi)者。

Dubbo的主要區(qū)別在于,Dubbo支持多種協(xié)議和序列化機(jī)制,同時還提供了負(fù)載均衡、集群容錯等功能。

2、Dubbo的三層架構(gòu)

Dubbo的三層架構(gòu)包括:

(1)接口層

接口層是Dubbo的核心,它定義了服務(wù)提供者和服務(wù)消費(fèi)者之間的通信接口。在Dubbo中,接口默認(rèn)使用Java接口實(shí)現(xiàn),具有很強(qiáng)的可擴(kuò)展性。

(2)配置層

配置層的作用是通過配置文件或代碼來配置Dubbo的各種參數(shù),包括連接參數(shù)、超時時間、重試次數(shù)等等。Dubbo支持多種配置方式,包括XML配置、注解配置和屬性配置。

(3)基礎(chǔ)設(shè)施層

基礎(chǔ)設(shè)施層是Dubbo的底層架構(gòu),包括了Dubbo的RPC框架、網(wǎng)絡(luò)通信、序列化和反序列化等實(shí)現(xiàn)細(xì)節(jié)。Dubbo的基礎(chǔ)設(shè)施層具有較高的性能和可定制性。

圖片圖片

Dubbo的三層架構(gòu)

3、Dubbo的擴(kuò)展機(jī)制

Dubbo提供了較為完善的擴(kuò)展機(jī)制,使得開發(fā)者可以輕松改變Dubbo的默認(rèn)行為,實(shí)現(xiàn)個性化定制。

Dubbo的擴(kuò)展機(jī)制主要有三種:

(1)SPI機(jī)制

Dubbo使用了SPI(Service Provider Interface)機(jī)制,開發(fā)者可以通過在class path下提供指定的接口實(shí)現(xiàn)類來替換Dubbo框架默認(rèn)的實(shí)現(xiàn)。在Dubbo中,SPI機(jī)制通過Java的ServiceLoader實(shí)現(xiàn)。

(2)Adaptive機(jī)制

Dubbo的Adaptive機(jī)制是對SPI機(jī)制的一種補(bǔ)充,它可以根據(jù)不同的場景自動適配最合適的實(shí)現(xiàn)類。Adaptive機(jī)制通過動態(tài)生成的代理類來實(shí)現(xiàn)。

(3)Extension機(jī)制

Extension機(jī)制是Dubbo的核心擴(kuò)展機(jī)制,它允許開發(fā)者自定義Dubbo的各種插件,包括Protocol、Transport和Serialization等。Extension機(jī)制通過@SPI和@Adaptive注解實(shí)現(xiàn)。開發(fā)者可以通過實(shí)現(xiàn)指定接口和在注解中指定拓展名,來實(shí)現(xiàn)自定義插件的加載和使用。

四、Dubbo的配置

1、XML配置

Dubbo的XML配置是最早的配置方式,在配置過程中需要編寫XML文件,指定Dubbo相關(guān)的標(biāo)簽和屬性。其中,最基本的配置是服務(wù)提供者和服務(wù)消費(fèi)者的相關(guān)配置,如下:

<!-- 服務(wù)提供者注冊到注冊中心 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

<!-- 暴露服務(wù) -->
<dubbo:service interface="com.xxx.xxxService" ref="xxxServiceImpl" timeout="3000" />

<!-- 引用服務(wù) -->
<dubbo:reference interface="com.xxx.xxxService" id="xxxService" timeout="3000" />

在這段XML配置中,我們首先在標(biāo)簽中指定了注冊中心的地址信息,然后在標(biāo)簽中指定了服務(wù)提供者的接口和實(shí)現(xiàn)類,以及引用服務(wù)的接口和實(shí)現(xiàn)。timeout屬性用于設(shè)置超時時間。

除了服務(wù)提供者和服務(wù)消費(fèi)者的相關(guān)配置外,還有其他相關(guān)的配置。比如,可以使用<dubbo:protocol>標(biāo)簽指定Dubbo使用的協(xié)議類型和端口號,同時也可以在<dubbo:method>標(biāo)簽中為方法單獨(dú)指定超時時間等參數(shù)。

2、注解配置

注解配置是一種比較簡便的配置方式,可以直接在Java代碼中使用注解指定Dubbo相關(guān)的配置信息。使用注解配置時,需要在配置類中添加@EnableDubbo注解開啟Dubbo相關(guān)功能,示例如下:

@Configuration
@EnableDubbo(scanBasePackages = "com.xxx.service.impl")
public class DubboConfig {
}

其中,scanBasePackages屬性指定了Dubbo掃描的包路徑。然后就可以在服務(wù)提供者和服務(wù)消費(fèi)者的實(shí)現(xiàn)類中使用Dubbo提供的注解進(jìn)行配置,示例如下:

@Service(timeout = 3000)
public class XxxServiceImpl implements XxxService {
    
    @Override
    public String hello(String name) {
        return "Hello " + name;
    }
}

對于服務(wù)消費(fèi)者,則可以使用@DubboReference注解引用服務(wù),示例如下:

@Service
public class XxxConsumer {
  @DubboReference(timeout = 3000)
  private XxxService xxxService;

  public String hello(String name) {
      return xxxService.hello(name);
  }
}

在這個例子中,我們使用@DubboReference注解指定了服務(wù)的接口和超時時間,然后在XxxConsumer類中通過xxxService調(diào)用服務(wù)。

3、屬性配置

屬性配置是一種比較靈活的配置方式,它允許我們在配置文件中定義屬性,然后在代碼中讀取這些屬性并進(jìn)行相關(guān)操作。使用屬性配置時,我們需要在代碼中創(chuàng)建一個DubboProperties對象,并將其中的屬性值通過@ConfigurationProperties注解注入到該對象中。示例如下:

@Component
@ConfigurationProperties(prefix = "dubbo")
public class DubboProperties {
    private String registryAddress;

    // get/set方法省略
}

然后,我們可以使用這個DubboProperties對象中定義的屬性配置Dubbo相關(guān)的參數(shù),示例如下:

@Service(timeout = "#{dubboProperties.timeout}")
public class XxxServiceImpl implements XxxService {

    @Autowired
    private DubboProperties dubboProperties;

    @Override
    public String hello(String name) {
        return "Hello " + name;
    }
}

在這個例子中,我們使用了#{dubboProperties.timeout}的方式,讀取DubboProperties對象中的timeout屬性來指定服務(wù)超時時間。我們還可以在DubboProviders對象中定義其他屬性,在需要的地方使用${}的方式讀取這些屬性。

五、Dubbo的高可用與容錯

1、服務(wù)降級

服務(wù)降級指的是當(dāng)系統(tǒng)出現(xiàn)故障或者異常情況時,系統(tǒng)可以通過關(guān)閉一些非核心的功能來保證其他核心功能的正常運(yùn)行。Dubbo提供了服務(wù)降級的功能,通過這個功能,Dubbo可以在某些條件下提供替代方案,比如返回空結(jié)果、返回默認(rèn)結(jié)果等等。

Dubbo的服務(wù)降級是通過Mock來實(shí)現(xiàn)的,Mock可以在接口定義的時候指定。Dubbo在正常情況下會使用服務(wù)提供者提供的服務(wù),當(dāng)服務(wù)提供者出現(xiàn)異常或者超時時,Dubbo會自動調(diào)用Mock中的方法返回預(yù)設(shè)的值。

2、服務(wù)熔斷

服務(wù)熔斷是指當(dāng)系統(tǒng)中某個服務(wù)出現(xiàn)異常或者超時等情況時,Dubbo會在一定時間內(nèi)暫停對該服務(wù)的調(diào)用,防止服務(wù)雪崩,提高系統(tǒng)的可用性。Dubbo支持配置熔斷的時間窗口和請求的最大失敗次數(shù),當(dāng)超過這個次數(shù)后,Dubbo將不再調(diào)用該服務(wù),直到時間窗口結(jié)束。

Dubbo的服務(wù)熔斷是通過circuit breaker模式來實(shí)現(xiàn)的,Dubbo會根據(jù)服務(wù)的負(fù)載情況來判斷是否需要熔斷。

3、服務(wù)隔離

服務(wù)隔離指的是將不同的服務(wù)放在不同的進(jìn)程或者容器中運(yùn)行,防止某個服務(wù)出現(xiàn)故障影響到其他服務(wù)的正常運(yùn)行。Dubbo支持將不同的服務(wù)放在不同的進(jìn)程或者容器中運(yùn)行,實(shí)現(xiàn)服務(wù)的隔離。

4、重試機(jī)制

重試機(jī)制指的是在服務(wù)調(diào)用失敗后,Dubbo會根據(jù)一定的規(guī)則進(jìn)行重試,直到服務(wù)調(diào)用成功或達(dá)到最大重試次數(shù)。Dubbo可以配置重試次數(shù)、重試間隔時間等參數(shù),實(shí)現(xiàn)重試機(jī)制。

Dubbo默認(rèn)提供了重試機(jī)制,可以通過在配置文件中設(shè)置retries參數(shù)來啟用。如果服務(wù)調(diào)用失敗,則Dubbo會自動重新嘗試調(diào)用服務(wù),直到達(dá)到最大重試次數(shù)或服務(wù)調(diào)用成功。重試過程中,Dubbo會等待一定的時間間隔,以避免對服務(wù)的過度壓力。

六、Dubbo的負(fù)載均衡策略

1、輪詢負(fù)載均衡

輪詢負(fù)載均衡算法是默認(rèn)的算法,它會將服務(wù)提供者列表按照順序輪流選擇。如果其中一個服務(wù)提供者的性能較差,那么使用輪詢算法會導(dǎo)致它會被頻繁地請求,從而降低整體性能。因此,輪詢算法適用于所有服務(wù)提供者性能相同的情況下。

2、隨機(jī)負(fù)載均衡

隨機(jī)負(fù)載均衡算法可以隨機(jī)選擇一個服務(wù)提供者來處理請求。與輪詢算法相比,隨機(jī)算法并不考慮服務(wù)提供者之間的負(fù)載或性能,因此速度更快。但是,在某些情況下,服務(wù)提供者之間的負(fù)載差異太大,隨機(jī)算法可能會導(dǎo)致某些服務(wù)提供者接受過多的請求。因此,隨機(jī)算法適用于所有服務(wù)提供者性能相同的情況下,或服務(wù)提供者之間的性能差異較小的情況下

3、最少活躍調(diào)用負(fù)載均衡

最少活躍調(diào)用(Least Active)是一種智能負(fù)載均衡算法。該算法會選擇活躍調(diào)用數(shù)最少的服務(wù)提供者來處理請求,也就是當(dāng)前正忙碌程度最小的服務(wù)提供者。這種算法適合那些提供長時間服務(wù)的服務(wù)者,比如像查詢某種緩存服務(wù),查詢開始不占用太多服務(wù)器資源,但是隨著查詢次數(shù)增加會占用 相當(dāng)多的服務(wù)端資源,這時候使用Least Active算法可以選取負(fù)載最小的服務(wù)提供者,避免資源過度占用。

4、一致性哈希負(fù)載均衡

一致性哈希負(fù)載均衡是一種智能負(fù)載均衡算法,在分布式場景下,可以保證負(fù)載均衡和數(shù)據(jù)一致性。該算法會將所有服務(wù)提供者看作一個環(huán),每個服務(wù)提供者對應(yīng)一個獨(dú)特的哈希值。

對于一個請求,一致性哈希算法通過哈希值將其映射到服務(wù)提供者環(huán)中的一個位置,然后選擇服務(wù)提供者環(huán)上第一個順時針方向遇到的服務(wù)提供者來處理請求。

該算法優(yōu)點(diǎn)在于,當(dāng)新增或刪除一個服務(wù)提供者時,僅需重新映射部分請求到新的服務(wù)提供者,而不是全部請求,從而避免了大規(guī)模遷移,可以提高系統(tǒng)的穩(wěn)定性和擴(kuò)展性。

七、Dubbo的集群容錯機(jī)制

1、失敗自動切換

在調(diào)用服務(wù)時,Dubbo會選擇一個可用的服務(wù)提供者,如果該提供者未響應(yīng)或發(fā)生異常,Dubbo會自動切換到下一個可用的服務(wù)提供者進(jìn)行調(diào)用,這就是失敗自動切換機(jī)制

2、失敗安全保護(hù)

在失敗自動切換的基礎(chǔ)上,Dubbo提供了另一種集群容錯機(jī)制:失敗安全保護(hù)。它的原理是當(dāng)出現(xiàn)某個服務(wù)提供者不可用時,Dubbo會暫時禁用該服務(wù)提供者,一段時間后再次開啟,檢查其可用性。通過這種方式,Dubbo保證了系統(tǒng)的穩(wěn)定性以及在出現(xiàn)異常情況時調(diào)用的可用性。

3、并行調(diào)用

Dubbo在集群容錯中提供了一種新的機(jī)制:并行調(diào)用。

當(dāng)服務(wù)提供者在某個時間段內(nèi)不能響應(yīng)請求時,Dubbo會開啟多個服務(wù)提供者實(shí)例,將請求發(fā)送給這些實(shí)例進(jìn)行并行處理,快速的獲取結(jié)果并返回給服務(wù)消費(fèi)者。

4、快速失敗

快速失敗機(jī)制指當(dāng)某個服務(wù)提供者出現(xiàn)異常時,Dubbo會快速的拋出異常給服務(wù)消費(fèi)者,避免服務(wù)調(diào)用者長時間等待請求響應(yīng)結(jié)果。同時,Dubbo也提供了一個超時時間,如果服務(wù)提供者在規(guī)定時間內(nèi)未能響應(yīng)請求,則Dubbo會快速的拋出異常給服務(wù)消費(fèi)者,避免請求長時間等待沒有響應(yīng)結(jié)果。

八、Dubbo的底層通信

1、Dubbo的網(wǎng)絡(luò)通信

Dubbo的底層通信是建立在Netty的通信框架上的,Netty是一個高性能的、異步的、事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架。在Dubbo中,Netty扮演著很重要的角色,其提供的通信能力能夠支持Dubbo不同節(jié)點(diǎn)之間的通信,并且通過高效的I/O操作完成請求響應(yīng)的過程。Dubbo利用Netty的通信框架實(shí)現(xiàn)了從網(wǎng)絡(luò)層到協(xié)議層的完整封裝,使得Dubbo的通信效率得到很大的提升

Dubbo的網(wǎng)絡(luò)通信過程是非常復(fù)雜的,在服務(wù)提供者和服務(wù)消費(fèi)者之間建立連接,并進(jìn)行請求響應(yīng)的過程中,每一步都可能出現(xiàn)各種問題,例如網(wǎng)絡(luò)延遲、服務(wù)端宕機(jī)、序列化錯誤等等,因此Dubbo在網(wǎng)絡(luò)通信過程中加入了多種機(jī)制來提高網(wǎng)絡(luò)通信的效率和安全性。其中,比較重要的機(jī)制包括心跳機(jī)制、序列化與反序列化、長連接池等等。

2、序列化和反序列化

Dubbo利用Java自帶的ObjectInputStream和ObjectOutputStream類實(shí)現(xiàn)序列化和反序列化的過程,通過序列化和反序列化使得復(fù)雜的對象能夠在網(wǎng)絡(luò)中傳輸。

Dubbo支持多種序列化協(xié)議,包括Java原生的序列化協(xié)議(即Dubbo協(xié)議)、JSON、Hessian、Kryo等。Dubbo默認(rèn)采用Java原生的序列化協(xié)議,雖然其具有很好的兼容性,但是其性能較差。因此,通常情況下建議使用其他的序列化協(xié)議,例如Hessian或Kryo,以提高序列化的效率。

九、Dubbo的擴(kuò)展機(jī)制

1、自定義SPI擴(kuò)展

Dubbo采用SPI(Service Provider Interface)的機(jī)制,用于擴(kuò)展或替換框架中的某個實(shí)現(xiàn)。Dubbo對SPI機(jī)制的擴(kuò)展可以通過Java的SPI機(jī)制實(shí)現(xiàn),也可以通過Dubbo自己定義的SPI機(jī)制實(shí)現(xiàn),Dubbo自己定義的SPI機(jī)制要完善一些。

Dubbo自定義的SPI機(jī)制定義了一個擴(kuò)展點(diǎn)接口,每個擴(kuò)展點(diǎn)接口對應(yīng)了一組擴(kuò)展實(shí)現(xiàn)類,而這些實(shí)現(xiàn)類都必須要使用SPI的配置文件進(jìn)行配置。

Dubbo的擴(kuò)展點(diǎn)接口中,我們可以定義類似于ExtensionLoader這樣的類,通過這些類,我們可以獲取到相關(guān)擴(kuò)展實(shí)現(xiàn)類,從而進(jìn)行自定義的擴(kuò)展。

2、自定義過濾器

Dubbo的過濾器是一種攔截器,可以在請求到達(dá)消費(fèi)者時、在提供者執(zhí)行服務(wù)邏輯前后以及在調(diào)用方收到響應(yīng)時對請求和響應(yīng)進(jìn)行處理。Dubbo提供了一些內(nèi)置的過濾器,例如安全過濾器、異常過濾器、日志過濾器等。

不過,Dubbo也允許我們自定義過濾器來實(shí)現(xiàn)自己的特定需求,自定義的過濾器需要實(shí)現(xiàn)Filter接口,然后通過SPI機(jī)制進(jìn)行擴(kuò)展。

自定義的過濾器可以用于多種場景,例如監(jiān)控、鑒權(quán)、統(tǒng)計(jì)和日志等。

3、自定義負(fù)載均衡策略

Dubbo框架內(nèi)置了多種負(fù)載均衡策略,例如隨機(jī)負(fù)載均衡、輪詢負(fù)載均衡和最少活躍調(diào)用負(fù)載均衡等。但是,這些負(fù)載均衡策略并不一定適用于所有的場景,因此Dubbo也允許我們自定義負(fù)載均衡策略。

自定義負(fù)載均衡策略需要實(shí)現(xiàn)LoadBalance接口,然后通過SPI機(jī)制進(jìn)行擴(kuò)展。自定義負(fù)載均衡策略可以根據(jù)不同場景的需求,實(shí)現(xiàn)不同的算法和邏輯,從而更好地滿足業(yè)務(wù)需求。

十、總結(jié)

1、Dubbo的優(yōu)缺點(diǎn)

Dubbo是阿里巴巴公司開發(fā)的一款高性能、高可用的分布式服務(wù)框架。在分布式架構(gòu)中,Dubbo擔(dān)任著重要的角色,實(shí)現(xiàn)了服務(wù)的注冊、發(fā)現(xiàn)、負(fù)載均衡、容錯等功能,為分布式系統(tǒng)提供了更好的可擴(kuò)展性和可維護(hù)性。

同時,Dubbo也存在一些優(yōu)缺點(diǎn)。

首先,Dubbo具有較強(qiáng)的可定制化性,可以根據(jù)實(shí)際業(yè)務(wù)需求來選擇不同的配置和擴(kuò)展機(jī)制。

其次,Dubbo的性能表現(xiàn)出色,適用于高并發(fā)、大規(guī)模的分布式系統(tǒng)。但是,Dubbo也存在一些問題,比如復(fù)雜的部署和配置流程,限制了其在小型項(xiàng)目中的應(yīng)用。

2、Dubbo的未來發(fā)展趨勢

未來,Dubbo將會繼續(xù)發(fā)展和改進(jìn),市場對Dubbo的需求也將繼續(xù)增加。除了更新迭代,Dubbo還將更加注重安全、大數(shù)據(jù)等領(lǐng)域的拓展和應(yīng)用。

總的來說,Dubbo在分布式架構(gòu)中的地位和應(yīng)用前景都非常廣闊。

本文轉(zhuǎn)載自微信公眾號「哪吒編程」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系哪吒編程公眾號。


責(zé)任編輯:姜華 來源: 哪吒編程
相關(guān)推薦

2024-12-26 07:49:57

Java隊(duì)列線程

2021-12-30 08:02:54

HashHistory面試

2024-03-06 08:00:56

javaAQS原生

2017-12-18 17:21:56

AndroidJava內(nèi)存泄漏

2024-06-26 11:55:44

2019-11-29 10:16:36

高并發(fā)系統(tǒng)緩存

2019-12-09 10:37:27

Hash算法面試

2020-09-15 10:25:13

Redis命令Java

2020-04-30 10:24:35

Spring循環(huán)依賴Java

2023-11-01 16:50:58

2024-04-02 09:58:58

Java并發(fā)鎖開發(fā)

2025-10-17 10:00:00

運(yùn)維Linux

2025-05-12 10:10:00

運(yùn)維Linux系統(tǒng)

2020-10-14 15:53:45

秒殺秒殺系統(tǒng)流量

2013-08-21 13:43:16

架構(gòu)師架構(gòu)師面試職場面試

2023-10-26 16:02:04

線程

2024-04-10 12:07:09

2018-05-18 15:46:28

程序員面試技巧

2024-05-11 08:33:45

JavaJVM虛擬機(jī)

2021-03-24 10:25:24

優(yōu)化VUE性能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲人成精品久久久 | 成人福利av| 久久精品欧美一区二区三区不卡| 日韩欧美在线播放| 欧洲av一区| 国产精品一级二级| 欧美一级三级| 亚洲欧美电影院| 国产视频精品网| 国产一级片免费视频| 午夜国产一区二区| 欧洲国产伦久久久久久久| 亚洲综合欧美日韩| 手机看片福利永久| 麻豆精品一区二区三区| 久久久免费精品视频| 亚洲图片第一页| 白白在线精品| 欧美日韩国产精选| 国产淫片免费看| 国产传媒在线播放| 2020日本不卡一区二区视频| 亚洲bt天天射| 区一区二在线观看| 国内在线观看一区二区三区| 91麻豆精品国产91久久久更新时间 | 日本欧美一级片| 久久久久久久久久网站| 亚洲理论电影片| 欧美高清视频在线高清观看mv色露露十八| 国产视频一区二区不卡| 91国内精品视频| 性色一区二区三区| 欧美成人午夜免费视在线看片| 国精产品一区二区三区| 欧美人体视频| 日韩精品一区二区三区视频播放| 国产女主播av| 日本在线人成| 国产欧美在线观看一区| 精品高清视频| 黄色一级大片在线免费看国产| 久久99精品一区二区三区三区| 日本乱人伦a精品| 日本亚洲色大成网站www久久| 99久久精品网| 中文字幕一区二区三区电影| 日本三级黄色网址| 日韩av首页| 91国在线观看| 日韩av在线综合| 欧美gv在线| 欧美日韩免费在线观看| 久草免费福利在线| 日韩免费影院| 亚洲国产精品一区二区久久| www.一区二区.com| 亚洲国产成人一区二区| 美国三级日本三级久久99 | 亚洲午夜18毛片在线看| 亚洲电影av| 国内偷自视频区视频综合| 免费在线黄色片| 在线精品观看| 欧美中文字幕在线播放| 国产欧美一区二区三区在线看蜜臂| 亚洲日本免费| 欧美又大又硬又粗bbbbb| www.99热| 97精品视频| 久久影院在线观看| 久久久久久久黄色| 一本久道久久久| 2018中文字幕一区二区三区| 五月天激情国产综合婷婷婷| 久久九九精品| 国产精品美女无圣光视频| 久热这里有精品| 欧美日韩ab| 91精品国产99久久久久久| 中文字幕第15页| 日韩高清电影一区| 96精品久久久久中文字幕| 国产国语亲子伦亲子| www.亚洲人| 青青草原亚洲| 国产在线更新| 舔着乳尖日韩一区| 一区在线电影| 污网站在线免费看| 欧美日韩免费在线观看| 午夜免费看视频| 成人偷拍自拍| 国产亚洲xxx| 欧美激情图片小说| 一本综合久久| 国产日产亚洲精品| 亚洲成人黄色片| 91丝袜国产在线播放| 四虎一区二区| gogo高清午夜人体在线| 欧美视频精品在线观看| 美女又黄又免费的视频| 九色精品91| 欧美激情成人在线视频| 爱爱视频免费在线观看| 99国产精品99久久久久久粉嫩| 国产精品视频xxxx| 日本人妻丰满熟妇久久久久久| 国产又粗又猛又爽又黄91精品| 国产一区二区三区色淫影院| 69视频在线观看| 五月综合激情日本mⅴ| 岛国av在线免费| 日韩动漫一区| 欧美精品在线第一页| 成年人视频免费| 成人美女视频在线看| 夜夜爽www精品| 国模精品视频| 日韩色在线观看| 性爱在线免费视频| 美女日韩在线中文字幕| 97碰碰视频| www在线播放| 欧美日韩精品在线| 男人添女人荫蒂国产| 色琪琪久久se色| 国产精品com| 五月天婷婷激情网| 亚洲一区av在线| 性鲍视频在线观看| 国产精品99一区二区三| 国产成人在线亚洲欧美| 日本精品999| 亚洲综合图片区| 韩国三级丰满少妇高潮| 9999国产精品| 国产欧美精品xxxx另类| 极品美乳网红视频免费在线观看| 天天av天天翘天天综合网色鬼国产| 91视频福利网| 天天射成人网| 91色精品视频在线| 欧美一区二区三区| 精品视频123区在线观看| 2019男人天堂| 蜜臀久久久99精品久久久久久| 久久综合一区| 樱桃视频成人在线观看| 日韩大陆毛片av| 国产性xxxx高清| av在线不卡免费看| 免费无遮挡无码永久视频| 国产香蕉精品| 欧美一级视频免费在线观看| 手机看片国产1024| 欧美日韩国产区| 人妻熟女aⅴ一区二区三区汇编| 精品理论电影在线| 日韩免费av在线| 国产三级在线| 欧美日韩精品三区| 亚洲天堂精品一区| 韩国毛片一区二区三区| 国产盗摄视频在线观看| 久久免费福利| 亚洲热线99精品视频| 久久亚洲精品国产| 国产三级精品三级在线专区| 男人插女人下面免费视频| 日韩av片子| 91精品在线观看视频| 色呦呦在线观看视频| 亚洲国产日韩欧美在线99| 国产九色在线播放九色| 国产精品女同互慰在线看| 欧美亚洲日本一区二区三区| 亚洲婷婷丁香| 国产日韩在线视频| 特级毛片在线| 亚洲毛茸茸少妇高潮呻吟| 一级黄色片视频| 亚洲高清不卡在线观看| 久久av无码精品人妻系列试探| 国产综合自拍| 免费观看成人在线| 国产精品视频一区二区三区| 久久人91精品久久久久久不卡| 免费福利在线视频| 这里只有精品99re| 日产精品久久久| 亚洲图片激情小说| 国产夫妻性爱视频| 亚洲黄色成人| 亚洲精品美女久久7777777| 日本一区二区三区电影免费观看| 51精品在线观看| 久热国产在线| 亚洲人成电影网站色| 国产日本精品视频| 欧美性开放视频| 天天看片中文字幕| 久久你懂得1024| 中文字幕一区二区三区四| 噜噜噜91成人网| 韩国无码av片在线观看网站| 综合国产视频| 国产经典一区二区三区| 久久精品97| 91高潮在线观看| 视频在线这里都是精品| 色yeye香蕉凹凸一区二区av| 五十路在线观看| 日韩女优制服丝袜电影| 中文字幕在线观看欧美| 天天av天天翘天天综合网色鬼国产| 国产精品视频一区二区在线观看| av亚洲产国偷v产偷v自拍| 色91精品久久久久久久久| 国产高清一区二区| 欧洲成人一区二区| 国产精品白丝一区二区三区| 成人在线一区二区| 美女网站视频一区| 欧美一级免费看| tube8在线hd| 久久艹在线视频| 免费的黄网站在线观看| 国产一区二区日韩| 久久国产精品高清一区二区三区| 精品国产麻豆免费人成网站| 国产aⅴ一区二区三区| 欧美综合久久久| 亚洲国产成人无码av在线| 香蕉成人啪国产精品视频综合网| 欧美人妻一区二区| 亚洲人成人一区二区在线观看| 天堂在线中文视频| 国产欧美日韩激情| 丁香激情五月少妇| 久久精品亚洲一区二区三区浴池| 中文字幕日韩三级片| 成人免费高清视频| 蜜臀av粉嫩av懂色av| 久久www成人_看片免费不卡| 91九色丨porny丨国产jk| 欧美a级一区| 亚洲精品少妇一区二区| 欧美日韩福利| 国产情侣第一页| 激情久久久久久久| 999在线观看视频| 日韩午夜激情| 男人透女人免费视频| 日韩av在线免费观看不卡| 国产福利视频在线播放| 天堂成人国产精品一区| 午夜免费精品视频| 麻豆久久久久久| 久久综合在线观看| 国产91对白在线观看九色| 国模无码视频一区| 91网站最新网址| 色欲av无码一区二区三区| 久久精品人人做人人爽人人| 日本一二三不卡视频| 中文字幕亚洲区| 青春草免费视频| 天天综合网天天综合色| 黄色片中文字幕| 欧美日韩小视频| va视频在线观看| 日韩国产一区三区| 成人亚洲性情网站www在线观看| 日韩中文av在线| 污片视频在线免费观看| 97精品在线视频| 欧美日韩尤物久久| 亚洲一区二区三区视频播放| 精品国产乱子伦一区二区| 欧美日韩在线高清| 色综合久久一区二区三区| 红桃一区二区三区| 国产一区二区三区久久| 日本一级黄视频| 亚洲欧美成人| 五月天av在线播放| 成人18精品视频| 91动漫免费网站| 香蕉加勒比综合久久| 中文字幕乱码视频| 精品少妇一区二区三区视频免付费| 日本五码在线| 理论片在线不卡免费观看| av免费不卡| 国产日本欧美一区| 欧美综合自拍| 中文字幕精品—区二区日日骚| 亚洲理论在线| 在线观看日本www| 99re热这里只有精品视频| 亚洲波多野结衣| 一本久道久久综合中文字幕| 国产三级按摩推拿按摩| 精品亚洲一区二区三区| av电影高清在线观看| 国产成人精品一区二区| h视频久久久| 一区二区三区三区在线| 男女精品视频| 亚洲国产精品第一页| 国产精品视频看| 亚洲天堂视频网站| 精品国产凹凸成av人导航| 巨大荫蒂视频欧美另类大| 日韩美女视频在线观看| 国产精品99久久免费观看| 伊人久久大香线蕉av一区| 久久久久久婷| 国产十八熟妇av成人一区| 亚洲黄一区二区三区| 亚洲综合精品在线| 亚洲视频综合网| 欧美aa在线| 精品国产乱码久久久久软件| 中文字幕av亚洲精品一部二部| 日韩av手机版| 91蜜桃在线免费视频| 国产无套在线观看| 欧美成人一区二区三区片免费 | 欧美第一淫aaasss性| 久久久久黄色| 亚洲7777| 三级一区在线视频先锋| aaaaa级少妇高潮大片免费看| 亚洲成人免费看| 国精品人妻无码一区二区三区喝尿| 久久精品一本久久99精品| 电影一区二区| 亚洲高清在线播放| 免费观看一级特黄欧美大片| 欧美做受高潮6| 日本精品一区二区三区高清| 青青久草在线| 秋霞成人午夜鲁丝一区二区三区| 欧美亚洲tv| 欧美日本视频在线观看| 99riav一区二区三区| aaa人片在线| 精品小视频在线| xxxxxx欧美| 欧洲一区二区日韩在线视频观看免费| 亚洲精品乱码久久久久久蜜桃麻豆| 色哟哟无码精品一区二区三区| 亚洲一区二区三区精品在线| 成人1区2区3区| 国内精品400部情侣激情| 中文在线免费一区三区| 日本一本中文字幕| 91在线你懂得| 免费观看日批视频| 中文字幕亚洲一区| 国产精品视频一区二区三区| 成人av在线不卡| 91麻豆国产精品久久| 欧美日韩a v| 日韩视频免费看| 欧美成年网站| 国产午夜福利在线播放| 国产欧美一区二区精品婷婷| 中文字幕制服诱惑| 欧美成在线视频| 加勒比色老久久爱综合网| 免费日韩中文字幕| 亚洲日穴在线视频| 欧美熟妇另类久久久久久不卡| 欧美一级视频一区二区| 欧美电影《睫毛膏》| 国产精品欧美性爱| 91黄色免费看| 日韩特级毛片| 欧美日韩在线不卡一区| 国产资源在线一区| 日本在线视频免费观看| 国产一区二区三区在线看| 精品国产鲁一鲁****| 欧美国产激情视频| 最新国产成人在线观看| 欧美自拍第一页| 国产精品影片在线观看| 激情欧美亚洲| 手机免费观看av| 亚洲精品一区二区在线观看| 国产一区二区主播在线| 97在线国产视频| 国产精品乱人伦中文| 天堂在线视频免费观看| 成人国产在线视频| 午夜一区二区三区不卡视频|