这是一个参考了网上其他人的代码后,自己拼拼凑凑整合起来的一套dubbo应用实例。用到了spring、springMVC、mybatis、dubbo等技术。
工具和技术
- 操作系统:centOS 7.5
- 数据库服务器:mysql 5.7
- zookeeper服务器:zookeeper-3.4.6、dubbo-monitor-simple-2.5.3、dubboadmin、jdk1.7、apache-tomcat-7.0.88
- 生产者服务器:apache-tomcat-9.0.16、jdk-11.0.2
- 消费者服务器:apache-tomcat-9.0.16、jdk-11.0.2
- 开发工具:IntelliJ IDEA 、apache-maven-3.6.0
系统部署
你要准备4台服务器,可以用vmware虚拟出4台centOS操作系统的服务器出来。不过把它们全部署在同一台服务器也可以。所有服务装好后,记得要打开防火墙的开放端口。
开放防火墙端口可用以下命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
数据库服务器
安装好MySQL,防火墙放开3306端口。用root登录MySQL建库、用户、表,程序需要用到。
--创建数据库
CREATE DATABASE vigardb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
--创建用户
CREATE USER 'vigar'@'%' IDENTIFIED BY 's32sk2334jk2';
--授权用户权限
GRANT ALL ON vigardb.* TO 'vigar'@'%';
--用新用户登录后建表
CREATE TABLE `user` (
`id` int(11) DEFAULT NULL,
`username` varchar(30) DEFAULT NULL,
`password` varchar(30) DEFAULT NULL,
`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
zookeeper服务器
可以参考dubbo admin 和monitor的安装进行部署。部署成功后可以看到如下:登录的用户名和密码都是root
这个monitor就是那个dubbo monitor部署成功提供的服务。
dubbo monitor也有个网页,不过好像没啥用。
防火墙要放开端口:7070、8080、9090、2181
生产者服务器
把tomcat和jdk解压到/usr/local下,然后在/etc/profile.d下添加两个文件java.sh和tomcat.sh,用于设置环境变量。
java.sh:
JAVA_HOME=/usr/local/jdk-11.0.2
PATH=$JAVA_HOME/bin:$PATH
CATALINA_BASE=/usr/local/apache-tomcat-9.0.16
PATH=$CATALINA_BASE/bin:$PATH
然后把程序编译出来的vigar-dubbo-provider.war放到tomcat的webapps下,然后启动tomcat。
顺利的话,将可以在dubboadmin看到新增了两个服务。
防火墙要放开端口:20880
消费者服务器
跟生产者服务器一样的部署,只是放的是vigar-dubbo-consumer.war。顺利的话,将可以访问到网页,然后就可以开始试用功能了。
防火墙要放开端口:8080
代码
代码用一个父pom.xml把几个子项目集合在一起,以便统一依赖包的版本号。包含以下三个子项目:
vigar-dubbo-api
这个用来放消费者和生产者都会用到的对象和服务接口,以免相同的代码出现在多处地方。
vigar-dubbo-provider
这是生产者代码,用mybatis连数据库,UserMapper.xml、UserMapper.java、UserExample.java和User.java几个文件是用mybatis-generator生成的,不需要手工编写。注意要修改jdbc.properties和applicationContext-dubbo-provider.xml里面的IP,改成你自己服务器的。
vigar-dubbo-consumer
这是消费者代码,它并不连数据库,所有请求都通过请求dubbo服务获得。程序用spring mvc架构。注意要改dubbo文件里的IP。
代码下载
存在问题
这套代码引用了太多jar包,有一些应该是多余的,谁能告诉我哪些jar去掉了,也能正常运行。