Apache Dubbo的基本使用


 

 

 

 

 

 

 

 

 

 

 

 

 

節點 角色說明
Provid 暴露服務的服務提供方
Consumer 調用遠程服務的服務消費方
Registry 服務注冊與發現的注冊中心
Monitor 統計服務的調用次數和調用時間的監控中心
Container  服務運行容器

 

 Dubbo涉及版本 2.7.7 ~ 2.7.8


 

 Dubbo怎么去使用


 

代碼實例地址:

https://gitee.com/public2586/dubbo-client-sample  (客戶端)

https://gitee.com/public2586/dubbo-server-sample  (服務端)

 

發布一個dubbo服

發布服務之后,提供一個協議url地址

http:// 服務器的IP:容器的端口/ mapping

dubbo://192.168.1.104:20880/com.bx.dubbo.server.ILoginService

dubbo支持的注冊中心

  • consu
  • zookeeper
  • eureka
  • redis
  • etcd
  • nacos
  • ....

Dubbo Spring Cloud


創建一個項目:

代碼實例地址:https://gitee.com/public2586/spring-cloud-dubbo-example

創建一個spring-cloud-dubbo-example的maven工程,分別添加三個模塊

  1. spring-cloud-dubbo-sample-api
  2. spring-cloud-dubbo-sample-provider
  3. spring-cloud-dubbo-sample-consumer

其中后面兩個模塊都是spring boot的應用

修改 spring-cloud-dubbo-sample-provider 這個模塊中

  • 將dependencyManagement部分的依賴移動到parent pom.xml
  • 修改spring-cloud-dubbo-sample-provider中的pom.xml,增加parent模塊的依賴
<parent>
<groupId>com.bx.dubbo</groupId>
<artifactId>spring-cloud-dubbo-example</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

添加maven依賴

 <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.bx.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>spring-cloud-dubbo-sample-api</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

 

定義服務接口


 

在spring-boot-dubbo-sample-api模塊中,定義接口

public interface IHelloService {
String sayHello();
}

實現服務


在spring-boot-dubbo-sample-provider中,實現IHelloService接口

public class HelloServiceImpl implements IHelloService{
@Override
public String sayHello() {
return "Hello GuPao";
}
}

 

添加 @EnableDiscoveryClient 注解

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

 

配置dubbo服務發布


在服務實現類中添加 @Service 注解

 

@Service
public class HelloServiceImpl implements IHelloService{
@Override
    public String sayHello() {
    return "Hello GuPao";
    }
}

 

 

Dubbo Spring Boot


基於spring boot集成Dubbo方式

代碼實例地址:https://gitee.com/public2586/spring-boot-dubbo-example

創建一個spring-boot-dubbo-example的maven工程,分別添加三個模塊

  1. spring-boot-dubbo-sample-api[maven]
  2. spring-boot-dubbo-sample-provider[spring boot]
  3. spring-boot-dubbo-sample-consumer[spring boot]

添加jar包依賴

從2.7開始,dubbo的版本和dubbo-spring-boot的版本是保持一致的。

<dependency>
 <groupId>org.apache.dubbo</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
  <version>2.7.7</version>
</dependency>
<dependency>
 <groupId>com.alibaba.nacos</groupId>
 <artifactId>nacos-client</artifactId>
 <version>1.2.1</version>
 </dependency>

添加服務以及發布

@DubboService
public class SayHelloServiceImpl implements ISayHelloService {

    @Override
    public String sayHello(String msg) {
        return "[version1.0]Hello,"+msg+"";
    }
}

 

spring.application.name=spring-boot-dubbo-sample-provider
dubbo.registry.address=nacos://172.16.12.148:8848
dubbo.scan.basepackages=com.bx.springboot.dubbo.springbootdubbosampleprovider.service
dubbo.protocol.name
=dubbo
dubbo.protocol.port
=-1

編寫服務引用代碼


添加jar包依賴

<dependency>
       <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
       <groupId>com.bx.springboot.dubbo</groupId>
       <version>1.0-SNAPSHOT</version>
      <artifactId>spring-boot-dubbo-sample-api</artifactId>
</dependency>
<dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>2.7.7</version>
        </dependency>
<dependency>
   <groupId>com.alibaba.nacos</groupId>
   <artifactId>nacos-client</artifactId>
   <version>1.2.1</version>
</dependency>

添加web測試

    @DubboReference
    ISayHelloService sayHelloService;

    @GetMapping("/say")
    public String say(){
        return sayHelloService.sayHello("sayHello");
    }

 

 現在人工智能非常火爆,很多朋友都想學,但是一般的教程都是為博碩生准備的,太難看懂了。最近發現了一個非常適合小白入門的教程,不僅通俗易懂而且還很風趣幽默。所以忍不住分享一下給大家

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM