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");
    }

 

 现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家

 

posted @ 2020-08-05 10:34  汪强胜  Views(1651)  Comments(0Edit  收藏  举报