Dubbo——使用Zookeeper注册中心实现Dubbo

1.写在前面

有关Zookeeper注册中心的相关内容,可以参考我的这篇博客:

https://blog.csdn.net/weixin_43823808/article/details/117339044


2.案例分析

这里使用注册中心仍然需要三个maven工程,第一个是maven java工程,后两个是maven web工程,创建步骤不再多说了。

Dubbo——使用Zookeeper注册中心实现Dubbo_第1张图片

Dubbo——使用Zookeeper注册中心实现Dubbo_第2张图片

Dubbo——使用Zookeeper注册中心实现Dubbo_第3张图片

2.1 第一个是maven java工程

这其中提供的是服务模型(实体Bean)、服务接口(对外提供的方法),这个工程不需要添加任何依赖。

package com.szh.dubbo.model;

import java.io.Serializable;

/**
 *
 */
public class User implements Serializable {

    private Integer id;
    private String username;

    //getter and setter
}
package com.szh.dubbo.service;

import com.szh.dubbo.model.User;

/**
 *
 */
public interface UserService {

    User queryUserById(Integer id,String username);

}

2.2 第二个是maven web工程

这个代表的是服务提供者,其中包含对第一个maven java工程中服务接口方法的实现。

package com.szh.dubbo.service.impl;

import com.szh.dubbo.model.User;
import com.szh.dubbo.service.UserService;

/**
 *
 */
public class UserServiceImpl implements UserService {

    @Override
    public User queryUserById(Integer id, String username) {
        User user=new User();
        user.setId(id);
        user.setUsername(username);
        return user;
    }
}

dubbo服务提供者的配置文件。之前我们使用的直连方式实现dubbo,所以地址端口号是 dubbo://localhost:20880。

现在使用了zookeeper注册中心,这个地址和端口号要做修改:zookeeper://localhost:2181。




    
    

    
    

    
    

    
    

    
    

由于在服务提供者中,需要加载之前服务接口的实现类,所以这里需要用到Spring的监听器,同时读取dubbo配置文件。




    
        contextConfigLocation
        classpath:dubbo-zk-userservice-provider.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    

pom文件中的相关依赖。

    
    
      org.springframework
      spring-context
      5.2.5.RELEASE
    

    
    
      org.springframework
      spring-webmvc
      5.2.5.RELEASE
    

    
    
      com.alibaba
      dubbo
      2.6.2
    

    
    
      com.szh.dubbo
      006-zk-interface
      1.0.0
    

    
    
      org.apache.curator
      curator-framework
      4.1.0
    

2.3 第三个是maven web工程

这个代表的是服务消费者,其中包含一个控制层方法的实现,去响应之前的服务接口。

package com.szh.dubbo.controller;

import com.szh.dubbo.model.User;
import com.szh.dubbo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 *
 */
@Controller
public class UserController {

    @Autowired
    private UserService userService;

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

然后是dubbo服务消费者的配置文件、Spring配置文件。




    
    

    
    

    
    




    
    

    
    

    
    
        
        
    

最后是web.xml和控制层方法对应的jsp页面。




    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:applicationContext.xml,classpath:dubbo-zk-consumer.xml
        
    
    
        DispatcherServlet
        /
    

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


    $


    

用户详情

用户编号:${user.id}
用户姓名:${user.username}

2.4 启动测试!!!

为后两个maven web工程配置各自的tomcat服务器(配置过程在这里就不多说了。。。)。

由于之前使用的是直连方式实现dubbo,所以配置完tomcat,先启动dubbo服务提供者的tomcat,再启动dubbo服务消费者的tomcat,直接去浏览器输入url就可以访问了。

现在使用了zookeepr注册中心,所以配置完tomcat之后,我们需要到zookeeper的根目录的bin目录下,找到zkServer.cmd先启动注册中心,然后启动dubbo服务提供者的tomcat,再启动dubbo服务消费者的tomcat,再到浏览器输入url就可以访问了。

Dubbo——使用Zookeeper注册中心实现Dubbo_第4张图片

Dubbo——使用Zookeeper注册中心实现Dubbo_第5张图片

 

你可能感兴趣的:(Dubbo)