dubbo集成springboot简单实例

Dubbo是什么?

dubbo是一款高性能,轻量级的开源java RPC框架。

其三大核心:

远程通讯,面向接口的远程方法调用

智能容错和负载均衡

服务的自动注册和发现

概念

dubbo集成springboot简单实例_第1张图片

服务提供者(Provider):提供服务的服务提供方,服务提供方在启东时,像注册中心注册自身服务。

服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供地址列表中,根据软件负载均衡算法,选一台提供者进行调用,如果调用失败,在选取另一台调用 。

注册中心(Register):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者 。

监控中心(Monitor):服务消费者和提供者,在内存只累计调用次数和调用时间,定义每分钟发送一次统计数据到监控中心。

安装dubbo监控

dubbo本身不是一个服务软件,其自身为一个jar包。作用为帮你的java程序连接到zookeeper,利用zookeeper实现消费,提供服务 。

所需要的工具和解压如图

dubbo集成springboot简单实例_第2张图片

dubbo集成springboot简单实例_第3张图片

dubbo集成springboot简单实例_第4张图片

配置文件的内容

dubbo集成springboot简单实例_第5张图片

注意:用zookeeper作为注册中心时,要提前将zookeeper启动!

运行

首先运行zookepper

dubbo集成springboot简单实例_第6张图片

在运行zookepper文件之前,复制配置文件,并将其改名。否则启动的时候会出现闪退的现象

dubbo集成springboot简单实例_第7张图片

具体的原因是启动的时候寻找的是zoo.cfg文件,而不是zoo_simple.cfg。在找不到文件的时候就会闪退 。

启动

dubbo集成springboot简单实例_第8张图片

根据自身环境,选择合适的运行方法。

运行成功后

dubbo集成springboot简单实例_第9张图片

运行dubbo

在zookeeper运行成功后,运行dubbo。

dubbo集成springboot简单实例_第10张图片

此时在cmd命令下运行jar包

dubbo集成springboot简单实例_第11张图片

成功的标志

dubbo集成springboot简单实例_第12张图片

验证登录

dubbo集成springboot简单实例_第13张图片

登录界面首页

dubbo集成springboot简单实例_第14张图片

注册中心的状态

dubbo集成springboot简单实例_第15张图片

Dubbo整合springboot (这才是正文啊啊啊啊)

项目 :如下图

dubbo集成springboot简单实例_第16张图片

其中,实体类和服务接口,被消费者和服务者依赖。

实体类和服务接口架构

dubbo集成springboot简单实例_第17张图片

pom.xml代码


  4.0.0
  com.bc
  spring-user-interface
  1.0
  
  
        1.18.8
  
  
    
            org.projectlombok
            lombok
            ${lombok.version}
            provided
    
  

domain包下的实体类代码

package com.bc.domain;

import java.io.Serializable;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable{
    private static final long serialVersionUID = 1L;
    private Integer id ;
    private String name ;
    private String address ;
}

service包下的接口代码

OrderService

package com.bc.service;

import java.util.List;

import com.bc.domain.User;

public interface OrderService {
    public List initOrder(Integer id) ;
}

UserService

package com.bc.service;

import java.util.List;

import com.bc.domain.User;

public interface UserService {
    public List getUserList();
}
服务者相关结构和代码

dubbo集成springboot简单实例_第18张图片

pom.xml代码



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.9.RELEASE
         
    
    com.bc
    springboot-service-provider
    1.0
    springboot-service-provider
    springboot与dubbo的集成服务提供者(白茶弟弟)

    
        1.8
        3.1.1
        2.6.5
    

    
        
            com.bc
            spring-user-interface
            1.0
        
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
          
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.2.1.RELEASE
           
         
            com.alibaba
            dubbo
            ${dubbo.version}
         
         
            io.netty
            netty-all
         
         
         
            org.apache.curator
            curator-framework
            2.12.0
         
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


UserServiceImpl代码

package com.bc.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.dubbo.config.annotation.Service;
import com.bc.domain.User;
import com.bc.service.UserService;
//注意此时的service为dubbo的注解
@Service
public class UserServiceImpl implements UserService{
    
    public static List user=new ArrayList<>();
    static {
        user.add(new User(1,"白菜弟弟","安徽"));
    }
    @Override
    public List getUserList() {
        // TODO Auto-generated method stub
        return user;
    }
    
}

启动类代码

package com.bc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo //注意需要这个注解
public class SpringbootServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootServiceProviderApplication.class, args);
        System.out.println("服务者启动成功");
    }
}

配置文件代码application.Properties


#Dubbo config
dubbo.application.name=springboot-service-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

至此服务提供完成,运行启动类查看

dubbo集成springboot简单实例_第19张图片

浏览器查看

dubbo集成springboot简单实例_第20张图片

消费者相关部分和代码

dubbo集成springboot简单实例_第21张图片

代码

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.9.RELEASE
         
    
    com.bc
    springboot-service-consumer
    1.0
    springboot-service-consumer
    springboot与dubbo的集成服务消费者(白茶弟弟)

    
        1.8
        3.1.1
        2.6.5
    

    
        
            com.bc
            spring-user-interface
            1.0
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
         
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.2.1.RELEASE
           
         
            com.alibaba
            dubbo
            ${dubbo.version}
         
         
            io.netty
            netty-all
         
         
         
            org.apache.curator
            curator-framework
            2.12.0
         
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


配置文件代码application.Properties

#Dubbo 
dubbo.application.name=springboot-service-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181

server.port=8888

OrderServiceImpl实现类

package com.bc.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.bc.domain.User;

@Service//此时的这个是spring下的
public class OrderServiceImpl implements OrderService {
    
    @Reference  //这个是dubbo下的
    private UserService userService ;
    @Override
    public List initOrder(Integer id) {
        // TODO Auto-generated method stub
        return userService.getUserList();
    }
    
}

Controller

package com.bc.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.bc.domain.User;
import com.bc.service.OrderService;


@RestController
public class CusController {
    
    @Autowired
    private OrderService orderSrvice ;
    
    @RequestMapping("getUser")
    public List getUser(){
        return this.orderSrvice.initOrder(1);
    }
}

启动类

package com.bc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo
public class SpringbootServiceConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootServiceConsumerApplication.class, args);
        System.out.println("消费者启动成功");
    }
}

以上就是代码部分

启动消费者

dubbo集成springboot简单实例_第22张图片

浏览器查看

dubbo集成springboot简单实例_第23张图片

dubbo集成springboot简单实例_第24张图片

至此说明已完成。

你可能感兴趣的:(dubbo集成springboot简单实例)