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
文章图片

2. 设计架构 SpringBoot整合RPC框架Dubbo
文章图片

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 依赖
com.alibaba.spring.boot dubbo-spring-boot-starter 2.0.0 com.github.sgroschupf zkclient 0.1

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 tianqingbo@tianqb.cn * @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 依赖
com.github.sgroschupf zkclient 0.1 com.alibaba.spring.boot dubbo-spring-boot-starter 2.0.0 cn.tianqb producer 0.0.1-SNAPSHOT

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 启动服务 【SpringBoot整合RPC框架Dubbo】将提供服务和消费服务的应用启动即可!
3.4.6 效果(restful风格) SpringBoot整合RPC框架Dubbo
文章图片

4. Dubbo Dobbo的官方文档讲解的也是非常的细致,这里只说明部分内容,官方地址请点击
4.1 配置覆盖关系 原则:
  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。
    例如超时timeout超时配置,方法级别的配置优先级最高,服务级别的最低,最终针对此方法的超时时间为1000
不写了,官方文档已经很详细了,总感觉像是在搬内容一样,因为好多配置是体现在代码中的,只要雏形搭建好了,很多配置自己看看文档自然也就会了!

    推荐阅读