使用zookeeper和dubbox + Tomcat + mybatis + springBoot 搭建分布式web工程
使用的工具与框架
zookeeper-3.4.12、dubbox 、apache-tomcat-7.0.55、mybatis 、springBoot 、eclipse、MySQL、java1.8、maven
maven环境的配置
-
确认JDK的安装 以及 环境变量JAVA_HOME的配置
-
下载Apache Maven, 并将其解压. 通常将maven解压到jdk的安装目录
-
添加环境变量 M2_HOME 和 MAVEN_HOME. 路径为maven的解压路径
-
将添加的环境变量配置到系统变量PATH. 例如: %M2_HOME%\bin
-
修改Maven的配置文件. 打开解压目录的conf文件夹, 打开settings.xml文件,
添加maven本地资源库路径配置.
例如:E:\maven_resource
注:不配置的话则本地资源库使用默认路径C:\Users\Administrator.m2\repository
dubbox环境配置
1.下载dubbox,解压压缩包,打开命令行窗口,将命令行路径切换到解压目录
2.执行命令mvn install -Dmaven.test.skip=true
3.配置启动ZooKeeper.启动前需要更改集群配置:
a)在zookeeper的配置文件中配置服务器,例如:server.1=localhost:2888:3888
b)在zookeeper文件夹下的data文件夹中创建文件myid(无后缀), 内容为服务器编号,例如: 1
4.在解压目录下寻找地址dubbo-admin\target,复制地址中的文件dubbo-admin-2.8.4.war,粘贴到tomcat的webapps文件夹中,启动tomcat
5查看tomcat路径中的文件内容webapps\dubbo-admin-2.8.4\WEB-INF\dubbo.properties.内容如下:
#注册机制与地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
注:注册机制与地址如不是默认值,则需要手动修改
6.打开浏览器,访问工程路径http://localhost:8080/dubbo-admin-2.8.4,输入账号密码root/root, 查看页面
开始搭建分布式
构建父子maven项目
创建maven project项目,打开此项目内的pom.xml文件,将packaging标签的值由jar改为pom,并引入springBoot的父工程,引入所有子工程的共同依赖(如:Springboot-web、Springboot、zookeeper、DubboX相关)。将父工程内引入的jar包remove掉,然后Update此工程,删掉此工程内除pom.xml文件的其他所有。
创建父工程的三个子工程(创建时应选择maven module),分别命名为api、consumer、provider。分别更改三个子项目内的pom.xml的信息,引入依赖(api为另外两个工程都需要的公共资源工程,不需要引入任何依赖,但另外两个子工程需先引入api工程,然后再引入依赖。)
编写代码
编写实体类、数据层接口、业务逻辑接口、业务逻辑实现、业务控制器(展现层)的代码,业务逻辑接口和实体类归为api(公共资源工程),业务控制器(展现层)归为consumer(消费者),数据层接口和业务逻辑实现归为provider(生产者)。在consumer工程内src文件夹下的main里创建webapp文件夹,用来装载前端文件
编写配置文件
在consumer工程内创建src/main/resources资源文件夹,创建名为application.properties的文件,内容为server.port=8081。设置访问端口。创建consumer的配置文件。创建consumer的启动文件
在provider工程内创建src/main/resources资源文件夹,创建provider的配置文件。创建实体类映射文件,创建mybatis配置文件,创建名为application.properties的文件,设置端口号,数据库连接路径与驱动、账号、密码,设置mybatis的配置文件和实体类映射文件的路径。创建provider的启动文件
启动顺序
先启动zookeeper,再外部启动tomcat,然后回到eclipse内,先运行生产者(provider)的启动文件,再运行消费者(consumer)的启动文件,启动成功后则可通过事先设置好的消费者(consumer)的端口号来访问编写好的网页。