【SpringBoot框架篇】9.dobbo入门实战

文章目录

  • 简介
  • 核心组件
  • 主要分为4个模块组成
  • 应用实战
    • 项目代码结构
    • 聚合工程
    • 通用api
    • 服务提供者
      • 引入依赖
      • 配置文件
      • 服务提供者代码逻辑
      • 修改启动类
      • 启动服务提供者
    • 服务消费者
      • 引入依赖
      • 配置文件
      • 服务消费者代码逻辑
      • 添加web接口用于测试
      • 修改启动类
      • 启动项目测试
    • dubbo控制台使用
      • 下载dubbo-admin
      • 修改配置文件
      • 启动dubbo-admin
  • 项目配套代码

简介

Dubbo是阿里开源的一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

核心组件

  • Remoting: 网络通信框架,实现了 sync-over-async 和request-response 消息机制.
  • RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
  • Registry: 服务目录框架用于服务的注册和服务事件发布和订阅

主要分为4个模块组成

  • Provider
    暴露服务方称之为服务提供者
  • Consumer
    调用远程服务方称之为服务消费者
  • Registry
    服务注册与发现的中心目录服务称之为服务注册中心
  • Monitor
    统计服务的调用次数和调用时间的日志服务称之为服务监控中心

应用实战

项目代码结构

【SpringBoot框架篇】9.dobbo入门实战_第1张图片

项目名 描述
dobbo-parent 聚合工程,统一管理版本号
consumer 服务消费者
common-api 通用接口api
dubbo-admin-master dobbo控制台及注册中心和监控中心。(本文章只讲控制台)
provider 服务提供者

聚合工程

修改dobbo-parent的依赖,common-api依赖需要common-api模块通过mvn install发布到本地仓库再引用

 
        1.8
        0.2.0
        1.0-SNAPSHOT
    
    
    
    
        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            ${springboot-dobbo.version}
        
        
        
            com.ljm.boot.dobbo
            common-api
            ${common-api.version}
        
    
    

通用api

common-api是一个定义通用的接口模块,
下面代码中定义了数据模型和服务提供者的接口

public class User  implements Serializable {
    private String userName;
    private String age;
    private String address;
	//省略get,set方法
}
 
/**
 * @Description   服务提供者接口
 **/
public interface UserService {
 
    User getUserInfo(Integer userId);
}

服务提供者

引入依赖

版本在dobbo-parent中指定,所以无需指定版本号

    
        
        
            com.ljm.dobbo
            common-api
        
        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
        
  

配置文件

dubbo:
  application:
    name: user-service-provider
  registry:
  #注册中心协议
    protocol: zookeeper
    #注册中心的地址
    address: localhost:2181
  protocol:
    name: dubbo
    port: 20881
  monitor:
  #指定注册中心也是监控中心
    protocol: registr

服务提供者代码逻辑

@Service//注解不是 springframework包的,是dubbo包下的
@Component
public class UserServiceImpl implements UserService {
    private  ArrayList<User> list=new ArrayList<>();
 
    /**
     * 制造假数据,实际环境应该重数据库获取
     */
    {
        User user=new User();
        user.setUserName("张三");
        user.setAge("18");
        user.setAddress("北京大兴");
        User user1=new User();
        user1.setUserName("李四");
        user1.setAge("19");
        user1.setAddress("北京大兴");
        User user2=new User();
        user2.setUserName("王五");
        user2.setAge("20");
        user2.setAddress("北京大兴");
        list.add(user);
        list.add(user1);
        list.add(user2);
    }
    @Override
    public User getUserInfo(Integer userId) {
        return list.get(userId);
    }
}

修改启动类

在启动类加上@EnableDubbo注解
在这里插入图片描述

启动服务提供者

因为注册中心和监控中心都用的zookeeper,所以先启动zookeeper
然后启动服务提供者,然道下图中的[Dubbo] Current Spring Boot Application is await… ,代表启动成功了.
在这里插入图片描述

服务消费者

引入依赖


        
        
            com.ljm.dobbo
            common-api
        
        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
        
  

配置文件

server:
  port: 8009
 
dubbo:
  application:
    name: order-service-consumer
  registry:
    #注册中心地址
    address: zookeeper://localhost:2181
  monitor:
    protocol: registry

服务消费者代码逻辑

通过@Reference注解引用远程服务

public interface OrderService {
    User InitOrder(Integer userId);
}

@Service //注解不是 springframework包的,是dubbo包下的
@Component
public class OrderServiceImpl implements OrderService {
 
    @Reference
    UserService userService;
 
    @Override
    public User InitOrder(Integer userId) {
        return userService.getUserInfo(userId);
    }
}

添加web接口用于测试

@RestController
public class WebController {

    @Autowired
    OrderService orderService;

    @GetMapping("/initOrder/{userId}")
    public User initOrder(@PathVariable Integer userId){
        return orderService.InitOrder(userId);
    }
}

修改启动类

在启动类加上@EnableDubbo注解
在这里插入图片描述

启动项目测试

访问 http://127.0.0.1:8009/initOrder/1,看到下面结果代表着RPC调用成功了.
在这里插入图片描述

dubbo控制台使用

下载dubbo-admin

链接:dubbo-admin下载

修改配置文件

server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
#root用户的密码
spring.root.password=root
#guest用户的密码
spring.guest.password=root
#配置注册中心地址
dubbo.registry.address=zookeeper://localhost:2181

启动dubbo-admin

【SpringBoot框架篇】9.dobbo入门实战_第2张图片
访问 http://localhost:7001/
输入用户名 root,密码root登录系统就可以看到下面的页面了
【SpringBoot框架篇】9.dobbo入门实战_第3张图片

项目配套代码

github地址
要是觉得我写的对你有点帮助的话,麻烦在github上帮我点 Star

【SpringBoot框架篇】其它文章如下,后续会继续更新。

  • 1.搭建第一个springboot项目
  • 2.Thymeleaf模板引擎实战
  • 3.优化代码,让代码更简洁高效
  • 4.集成jta-atomikos实现分布式事务
  • 5.分布式锁的实现方式
  • 6.docker部署,并挂载配置文件到宿主机上面
  • 7.项目发布到生产环境
  • 8.搭建自己的spring-boot-starter
  • 9.dobbo入门实战
  • 10.API接口限流实战
  • 11.Spring Data Jpa实战
  • 12.使用druid的monitor工具查看sql执行性能
  • 13.使用springboot admin对springboot应用进行监控
  • 14.mybatis-plus实战

你可能感兴趣的:(springBoot)