spring-boot整合dubbo

1. dubbo简介

Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。

其中RPC(remote procedure call)为远程过程调用,PRC不是指一个具体的技术,而是值整个网络的调用过程,例如,服务器A和B,分别部署了一个应用,那么A服务器的应用肯定不能直接调用B服务器的应用,所以通过网络来表达调用的语义和传达调用的数据。Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。这里记录一下spring-boot整合dubbo的过程,方便日后参考。

2. spring-boot整合Dubbo

2.1 安装服务注册中心zookeeper

zookeeper下载地址:http://archive.apache.org/dist/zookeeper/

这里安装3.6.0版本,下载得到名为apache-zookeeper-3.6.0-bin.tar.gz的压缩文件,不能下载apache-zookeeper-3.6.0.tar.gz,因为官网上有两个tar.gz文件,从版本3.5.5开始,带有bin名称的包才是我们想要的下载,可以直接使用的,里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。下载完成后将该文件上传到Linux系统,这里使用linux虚拟机进行安装。

安装zookeeper首先要保证linux系统已经安装jdk,jdk安装这里略。

  1. 将压缩包解压至根目录下的usr文件夹,解压命令:
tar zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /usr/
  1. 进入apache-zookeeper-3.6.0目录
cd /usr/apache-zookeeper-3.6.0-bin/
  1. 创建data目录

    mkdir data
    
    
  2. 进入conf目录,修改配置文件

    cd conf/
    # 将zoo_sample.cfg文件重命令为zoo.cfg
    mv zoo_sample.cfg zoo.cfg
    # 编辑zoo.cfg
    vim zoo.cfg
    # 修改data属性
    dataDir = /usr/apache-zookeeper-3.6.0-bin/data
    # wq保存退出vim
    
  3. 启动zookeeper

# 进入Zookeeper的bin目录,启动服务
cd ../bin
./zkServer.sh start
  1. zookeeper的其他常用命令如下:

    # 停止服务命令 
    ./zkServer.sh stop
    # 查看服务状态: 
    ./zkServer.sh status
    # 客户端连接
    ./zkCli.sh
    
    

2.2 创建服务提供者和消费者

首先创建创建服务提供者和消费者的spring-boot工程,并分别为他们添加dubbo和zookeeper依赖

		<dependency>
            <groupId>com.gitee.reger</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.7</version>
        </dependency>
  1. 服务提供者实现服务方法:

    package com.example.provider.service.impl;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import org.example.service.TestService;
    
    // 此处service注解必须是dubbo下的service注解
    @Service
    public class TestServiceImpl implements TestService {
        @Override
        public String test01(String param) {
            return "param=" + param + "当前端口: 8081";
        }
    }
    
  2. 服务提供者配置(yml):

server:
  port: 8081

spring:
  dubbo:
    application:
      name: service-provider
    base-package: com.example.service # dubbo服务发布者所在的包
    registry:
      address: 192.168.12.128 # zookeeper注册中心的地址(此处为虚拟机地址)
      port: 2181       # zookeeper注册中心的端口
      protocol: zookeeper
      register: true
    protocol:
      name: dubbo
      port: 20880
      accesslog: true
    provider:
      retries: 1
      delay: -1

  1. 服务提供者启动类加@DubboComponentScan注解
@SpringBootApplication
@DubboComponentScan
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

}

  1. 消费者使用服务方法
package com.example.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import org.example.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("test")
public class TestController {
    // 此处要用Reference注解,不能使用Autowired
    @Reference
    private TestService testService;
    
    @GetMapping("get")
    public String test01(String param){
        String res = testService.test01(param);
        System.out.println(res);
        return res;
    }
}

  1. 消费者配置(yml):

    server:
      port: 8082
    spring:
      dubbo:
        application:
          name: service-consumer
        base-package: com.example.service   # dubbo服务调用者所在的包
        registry:
          address: 192.168.12.128  # zookeeper注册中心的地址(此处为虚拟机地址)
          port: 2181              # zookeeper注册中心的端口
          protocol: zookeeper
          subscribe: true
        protocol:
          name: dubbo
          host: 192.168.12.128
        consumer:
          timeout: 1000
          check: false  # 服务启动时检查被调用服务是否可用
          retries: 2    # 服务调用重试次数
    
    
  2. 分别启动提供者和消费者进行测试

    在这里插入图片描述

至此,spring-boot整合dubbo大功告成

3. Dubbo管理控制台

我们在开发时,需要知道Zookeeper注册中心都注册了哪些服务,有哪些消费者来消费这些服务。我们可以通过部署一个管理中心来实现。

3.1 从git 导入dubbo-admin

部署dubbo-admin的参考地址:Dubbo Admin Introductions | Apache Dubbo

git地址: https://github.com/apache/dubbo-admin.git

因为zookeeper注册服务部署在了Linu虚拟机中,所以为了方便dubbo管理控制台也部署在Linux系统,如果不部署在虚拟机,需要修改配置文件中的zookeeper注册地址。

新版本的dubbo管理控制台采用前后端分离部署。

先从git克隆源码并进入dubbo-admin目录:

git clone https://github.com/apache/dubbo-admin.git
cd dubbo-admin
  1. 前端部署

    cd dubbo-admin-ui 
    npm install 
    npm run dev 
    
  2. 后端部署

    # 进入dubbo-admin-server目录
    cd dubbo-admin-server
    mvn clean package 
    cd target
    java -jar dubbo-admin-server-0.3.0.jar
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值