前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dubbo+zookeeper+struts2+spring+mybatis

dubbo+zookeeper+struts2+spring+mybatis

作者头像
一头小山猪
发布2020-04-10 15:43:47
4760
发布2020-04-10 15:43:47
举报
文章被收录于专栏:微光点亮星辰微光点亮星辰

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

本篇文章使用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/

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档