maven+springmvc+dubbo+zookeeper
为什么要用dubbo?
还是让官方来解释吧:
一般 nginx+tomcat
| ----> Controller1--------->service1
请求----->nginx |
|----->Controller2--------->service2
请求进了Controller 就只有一条路可以走了
使用dubbo后
| ------->service1
请求------>Controller----> |
|---------->service2
简单的说 也就是 一个Contoller 我可以部署多个 service 。
一般的mvc项目 包含 Controller、Servicei、ServiceImpl、dao三层
使用doubbo我们可以把项目拆分:
Controller 作为 “消费着” 一个项目
ServiceImpl +dao 作为 “提供者” 一个项目
Servicei “接口” 可以作为一个项目
我们可以部署多个“提供着”。。。。。。。。。。。。。。。。。。。
Zookeeper作为Dubbo服务的注册中心,Dubbo原先基于数据库的注册中心,没采用Zookeeper,Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。我们先在linux上安装Zookeeper,我们安装最简单的单点
Windons 安装Zookeeper
1,Zookeeper 官网下载windons 版本,(不会下载百度)
单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如
打开目录机构为:
Zookeeper 的启动脚本在 bin 目录下,Windows 下的启动脚本是 zkServer.cmd。
在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper 的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。
打开以后
1
2
3
4
5
6
7
8
9
10
11
12
|
#
The number of milliseconds of each tick
tickTime=2000
#
The number of ticks that the initial
#
synchronization phase can take
initLimit=10
#
The number of ticks that can pass between
#
sending a request and getting an acknowledgement
syncLimit=5
#
the directory where the snapshot is stored.
dataDir=/tmp/zookeeper
#
the port at which the clients will connect
clientPort=2181
|
- tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
- dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
- clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
二.dubbo-admin。 dubbo管控台的安装
下载 dubbo-admin-2.5.3.war
解压之后:
修改 META-INF/dubbo.properties文件
1
2
3
|
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
|
address:zookeeper 的ip地址 后面是端口号 ,和zookeeper中配置的端口号一样
修改完成后需要一个tomcat 打开tomcat \webapps\ROOT 目录 ,此目录放置的是tomcat的首页,删除所有的文件,将解压后修改好的所有的dubbo-admin 里的文件复制到 \webapps\ROOT中,
此时我们已经配置好了。现在可以启动tomcat了 (主意:在启动tomcat之前要先启动zookeeper ,启动zookeeper前面有介绍)。 启动tomcat之后 在浏览器输入 http://localhost:8080 (我的是8083) 进入dubbo管控台的主页
(备注:使用jdk1.8 tomcat启动可能会出错 有关 URI。。。。 的错误。我最后换成1.7了)
用户名和密码就是dubbo.properties 中配置的 默认的是 用户名 :root, 密码:root
输入用户名和密码之后 进入首页
当然现在还没有 消费者 和 提供者
现在我们来开发 消费者 和 提供者
配置 好 zookeeper之后 搭建 maven+springmvc+dubbo环境
新建3个maven项目
1,test-dubbo-provider ,java项目,作为提供者,serviceImpl 和dao 层
2,test-public-interface ,java项目,存放公共的接口 ,servicei 是service的接口 (备注:1要依赖2, 3也要依赖2)
3,test-web-consumer,web项目,存放 Controller 和 页面
首先我们来开发 服务的提供者也就是 test-dubbo-provider ,目录结构为
ApplicationContent-dubbo.xml dubbo服务的配置文件(名字随意) (待会再介绍)
ApplicationContent.xml spring的配置文件
这两个配置文件 必须要放到 MATE-INF/spring/下面 (原因后面再说)
UserServiceImpl.java 借口的实现类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.cl.user.serviceImpl;
import org.springframework.stereotype.Service;
import com.cl.user.servicei.UserService;
@Service ( "userService" )
public class UserServiceImpl implements UserService{
@Override
public String
sayHello() {
System.out.println( "hello
world----------------------------" );
return "hello
world" ;
}
}
|
有了 实现类 还需要接口 也就是项目test-public-interface
这个项目很简单 只需要 接口 就行了
1
2
3
4
5
6
|
package com.cl.user.servicei;
public interface UserService
{
public String
sayHello();
}
|