dubbo+zookeeper+struts2+spring+mybatis

2020-04-10 15:43:47 浏览数 (1)

传统工程做多了,许多人也对分布式产生兴趣了。

本篇文章使用dubbo zookeeper Struts2 spring mybatis来做一个例子。

现暂时配置单节点,相对会比较简单。集群后期小编有空会补上!

先看一下dubbo架构图:

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。

zookeeper 图

使用dubbo需要建立服务注册中心,建议使用dubbo-2.3.3以上版本的zookeeper注册中心客户端。Zookeeper是Apache Hadoop的子项目,强度相对较好,建议生产环境使用该注册中心。Dubbo未对Zookeeper服务器端做任何侵入修改,只需安装原生的Zookeeper服务器即可,所有注册中心逻辑适配都在调用Zookeeper客户端时完成。

概念上的东西,这里不一一讲解,简单摸清概念之后即可开始了。

这里只使用一台服务器,以下出现的IP 192.168.137.140 是我服务器的地址。

.虚拟机安装zookeeper注册中心

1.解压zookeeper安装包:

tar -zxvf zookeeper-3.4.6.tar.gz

2.在zookeeper-3.4.6目录下创建以下目录:

mkdir data

mkdir logs

3.将 zookeeper-3.4.6/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为zoo.cfg

cp zoo_sample.cfg zoo.cfg

4.修改zoo.cfg配置文件:

# 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.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/usr/zookeeper/zookeeper-3.4.6/data

dataLogDir=/usr/zookeeper/zookeeper-3.4.6/logs

# the port at which the clients will connect

clientPort=2181

#2888,3888 are election port

server.1=duzoo:2888:3888

其中,

2888端口号是 zookeeper服务之间通信的端口。

3888是zookeeper与其他应用程序通信的端口。

5.在dataDir=/usr/zookeeper-3.4.6/data 下创建myid文件

编辑myid文件,并在对应的 IP的机器上输入对应的编号。如在zookeeper 上, myid

文件内容就是 1。如果只在单点上进行安装配置,那么只有一个server.1

vi myid

1

6.配置环境变量:

export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.6

export PATH=ZOOKEEPER_HOME/bin:PATH

使配置文件生效

source /etc/profile

7.在防火墙中打开要用到的端口2181、2888、3888

vi /etc/sysconfig/iptables

增加以下 3 行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT

重启防火墙:

# service iptables restart

8.启动并测试 zookeeper,在/usr/zookeeper/zookeeper-3.4.6/bin目录中执行:

./zkServer.sh

9.使用jps可查看进程

3525 QuorumPeerMain

3643 Jps

其中,QuorumPeerMain是 zookeeper进程,启动正常

查看状态:

zkServer.sh status

10.停止zookeeper 进程

zkServer.sh stop

11.配置zookeeper开机启动

编辑/etc/rc.local文件,加入:

su - wusc -c '/usr/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start'

二、安装 Dubbo管理控制台

  1. 安装tomcat 解压: tar -zxvf apache-tomcat-7.0.42.tar.gz 重命名:mv apache-tomcat-7.0.42 dubbo-admin-tomcat
  2. 移除/usr/dubbo/dubbo-admin-tomcat 下webapps下的所有文件 rm -rf *

3、 上传Dubbo管理控制台程序 dubbo-admin-2.5.3.war

到/usr/dubbo/dubbo-admin-tomcat/webapps

4.解压并把目录命名为ROOT:

unzip dubbo-admin-2.5.3.war -d ROOT

5.配置dubbo.properties:

vi ROOT/WEB-INF/dubbo.properties

dubbo.registry.address=zookeeper://192.168.137.140:2181

dubbo.admin.root.password=duzoo.123

dubbo.admin.guest.password=duzoo.123

稍后需要用此密码登录控制台

6. 防火墙开启8080端口

vi /etc/sysconfig/iptables

增加:

## dubbo-admin-tomcat:8080

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

重启防火墙:

# service iptables restart

7.启动tomcat

在tomcat的bin目录下执行

./startup.sh

最后查看进程jps

多了Bootstrap,这个就是tomcat的进程

浏览http://192.168.137.140:8080/ ,根据配置这里登录账号密码为:root,123

控制台安装完成!

三、配置服务

框架整合这里就不说了,不唠叨太多了。

这是我的工程目录:

提供接口的例子很简单。

这里我把提供服务与消费服务放在同个工程中,这样的做法其实是不可取的,主要是为了体现出提供服务。最好使用maven分包,服务为服务,消费为消费。分布式服务会把工程划分的很细,如共有逻辑模块为一个工程,配置信息为一个工程,接口服务为一个工程等等,出现依赖关系等等,而maven很擅长于做这种事。

spring文件

服务接口:

服务实现:

注册服务,在dubbo-provider文件:

${dubbo.registry.address}为注册的地址,在service.properties中配置

使用ClassPathXmlApplicationContext启动

注意,启动的是提供服务端

启动之后访问控制台,可看到服务已经注册上去了

配置消费端

消费端这里用tomcat启动,在web.xml文件中配置

这里启动的是消费的一端

启动成功后通过web层调用注册在zookeeper上的接口

成功调用后再刷新一下控制台,即可看到消费端

至此,提供服务与消费服务即可使用。

这里主要说明dubbo与zookeeper结合提供以及消费服务,真正情况下还是用maven构建的。

有兴趣的同学可以把服务与消费使用打包到服务器下运行,即服务打成可执行jar包,在服务器运行。消费打包成war包,放到服务器下运行。

四、安装简易监控中心

  1. 解压dubbo-monitor-simple-2.5.3-assembly.tar.gz
  2. 修改配置文件dubbo.properties

dubbo监控中心的端口为7070

3.修改防火墙,开启所需端口

vi /etc/sysconfig/iptables

增加以下 2 行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 7070-j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8090-j ACCEPT

重启防火墙:

# service iptables restart

到bin目录下开启监控中心

./start.sh

访问http://192.168.137.140:8090/

访问成功,可以在监控中心里看到服务与消费的信息。

本篇文章边实验边编写,花了不少时间,有些地方不足请见谅!

0 人点赞