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

Dubbo框架

Dubbo框架

目录
  • Dubbo框架介绍
  • Dubbo使用——直连方式
    • 1:创建服务提供者
    • 2:将服务注册到注册中心
    • 3:创建消费者订阅注册中心的服务
    • 4:调用服务方法
  • Dubbo使用——注册中心
    • 1:注册中心安装zookeeper
    • 2:创建接口(interface)项目
    • 3:创建提供服务者
    • 4:创建消费者

Dubbo框架介绍

Dubbo框架是一个高性能的RPC框架,解决了分布式中的调用问题
服务器调用另一个服务器的业务服务
因Dubbo使用的Serializable接口序列化,使用的是二进制流(效率最高)


三大核心能力:
1:面向接口的远程方法调用
2:智能容错和负载均衡
3:服务自动注册和发现
官网:Dubbo

基本架构

Dubbo步骤:
1:创建服务提供者(Provider)- (Container)spring容器
2:注册到注册中心(Register)
3:消费者(Consumer)去注册中心订阅服务
4:调用服务(invoke)
5:监控中心(Monitor)监控运行状态

dubbo支持的协议:
dubbo,hessian,rmi,http,webservice,thrift,memcached,redis
dubbo协议默认端口:20880

Dubbo使用——直连方式 1:创建服务提供者

创建maven项目

加入依赖

  
	
    
      junit
      junit
      4.11
      test
    
	
    
      org.springframework
      spring-context
      5.3.12
    
	
    
      org.springframework
      spring-webmvc
      5.3.12
    
	
    
      com.alibaba
      dubbo
      2.6.2
    

  

创建服务

User类
注:需要序列化,实现接口Serializable

package com.dubbo.domain;

public class User implements Serializable{
    private Integer id;
    private String name;
    public User() {}
    public Integer getId() {return id;}
    public void setId(Integer id) {this.id = id;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
}

UserService接口

package com.dubbo.service;

import com.dubbo.domain.User;

public interface UserService {
    User queryUserById(Integer id);
}

实现类

package com.dubbo.service.impl;

import com.dubbo.domain.User;
import com.dubbo.service.UserService;

public class UserServiceImpl implements UserService {
    @Override
    public User queryUserById(Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("张三");
        return user;
    }
}
2:将服务注册到注册中心




    
    

    
    

    
    

    
    


配置监听器




    
        contextConfigLocation
        classpath:spring-dubbo.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    

3:创建消费者订阅注册中心的服务

创建消费者的maven项目

先将提供服务者的maven项目打包部署到本地仓库
记得要将pom.xml文件内修改


打包完修改回

加入消费者项目的依赖

 

    
      junit
      junit
      4.11
      test
    

    
      org.springframework
      spring-context
      5.3.12
    

    
      org.springframework
      spring-webmvc
      5.3.12
    

    
      com.alibaba
      dubbo
      2.6.2
    
	
    
      com.dubbo
      java-dubbo-provider
      1.0-SNAPSHOT
    
    
  

创建控制器Controller

消费者订阅注册中心的服务

spring-dubbo




    
    

    
    

spring-mvc




    
    

    
    


    
        
        
    
    

4:调用服务方法
@Controller
public class UserController {

    @Resource
    private UserService userService;

    @RequestMapping(value = "/user.do")
    public String user(Model model,Integer id){
        model.addAttribute("user",userService.queryUserById(id));
        return "user";
    }
}

设置跳转页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


用户详情

用户标识:${user.id}
用户名称:${user.name}

启动两个网站的tomcat实现:消费者服务器调用提供服务者服务器的service服务

Dubbo使用——注册中心

zookeeper——注册中心
作用:对提供服务者的服务进行管理
通过版本号对一个接口服务对应多个实现类的管理

1:注册中心安装zookeeper

安装管网:zookeeper

在conf目录下复制粘贴一份zoo_sample.cfg
将新的zoo_sample.cfg改名为zoo.cfg
进入zoo文件内在clientPort=2181下一行添加admin.serverPort=8888
启动服务:

2:创建接口(interface)项目


User

package com.dubbo.domain;
import java.io.Serializable;
public class User implements Serializable {
    private Integer id;
    private String name;
    public User() {}
    public Integer getId() {return id;}
    public void setId(Integer id) {this.id = id;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
}

UserService

package com.dubbo.service;
import com.dubbo.domain.User;
public interface UserService {
    User queryUserById(Integer id);
}
3:创建提供服务者


UserServiceImpl

package com.dubbo.service.impl;
import com.dubbo.domain.User;
import com.dubbo.service.UserService;
public class UserServiceImpl implements UserService {
    @Override
    public User queryUserById(Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("张三");
        return user;
    }
}

UserServiceImpl2

package com.dubbo.service.impl;
import com.dubbo.domain.User;
import com.dubbo.service.UserService;
public class UserServiceImpl2 implements UserService {
    @Override
    public User queryUserById(Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("李四");
        return user;
    }
}

依赖



    
      junit
      junit
      4.11
      test
    

    
      org.springframework
      spring-context
      5.3.12
    

    
      org.springframework
      spring-webmvc
      5.3.12
    

    
      com.alibaba
      dubbo
      2.6.2
    

    
      com.dubbo
      java-dubbo-interface
      1.0-SNAPSHOT
    
	
	
      org.apache.curator
      curator-framework
      4.1.0
    

  




    

    

    
    

    
    
    

    
    


注册监听器web.xml




    
        contextConfigLocation
        classpath:spring-dubbo.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    

4:创建消费者


依赖



    
      junit
      junit
      4.11
      test
    

    
      org.springframework
      spring-context
      5.3.12
    

    
      org.springframework
      spring-webmvc
      5.3.12
    

    
      com.alibaba
      dubbo
      2.6.2
    

    
      com.dubbo
      java-dubbo-provider
      1.0-SNAPSHOT
    

    
      org.apache.curator
      curator-framework
      4.1.0
    

  

spring-dubbo




    

    
    

    

    


spring-mvc




    
    

    
    


    
        
        
    
    

调用业务服务方法

package com.dubbo.web;

import com.dubbo.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;

@Controller
public class UserController {

    @Resource
    private UserService userServiceImpl;

    @Resource
    private UserService userServiceImpl2;

    @RequestMapping(value = "/user.do")
    public String user(Model model,Integer id){
        model.addAttribute("user",userServiceImpl.queryUserById(id));
        model.addAttribute("user2",userServiceImpl2.queryUserById(id));
        return "user";
    }
}

展示页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


用户详情

用户标识:${user.id}
用户名称:${user.name}

用户详情2

用户标识:${user2.id}
用户名称:${user2.name}

启动步骤:
开启zookeeper服务然后陆续开启:interface——provider——consumer

结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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