适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)相关的知识,希望对你有一定的参考价值。

本人也是才开始接触 阿里巴巴的开源分布式框架 dubbo,因为现在微服务框架 spring boot也非常的火,然后结合dubbo的官网搭建这个开发环境。

一、首先 zookeeper作为集群管理服务器,安装和配置在这里就不说了

 

划分为 4个项目

项目目录如下:

技术分享

4个项目的依赖关系是:common里面暂时存放的只有user一个实体类,后面陆续会加上其他的公共类,分页,验证等,这个项目不依赖其他的项目,其他3个项目都需要依赖它,所有这个项目需要先打包(相信做个maven项目的人应该都会-----如果对项目有所改动的话,需要先 maven clean,然后再maven install);

第二个需要打包的是 app项目,service和web项目都依赖它,然后再打包service项目,最后web项目。

hlq-commer-common 项目目录:

技术分享

 

 

hlq-commer-app 就是单独的一个service接口,因为只是搭建个环境,就只写了一个service和 一个方法,

技术分享

 

service 代码如下:(就是根据用户id获取一个用户的信息)

package com.commer.app.UserService;

import com.commer.app.entity.User;

public interface UserService {    

  //根据用户id获取用户信息  

  User selectByPrimaryKey(Integer id);

}

hlq-commer-service 这个项目作为dubbo的一个服务提供者,最重要的就是暴露服务,数据库的连接,mybatis的映射都在这

项目目录:

技术分享

App类作为dubbo的一个服务启动类(发布服务,连接数据库,指定映射文件),同时加载spring boot的配置文件,

主要代码:

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.ComponentScan.Filter;

import org.springframework.context.annotation.ImportResource;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.dubbo.config.annotation.Service;

@SpringBootApplication

@ComponentScan(basePackages = { "com.commer.app.service.impl" }, includeFilters = {   @Filter(classes = { Service.class}) })

@ImportResource(locations = { "classpath:dubboprovider.xml" })

@MapperScan("com.commer.app.mapper")

public class App {

   @Bean(initMethod = "init", destroyMethod = "close")

   @ConfigurationProperties(prefix = "spring.datasource")  

  public DataSource dataSource() {  

     return new DruidDataSource();

   }

   @Bean  

  public SqlSessionFactory sqlSessionFactoryBean() throws Exception {  

     PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();   

    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();   

    sqlSessionFactoryBean.setDataSource(dataSource());   

    sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:/mybatis-mapping/*Mapper.xml"));   

    return sqlSessionFactoryBean.getObject();

   }

 public static void main(String[] args) throws IOException {   

  SpringApplication.run(App.class, args);   

  System.out.println("服务运行中...");   

  System.in.read();

 }

 

userMapper类(dao 类)

@Component

public interface UserMapper {    

 int deleteByPrimaryKey(Long id);

    int insert(User record);

    int insertSelective(User record);

    //根据用户id获取用户信息   

   User selectByPrimaryKey(Integer id);

}

 

这里需要注意的地方就是 @Component这个注解(表示该类给扫描组件),如果不加这个注解的话,UserServiceImpl @Resource获取UserMapper Bean会是个空(这个是spring自己的一个扫描组件配置,可以自己去看下这方面的知识);

UserMapper.xml这里就不说了,不懂的同学可以去看看 mybatis的教程了解

 

然后先看 UserServiceImpl代码:

技术分享

主要注意红色标注的地方,之前dubbo提供者发布的时候一直失败,就是因为导入的是一个 spring自带的一个 @service注解,一直没注意这个地方,导致项目一直发布不了,因为作为一个dubbo服务提供者,启动时需要知道发布的服务是在哪,不使用dubbo提供的@service注解。就会出现上面的问题。

application.properties(主要配置数据库连接)

技术分享

然后重点是 dubbo服务提供者的配置文件

技术分享

 

 注册中心使用zookeeper,扫描所有的包并且发布。

 

最后就看 dubbo的一个服务消费者了,这里个人整合了 html 和jsp 

首先看 启动类 webStart:

技术分享

红色地方标注的是,启动的时候测试userservice有没有发布过来,成功的话会打印一个用户姓名,下面注释的部分用来配置拦截器和出现错误页面的一个处理方法。

然后贴上控制器类和几个测试的方法:

技术分享

 这里需要注意红色标注的地方,之前一直使用的是下面的一个注解,然后注入 UserService bean的时候一直null,很分解,看过别人的dubbo案例,好多都是使用了下面那种注解,问题不晓得在哪(个人还是个菜鸡)

 

下面MvcConfiguration类主要让spring boot整合jsp,官方貌似提示  spring boot是不支持jsp的需要自己去整合。

技术分享

 然后后面重要的就是 dubbo服务消费者的配置文件了

技术分享

配置文件还有什么不懂的同学,可以自己去dubbo官网看下官方文档。

需要原码的朋友可以留言给我 ,因为现在在整git  还没将项目托管上去,整好了就给出来,希望大家一起加油!

 

以上是关于适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)的主要内容,如果未能解决你的问题,请参考以下文章

Harbor一键部署——初学者如何快速了解它?

rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)

Spring Cloud微服务分布式云架构

Spring Cloud微服务分布式云架构源码结构

Spring Cloud分布式微服务架构图

分享Spring Cloud分布式微服务架构图