0
点赞
收藏
分享

微信扫一扫

Spring Dubbo 高效的RPC框架


Spring Dubbo入门实例

  • 创建父项目
  • 1. 引入依赖
  • 创建公共模块
  • 1. 把接口写在公共模块,方便提供端实现
  • 创建服务提供端
  • 1. 引入依赖
  • 2. 创建配置文件
  • 3. 启动类
  • 4. 创建接口实现类
  • 创建服务消费端
  • 1. 引入依赖
  • 2. 创建配置文件
  • 3. 启动类
  • 4. 创建接口和实现类
  • 注意事项


依赖环境:


JDK、Web环境:Tomcat、Maven、Zookeeper服务发现


源码:

创建父项目

Spring Dubbo 高效的RPC框架_java

1. 引入依赖

<!-- 父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

创建公共模块

Spring Dubbo 高效的RPC框架_zookeeper_02

1. 把接口写在公共模块,方便提供端实现

因为在服务消费模块要引入接口来调提供端的实现,所以把接口放再公共模块

Spring Dubbo 高效的RPC框架_ci_03

创建服务提供端

Spring Dubbo 高效的RPC框架_ci_04

1. 引入依赖

<!-- 引入dubbo -->
        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端端 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>




    <!-- spring-cloud版本 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2. 创建配置文件

dubbo:
  application:
    name: provider-server
  registry:   #注册中心  zookeeper
    address: 127.0.0.1:2181
    protocol: zookeeper
  protocol:   #dubbo的内部通信配置
    name: dubbo
    port: 20880
  scan:
    base-packages: com.zb.service.impl
spring: # 数据库连接
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop_order?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: ok
mybatis:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    auto-mapping-behavior: full

3. 启动类

@EnableDubbo // 开始dubbo通信

package com.ddz;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;

@SpringBootApplication
@EnableDubbo // 开始dubbo通信
@EnableHystrix // 熔断
public class MyProvider {
    public static void main(String[] args) {
        SpringApplication.run(MyProvider.class, args);
    }
}

4. 创建接口实现类

Spring Dubbo 高效的RPC框架_dubbo_05


Spring Dubbo 高效的RPC框架_java_06

创建服务消费端

Spring Dubbo 高效的RPC框架_dubbo_07

1. 引入依赖

<!-- 引入dubbo -->
        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端端 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>



    <!-- spring-cloud版本 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2. 创建配置文件

server:
  port: 9090
dubbo:
  application:
    name: consumer-server
  registry:
    address: 127.0.0.1:2181
    protocol: zookeeper
  scan:
    base-packages: com.ddz.service.impl
  consumer:
    check: false # 全局都不检查 服务提供端
    timeout: 2000 # 全局服务调用超时时间 2s
    retries: 5 # 全局服务超时 重试次数 --------------------注意幂等性问题

3. 启动类

@EnableDubbo

package com.ddz;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;

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

4. 创建接口和实现类

Spring Dubbo 高效的RPC框架_spring_08


Spring Dubbo 高效的RPC框架_zookeeper_09

注意事项

  1. 引入连接数据库的依赖,同时需要引入springcloud的版本依赖
  2. 在每个模块启动类加上注解
  3. 在服务提供端 的实现类上加的注解是 alibaba的
  4. 在服务消费端 注入接口时 加上 @Reference 注解 是alibaba的


举报

相关推荐

0 条评论