idea下用maven创建并搭建dubbox微服务环境项目(一)

提醒:各位看官,这个项目环境搭建将采用分时完成,因为有很多技术需要学习补充,也是对自己的检验,所以需要持续更新!

前提准备:

idea下用maven创建并搭建dubbox微服务环境项目(一)_第1张图片

1.概述


1.1 传统架构(B/S):传统架构即单体架构。开发中控制器、service等都在一个项目中开发,一起部署在一个服务器上。
1.2 微服务架构(B/S):将控制器、service等分布式开发,隔离部署,通过通信中间件(我们的tomcat、maven、zookeeper等都属于通信中间件)来完成多个服务器之间的通信。
1.3 当前主流微服务架构种类:dubbox(dubbo)、spring cloud 。
    dubbox:是dubbo的扩展版本,dubbox由当当网发布并维护。dubbo是alibaba提出的(因为有版权问题,一般不使用)。
    spring cloud :spring cloud 是springframe 提出并维护的。


2.dubbo体系介绍


   dubbo体系由注册中心消费者提供者以及监控中心构成。
   注册中心:主要负责各个tomcat之间的通信,以及注册服务、订阅服务,我们主要使用的是zookeeper中间件。
   监控中心:主要负责监控注册中心上是否有新服务注册、是否服务被消费。
   提供者:向注册中心注册服务。
   消费者:从注册中心订阅服务。

idea下用maven创建并搭建dubbox微服务环境项目(一)_第2张图片


3.dubbo环境准备


   3.1 搭建注册中心
    1)获取一个zookeeper中间件
      获取zookeeper-3.4.12.tar.gz包 并解压到Windows自己定义的路径,如:D:\server

idea下用maven创建并搭建dubbox微服务环境项目(一)_第3张图片
    2)更改zookeeper的配置文件
    在zookeeper主目录下/conf/zoo_sample.cfg 文件名更改为zoo.cfg(跟mysql安装配置相似)

idea下用maven创建并搭建dubbox微服务环境项目(一)_第4张图片

 //data文件夹需要手动创建在zookeeper主目录下

idea下用maven创建并搭建dubbox微服务环境项目(一)_第5张图片

     打开该配置文件会看到如下端口号,并修改dataDir后面的内容:
    记住端口号:clientPort=2181  //zookeeper访问端口是2181
    修改内容:dataDir=D:/server/zookeeper-3.4.12/zookeeper-3.4.12/data
   idea下用maven创建并搭建dubbox微服务环境项目(一)_第6张图片
    3)启动zookeeper  服务端
        双击:zookeeper主目录/bin/zkServer.cmd  启动服务。
    4)启动zookeeper  客户端
        双击:zookeeper主目录/bin/zkCli.cmd  客户端服务。
    5)先打开3,再打开4步骤,打开后不要关掉。注意:如果打开时是一闪而过,说明Windows下面的jdk环境变量配置有问题。正确的配置如下:
       在全局变量栏配置:变量 :JAVA_HOME   值 :D:\xuexi\JDK  (jdk的路径)
                                        变量 :path        值 :%JAVA_HOME%\bin  (jdk下面的bin路径)
 配置好以上环境才可以正常打得开;完成以上3.1步骤:也就完成了注册中心的搭建。

          idea下用maven创建并搭建dubbox微服务环境项目(一)_第7张图片


   3.2 搭建监控中心
   1)获取监控中心项目  dubbo-admin 监控中心项目下找到如下配置文件,我的路径解压后在(D:\linux 软件\dubbo\dubbo\dubbox-master\dubbox-master\dubbo-admin\target\dubbo-admin-2.8.4\WEB-INF)
      dubbo.properties  配置文件内容:

      #注册中心地址
      dubbo.registry.address=zookeeper://127.0.0.1:2181
      #root账户密码
      dubbo.admin.root.password=root
      #guest账户密码
      dubbo.admin.guest.password=guest

      2)将dubbo-admin-2.8.4.war 部署到tomcat里的webapps里面(操作:将war包复制到weapps下面即可),启动tomcat(操作:双击tomcat主目录/bin/startup.bat 批处理文件启动服务,可以看到自己的端口号["http-apr-8080"],启动后缩小(启动后war包会自动解压),不要关闭。)

idea下用maven创建并搭建dubbox微服务环境项目(一)_第8张图片

idea下用maven创建并搭建dubbox微服务环境项目(一)_第9张图片

idea下用maven创建并搭建dubbox微服务环境项目(一)_第10张图片

       3)在浏览器访问dubbo监控中心项目:http://localhost:8080/dubbo-admin-2.8.4/ 即可进入首页(因为还没有发布,所以是空的)。(这里进入首页会弹出用户密码框,即输入上面properties配置文件的root密码root)idea下用maven创建并搭建dubbox微服务环境项目(一)_第11张图片

完成以上3.2步骤即搭建好了分布式项目的监控中心

idea下用maven创建并搭建dubbox微服务环境项目(一)_第12张图片


下面是创建分布式项目,在之前需要先设置maven的仓库路径,然后再创建普通maven工程:

设置maven选项:

idea下用maven创建并搭建dubbox微服务环境项目(一)_第13张图片

maven设置如下:

idea下用maven创建并搭建dubbox微服务环境项目(一)_第14张图片

创建工程:

选择maven项目:

idea下用maven创建并搭建dubbox微服务环境项目(一)_第15张图片

创建项目名和项目组:

idea下用maven创建并搭建dubbox微服务环境项目(一)_第16张图片

直接选择完成(跳到工程项目的时候注意一定要点击右下角的自动导包才会生成完整项目)

idea下用maven创建并搭建dubbox微服务环境项目(一)_第17张图片


       以下是完成我们项目的提供者(provider)和消费者(consume),并分别部署到tomcat服务器上。3.3做的是将项目里公共的部分抽取出来单独做一块模块,放到仓库使用。
    3.3 创建公共项目(在普通maven项目里创建module)
    1)新建一个公共项目smbms-common (module 普通maven项目)

         idea下用maven创建并搭建dubbox微服务环境项目(一)_第18张图片

        项目结构如下:

         idea下用maven创建并搭建dubbox微服务环境项目(一)_第19张图片
       (1)新建数据库dubbo-smbms

                idea下用maven创建并搭建dubbox微服务环境项目(一)_第20张图片
       (2)新建表smbms_user用户表
         id                   数字(6)     主键
         userCode      字符(25)   非空
         userName     字符(25)   非空
         password      字符(25)   非空
         插入数据 {17,‘zhangsan’,‘张三’,‘1234’} {18,‘lisi’,‘李四','1234’}
       (3)新建表smbms_order订单表
       id                        数字(12)          订单编号
       ownerUserId      数字(6)            下单人
       productName    字符(50)           产品名称
       price                  浮点(10,2)     单价
       amount              数字(8)             数量
       
    2)新建实体类与service接口
        cn.kgc1803.smbms_common.pojo  实体类包

package cn.kgc1803.smbms_common.pojo;

import java.io.Serializable;

public class User implements Serializable {
    private Integer id;
    private String userCode;
    private String  userName;
    private String password;

    public User(){
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
package cn.kgc1803.smbms_common.pojo;

import java.io.Serializable;

public class Order implements Serializable {
    private Integer id;
    private Integer ownerUserId;
    private String productName;
    private Double price;
    private Integer amount;

    public Order(){
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getOwnerUserId() {
        return ownerUserId;
    }

    public void setOwnerUserId(Integer ownerUserId) {
        this.ownerUserId = ownerUserId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }
}

        cn.kgc1803.smbms_common.service 接口类包    

package cn.kgc1803.smbms_common.service;

import cn.kgc1803.smbms_common.pojo.User;

/**
 * 用户接口
 */
public interface UserService {
    //登陆
    User loginUser(User u);
}
package cn.kgc1803.smbms_common.service;

import cn.kgc1803.smbms_common.pojo.Order;

import java.util.List;

public interface OrderService {
    //查看所有
    List findList();
}

    3)利用maven 将共用项目(smbms-common)打成jar包安装到 maven 仓库中repository(D:\xuexi\repository\repository\repository)。

    操作如下:

    idea下用maven创建并搭建dubbox微服务环境项目(一)_第21张图片

      查看发布结果:

idea下用maven创建并搭建dubbox微服务环境项目(一)_第22张图片

    


4. dubbo  开发provider(后续更新)

第二篇链接地址:https://blog.csdn.net/gaofengyan/article/details/85214910

你可能感兴趣的:(分布式与微服务开发)