基于dubbo 的分布式框架

1、pom.xml中添加dubbo相关的依赖

         
	        UTF-8
	        4.2.0.RELEASE
	        2.6.1
  	     
           
                com.github.sgroschupf
                zkclient
                0.1
                
                    
                        org.slf4j
                        slf4j-log4j12
                    
                    
                        log4j
                        log4j
                    
                    
                        org.apache.zookeeper
                        zookeeper
                    
                
            


            
            
                org.apache.curator
                curator-framework
                4.0.1
            

            
                org.apache.zookeeper
                zookeeper
                3.4.6
                
                    
                        org.slf4j
                        slf4j-log4j12
                    
                    
                        log4j
                        log4j
                    
                
            

            
            
                com.alibaba
                dubbo
                ${dubbo.version}
                
                    
                        log4j
                        log4j
                    
                    
                        commons-logging
                        commons-logging
                    
                
            
            
		        org.slf4j
		        slf4j-log4j12
		        1.7.12
	        
	        
		        log4j
		        log4j
		        1.2.17
	        
            
		        commons-logging
		        commons-logging
	   	        1.1.3
	        


 2、dubbo服务的注册中心zookeeper的安装和启动

下载地址:http://mirrors.cnnic.cn/apache/zookeeper

参考博文:https://blog.csdn.net/tlk20071/article/details/52028945

3、对原有的Maven项目进行重构

重构之后的目录结构如下:

基于dubbo 的分布式框架_第1张图片

大体上可以拆分为API,BOOT,SERVICE,WEB等几个模块

具体为什么要分模块,以及各个模块的具体作用,可以参考博文:

https://crossoverjie.top/2017/03/04/SSM10/

4、对外提供服务

基于SSM-demo的项目来说,

首先第一步:

在SSM-DEMO-API模块中定义一个接口,例如:

package com.bsk.api;

import com.bsk.dto.UserInfoReq;
import com.bsk.dto.UserInfoRsp;


public interface UserInfoApi {

    /**
     * 获取用户信息
     *
     * @param userInfoReq
     * @return
     * @throws Exception
     */
    UserInfoRsp getUserInfo(UserInfoReq userInfoReq) throws Exception;
}

第二步:在SSM-DEMO-SERVICE模块中实现该接口

package com.bsk.api.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.bsk.api.UserInfoApi;
import com.bsk.api.dubbo.entity.T_user;
import com.bsk.api.dubbo.service.T_UserService;
import com.bsk.api.dubbo.util.CommonUtil;
import com.bsk.dto.UserInfoReq;
import com.bsk.dto.UserInfoRsp;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


@Service
public class UserInfoApiImpl implements UserInfoApi {
    private static Logger logger = LoggerFactory.getLogger(UserInfoApiImpl.class);

    @Autowired
    private T_UserService t_userService ;

    /**
     * 获取用户信息
     *
     * @param userInfoReq
     * @return
     * @throws Exception
     */
    @Override
    public UserInfoRsp getUserInfo(UserInfoReq userInfoReq) throws Exception {
        logger.info("用户查询Id="+userInfoReq.getId());

        //返回对象
        UserInfoRsp userInfoRsp = new UserInfoRsp() ;
        T_user t_user = t_userService.selectByPrimaryKey(userInfoReq.getId()) ;

        //构建
        buildUserInfoRsp(userInfoRsp,t_user) ;

        return userInfoRsp;
    }


    /**
     * 构建返回
     * @param userInfoRsp
     * @param t_user
     */
    private void buildUserInfoRsp(UserInfoRsp userInfoRsp, T_user t_user) {
        if (t_user ==  null){
            t_user = new T_user() ;
        }
        CommonUtil.setLogValueModelToModel(t_user,userInfoRsp);
    }
}

 其中值得注意的一点是这里使用的dubbo框架所提供的@service注解。该注解的作用是声明需要暴露的服务接口。

第三步:在项目中添加几个dubbo相关的配置文件

目录结构如下:

基于dubbo 的分布式框架_第2张图片

其中,spring-dubbo-config.xml配置文件




	

	

	

	

	

	

这是配置我们服务注册的zk地址,端口号,以及服务名称、超时时间等配置信息。

 

spring-dubbo-consumer.xml




    

这里是服务消费者配置项,表明我们需要依赖的其他应用。

比如在这依赖注入了com.bsk.api.UserInfoApi这个应用,。

 

spring-dubbo-provider.xml




	

这里是服务提供者配置项,配置dubbo扫描注解包的位置,一般配置到接口实现包即可。

 

5、安装管理控制台

安装管理控制台后,就可以看到我们有多少服务、调用情况是怎么样等作用。

具体的安装过程,参考博文:

https://blog.csdn.net/noob_hen/article/details/81200143

需要注意一点的是:
需要将其中的dubbo.properties的zk地址修改为自己的服务器的IP地址,

如果Tomcat启动的服务比较多的情况下,建议自行修改端口号。

基于dubbo 的分布式框架_第3张图片

我这里修改了端口号为8088

其中我们可以看到有三个服务以及注册上去了,但是有两个没有消费者,还有一个状态正常,表示有消费者对该服务进行了消费。

 

注意:项目启动顺序,首先启动zookeeper客户端进程,然后启动服务提供者的功能模块,再次启动服务消费者的功能模块,最后启动dubbo-admin管理控制台程序对我们所发布的服务进行管理。

 

参考博文:https://crossoverjie.top/2017/04/07/SSM11/

 

 

你可能感兴趣的:(Dubbo,Zookeeper)