提醒:各位看官,这个项目环境搭建将采用分时完成,因为有很多技术需要学习补充,也是对自己的检验,所以需要持续更新!
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 提出并维护的。
dubbo体系由注册中心,消费者,提供者以及监控中心构成。
注册中心:主要负责各个tomcat之间的通信,以及注册服务、订阅服务,我们主要使用的是zookeeper中间件。
监控中心:主要负责监控注册中心上是否有新服务注册、是否服务被消费。
提供者:向注册中心注册服务。
消费者:从注册中心订阅服务。
3.1 搭建注册中心
1)获取一个zookeeper中间件
获取zookeeper-3.4.12.tar.gz包 并解压到Windows自己定义的路径,如:D:\server
2)更改zookeeper的配置文件
在zookeeper主目录下/conf/zoo_sample.cfg 文件名更改为zoo.cfg(跟mysql安装配置相似)
//data文件夹需要手动创建在zookeeper主目录下
打开该配置文件会看到如下端口号,并修改dataDir后面的内容:
记住端口号:clientPort=2181 //zookeeper访问端口是2181
修改内容:dataDir=D:/server/zookeeper-3.4.12/zookeeper-3.4.12/data
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步骤:也就完成了注册中心的搭建。
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包会自动解压),不要关闭。)
3)在浏览器访问dubbo监控中心项目:http://localhost:8080/dubbo-admin-2.8.4/ 即可进入首页(因为还没有发布,所以是空的)。(这里进入首页会弹出用户密码框,即输入上面properties配置文件的root密码root)
完成以上3.2步骤即搭建好了分布式项目的监控中心
下面是创建分布式项目,在之前需要先设置maven的仓库路径,然后再创建普通maven工程:
设置maven选项:
maven设置如下:
创建工程:
选择maven项目:
创建项目名和项目组:
直接选择完成(跳到工程项目的时候注意一定要点击右下角的自动导包才会生成完整项目):
以下是完成我们项目的提供者(provider)和消费者(consume),并分别部署到tomcat服务器上。3.3做的是将项目里公共的部分抽取出来单独做一块模块,放到仓库使用。
3.3 创建公共项目(在普通maven项目里创建module)
1)新建一个公共项目smbms-common (module 普通maven项目)
项目结构如下:
(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)。
操作如下:
查看发布结果:
4. dubbo 开发provider(后续更新)
第二篇链接地址:https://blog.csdn.net/gaofengyan/article/details/85214910