最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

僅用5分鐘極速入門Dubbo使用教程

 更新時間:2021年06月01日 09:52:40   作者:Java識堂  
今天給大家介紹一款高性能、透明的遠(yuǎn)程過程調(diào)用框架dubbo,通過本文學(xué)習(xí)可以快速掌握Dubbo知識,感興趣的朋友跟隨小編一起看看吧

 Dubbo是什么?

Dubbo是一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。簡單的說,dubbo就是個服務(wù)框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務(wù)框架的需求,并且本質(zhì)上是個服務(wù)調(diào)用的東東,說白了Dubbo就是個遠(yuǎn)程服務(wù)調(diào)用的分布式框架(告別Web Service模式中的WSdl,以服務(wù)者與消費者的方式在dubbo上注冊)

其核心部分包含:
1. 遠(yuǎn)程通訊: 提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應(yīng)”模式的信息交換方式。
2. 集群容錯: 提供基于接口方法的透明遠(yuǎn)程過程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。
3. 自動發(fā)現(xiàn): 基于注冊中心目錄服務(wù),使服務(wù)消費方能動態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。

Dubbo能做什么?

1.透明化的遠(yuǎn)程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入。     
2.軟負(fù)載均衡及容錯機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點。
3. 服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。

介紹

在這里插入圖片描述

在使用Dubbo開發(fā)時,我們一般將項目分為如下3個模塊

api:將服務(wù)提供者和服務(wù)消費者都需要用到的接口放在api層
consumer:服務(wù)消費者
producer:服務(wù)提供者

假如有如下一個場景,我們需要查詢用戶的信息,用戶請求發(fā)送到consumer這個服務(wù),然后consumer這個服務(wù)調(diào)用producer這個服務(wù)獲取到用戶信息,并返回給用戶

Api模塊實現(xiàn)

用戶信息封裝到UserInfo類中,因為需要網(wǎng)絡(luò)傳輸,所以需要實現(xiàn)序列化接口

public class UserInfo implements Serializable {

    private String userId;
    private String phoneNum;
    private String userAddress;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }
}

用戶信息接口,producer模塊寫這個接口的實現(xiàn),consumer模塊寫這個接口的調(diào)用

producer模塊實現(xiàn)

我們只需要引入對應(yīng)的starter和zookeeper模塊即可方便的使用dubbo

<dependency>
  <groupId>org.apache.dubbo</groupId>
  <artifactId>dubbo-spring-boot-starter</artifactId>
  <version>2.7.3</version>
</dependency>
<dependency>
  <groupId>org.apache.dubbo</groupId>
  <artifactId>dubbo-dependencies-zookeeper</artifactId>
  <version>2.7.6</version>
  <type>pom</type>
  <exclusions>
    <exclusion>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
  </exclusions>
</dependency>

producer模塊寫接口的實現(xiàn)即可

@Service
public class UserServiceImpl implements UserService {

    @Override
    public UserInfo hello(String username) {
        UserInfo userInfo = new UserInfo();
        userInfo.setUserId("10");
        userInfo.setPhoneNum("15810554635");
        userInfo.setUserAddress("北京昌平");
        return userInfo;
    }
}

需要注意的一點是@Service注解是dubbo中的,初學(xué)者容易導(dǎo)入成spring框架的@Service,導(dǎo)致服務(wù)導(dǎo)出失敗

import org.apache.dubbo.config.annotation.Service;

啟動類上需要加上@EnableDubbo注解

@EnableDubbo
@SpringBootApplication
public class ProducerApp {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApp.class, args);
    }
}

application.yaml

server:
  port: 8081

spring:
  application:
    name: springboot-dubbo-producer

dubbo:
  registry:
    # 注冊中心地址及協(xié)議
    address: zookeeper://myhost:2181

在application.yaml指定服務(wù)啟動的端口,服務(wù)名字和注冊中心的地址

consumer模塊實現(xiàn)

consumer端只需要在需要調(diào)用的接口上加上@Reference注解,即可調(diào)用到producer端

@RestController
public class UserController {

    @Reference(check = false)
    private UserService userService;

    @RequestMapping("hello")
    public UserInfo hello(@RequestParam("id") String id) {
        return userService.hello(id);
    }

}

@Reference中check=false表示啟動的時候不去管UserService服務(wù)是否能正常提供服務(wù),這個值默認(rèn)為true,表示當(dāng)UserService不能提供服務(wù)時,會導(dǎo)致consumer端啟動失敗

application.yaml

server:
  port: 8080

spring:
  application:
    name: springboot-dubbo-consumer

dubbo:
  registry:
    protocol: zookeeper
    address: myhost:2181

同樣在application.yaml指定服務(wù)啟動的端口,服務(wù)名字和注冊中心的地址

curl http://localhost:8080/hello

{
  "userId": "10",
  "phoneNum": "158****4635",
  "userAddress": "北京昌平"
}

可以看到使用RPC框架后,調(diào)用遠(yuǎn)程方法和調(diào)用本地方法一樣簡單

本文github地址:https://github.com/erlieStar/dubbo-learning

以上就是僅用5分鐘極速入門Dubbo使用教程的詳細(xì)內(nèi)容,更多關(guān)于Dubbo使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • String字符串拼接方法concat和+的效率對比

    String字符串拼接方法concat和+的效率對比

    這篇文章主要介紹了String字符串拼接方法concat和+的效率對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JAVA實現(xiàn)空間索引編碼——GeoHash的示例

    JAVA實現(xiàn)空間索引編碼——GeoHash的示例

    本篇文章主要介紹了JAVA實現(xiàn)空間索引編碼——GeoHash的示例,如何從眾多的位置信息中查找到離自己最近的位置,有興趣的朋友可以了解一下
    2016-10-10
  • 解決springboot遇到autowire注入為null的問題

    解決springboot遇到autowire注入為null的問題

    這篇文章主要介紹了解決springboot遇到autowire注入為null的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Spring中的retry重試組件詳解

    Spring中的retry重試組件詳解

    這篇文章主要介紹了Spring中的retry重試組件詳解,Retry重試組件是一個處理重試邏輯的工具,可以在出現(xiàn)異?;蚴∏闆r下自動進(jìn)行重試操作,從而提高程序的穩(wěn)定性和可靠性,需要的朋友可以參考下
    2023-10-10
  • 學(xué)習(xí)Java的9張思維導(dǎo)圖

    學(xué)習(xí)Java的9張思維導(dǎo)圖

    這篇文章主要為大家詳細(xì)介紹了學(xué)習(xí)Java的9張思維導(dǎo)圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • windows定時器配置執(zhí)行java jar文件的方法詳解

    windows定時器配置執(zhí)行java jar文件的方法詳解

    這篇文章主要給大家介紹了關(guān)于windows定時器配置執(zhí)行java jar文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Windows10系統(tǒng)下JDK1.8的下載安裝及環(huán)境變量配置的教程

    Windows10系統(tǒng)下JDK1.8的下載安裝及環(huán)境變量配置的教程

    這篇文章主要介紹了Windows10系統(tǒng)下JDK1.8的下載安裝及環(huán)境變量配置的教程,本文圖文并茂給大家介紹的非常詳細(xì),對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Assert.assertEquals的使用方法及注意事項說明

    Assert.assertEquals的使用方法及注意事項說明

    這篇文章主要介紹了Assert.assertEquals的使用方法及注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • linux中nohup?java?-jar啟動java項目的步驟

    linux中nohup?java?-jar啟動java項目的步驟

    nohup是一個Unix和Linux命令,用于運行關(guān)閉時不會被終止的進(jìn)程,這篇文章主要給大家介紹了關(guān)于linux中nohup?java?-jar啟動java項目的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • MyEclipse2018中安裝Mybatis generator插件的實現(xiàn)步驟

    MyEclipse2018中安裝Mybatis generator插件的實現(xiàn)步驟

    這篇文章主要介紹了MyEclipse2018中安裝Mybatis generator插件的實現(xiàn)步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論

金山区| 泸州市| 赞皇县| 金堂县| 乐安县| 灵台县| 凭祥市| 新乡县| 寿光市| 岢岚县| 来宾市| 双牌县| 遂宁市| 琼结县| 阿勒泰市| 梧州市| 正宁县| 宁城县| 伊吾县| 广宗县| 英吉沙县| 波密县| 白水县| 南丰县| 乌什县| 静乐县| 大关县| 二连浩特市| 连州市| 石楼县| 连山| 土默特左旗| 桓仁| 佛坪县| 海南省| 麻城市| 衡阳市| 石城县| 阜新| 射洪县| 东台市|