SpringBoot整合RPC框架Dubbo

目录

    • 1. 什么是Dubbo
    • 2. 设计架构
        • 2.1 角色
            • 2.1.1 提供者
            • 2.1.1 消费者
            • 2.1.1 注册中心
            • 2.1.1 监控中心
            • 2.1.1 容器
    • 3. 创建应用(maven + springboot + dubbo)
        • 3.1 安裝zookeeper
        • 3.2 依赖
        • 3.3 提供服务应用
            • 3.3.1 配置文件
            • 3.3.2 实现接口
        • 3.4 消费服务应用
            • 3.4.1 依赖
            • 3.4.2 配置
            • 3.4.3 服务调用
            • 3.4.5 启动服务
            • 3.4.6 效果(restful风格)
    • 4. Dubbo
        • 4.1 配置覆盖关系

1. 什么是Dubbo

Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Dobbo本身阿里开源的RPC框架,现由Apache进行维护。
官方网站
SpringBoot整合RPC框架Dubbo_第1张图片

2. 设计架构

SpringBoot整合RPC框架Dubbo_第2张图片

2.1 角色

2.1.1 提供者

暴露服务的服务提供方,将自己提供的服务注册到注册中心,供消费者进行订阅

2.1.1 消费者

调用远程服务的服务消费方

2.1.1 注册中心

服务注册与发现的注册中心,官方推荐使用Zookeeper(可以采用其他工具作为注册中心)

2.1.1 监控中心

统计服务的调用次数和调用时间的监控中心

2.1.1 容器

服务运行容器,负责管理提供远程服务的对象

3. 创建应用(maven + springboot + dubbo)

注意:记得在启动类上添加@EnableDubboConfiguration注解

3.1 安裝zookeeper

官网下载,解压即用

3.2 依赖

<dependency>
    <groupId>com.alibaba.spring.bootgroupId>
    <artifactId>dubbo-spring-boot-starterartifactId>
    <version>2.0.0version>
dependency>
<dependency>
    <groupId>com.github.sgroschupfgroupId>
    <artifactId>zkclientartifactId>
    <version>0.1version>
dependency>

3.3 提供服务应用

3.3.1 配置文件
server.port=8080
spring.dubbo.application.name=producer
#开启Dubbo服务
spring.dubbo.server=true
#注册中心地址
spring.dubbo.registry=zookeeper://127.0.0.1:2181
#通信端口
spring.dubbo.protocol.port=20880
#通信协议
spring.dubbo.protocol.name=dubbo
3.3.2 实现接口
package cn.tianqb.producer.service;

import cn.tianqb.consumer_interface.service.StudentService;
import cn.tianqb.pojo.Student;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

/**
 * @Description:
 * @Author tianqb
 * @Mail [email protected]
 * @Date 2020/7/11 14:51
 * @Version v1.0
 */
// 避免和Dubbo的造成歧义,使用Spring的Component注解代替@Service
@Component 
// 注意@Service的包 import com.alibaba.dubbo.config.annotation.Service;
@Service(interfaceClass = StudentService.class, version = "0.0.1", timeout = 5000, retries = 1)
public class StudentServiceImpl implements StudentService {

    @Override
    public Student findStudentById(Integer id){
        return new Student(id, "张三", 1);
    }

}
public interface StudentService {
    public Student findStudentById(Integer id);
}

3.4 消费服务应用

3.4.1 依赖
<dependency>
    <groupId>com.github.sgroschupfgroupId>
    <artifactId>zkclientartifactId>
    <version>0.1version>
dependency>
<dependency>
    <groupId>com.alibaba.spring.bootgroupId>
    <artifactId>dubbo-spring-boot-starterartifactId>
    <version>2.0.0version>
dependency>


<dependency>
    <groupId>cn.tianqbgroupId>
    <artifactId>producerartifactId>
    <version>0.0.1-SNAPSHOTversion>
dependency>
3.4.2 配置
server.port=8081
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#启动时检查,不需要服务提供者处于启动状态
#若不检查,则报错,项目无法启动
#非必须,默认true
spring.dubbo.consumer.check=false
3.4.3 服务调用
@RestController
@RequestMapping("/student")
public class StudentController {
	// 用在消费端,表明使用的是服务端的什么服务
    @Reference(version = "0.0.1")
    private StudentService studentService;

    @GetMapping("/{id}")
    public Student getStudent(@PathVariable Integer id){
        return studentService.findStudentById(id);
    }

}
3.4.5 启动服务

将提供服务和消费服务的应用启动即可!

3.4.6 效果(restful风格)

SpringBoot整合RPC框架Dubbo_第3张图片

4. Dubbo

Dobbo的官方文档讲解的也是非常的细致,这里只说明部分内容,官方地址请点击

4.1 配置覆盖关系

原则:

  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。
    例如超时timeout超时配置,方法级别的配置优先级最高,服务级别的最低,最终针对此方法的超时时间为1000

不写了,官方文档已经很详细了,总感觉像是在搬内容一样,因为好多配置是体现在代码中的,只要雏形搭建好了,很多配置自己看看文档自然也就会了!

你可能感兴趣的:(dubbo)