栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

spring-boot整合dubbo

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依赖

		
            com.gitee.reger
            spring-boot-starter-dubbo
            1.1.2
        
        
            org.apache.zookeeper
            zookeeper
            3.4.7
        
  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管理控制台采用前后端分离部署,部署前要求linux系统已经安装git,maven和vue环境,git,maven和vue环境的安装此处略。

先从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
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号