dubbo 热部署_学习笔记4-dubbo-crud案例

这两天用dubbo做了个案例,记录学习情况。dubbo的基本介绍省略,上一篇笔记中有记录,本次笔记只记录本次项目。

在做项目之前先搭建一个zookeeper集群,这个之前已经做过了,不说步骤。

dubbo入门案例:

创建一个provider工程项目,类型为jar类型,我的目录结构是这样的

d6d0e690ad57a010119aaf345781e7f9.png

首先工程创建完之后在pom文件中添加dubbo的gav坐标,由于2.5.3以及以下的版本对于spring的支持不太友好,只支持低版本spring,需要手动去除依赖,再添加自己要的版本的spring的依赖,所以采用2.5.4版本的dubbo。

先创建服务:就是编写接口和接口的实现类,之后要配置服务,新建一个spring配置文件命名为applicationContext-dubbo.xml或者application-dubbo.xml。添加好约束之后使用<dubbo:来进行配置:

1fe145a240d70b6efb0517ff93a61c39.png

配置完成之后要启动测试provider,首先在虚拟机中将zookeeper集群启动,然后将provider发布到zookeeper注册中心中。测试时要先加载spring配置文件,有两种方式,通过调用ApplicationContext的父类的实例化对象的start()方法,不过这样调用发布之后直接就会直接就停止服务,所以需要调用系统的System.in.read();让线程阻塞。还可以通过使用dubbo提供的Main类调用main()方法传入主方法中的参数,这种启动方式自带线程阻塞,支持优雅关系,不过这样启动的话需要将配置文件放在src/main/resources目录下的META-INF目录下的spring文件夹中,因为Main启动默认从该路径找spring配置文件。

9dee8358460422be32f0ff08ec6057a8.png

启动时可能会报异常,因为需要依赖zookeeper基于java的客户端工具,需要依赖jar包:

25a2b3532e17bd3728bba2ff80c614df.png

启动成功

965226068f7792dbec0dd4e833d3013e.png

在zookeeper中使用zkCli.sh连接zookeeper服务可以查看服务信息,本来应该没有这么多接口的,但是后面做的crud中的provider也提交到注册中心了,所以都在这里能看到:

a4fd059cb37368a7435898c00a7d3b0a.png

由于在这里查看服务不太方便,所以使用了一个admin管理平台,admin管理平台是一个war项目,使用upzip命令来解压该包,将解压出来的ROOT文件夹替换掉tomcat中webapps下的ROOT文件夹,可以对admin管理平台进行配置,zookeeper集群中给一个地址即可,用户名密码我使用默认,下面这张图ip地址不是我自己的。

865bb346144c32351d048bbbea496eca.png

在浏览器中输入http://192.168.xxx.xxx:8080即可访问,我用root用户登录:

87f4a5c3a07ce472939666eae4986182.png

在服务治理中可以查看服务提供者和消费者:

b41ff1ed1272de54bf93f9508d89d107.png

完成之后编写消费端,创建jar工程,在pom文件中依赖dubbo和zkclient的jar包,编写接口和实现类,然后编写配置文件:

5dde0eb1d94487cbc37854912f066b86.png

然后编写测试类,测试以及测试结果如下:

0597a566e4d8082df2131bca47998978.png

63e8633a952adca70a7cc097f6386f4a.png

入门案例结束,学到了很多,例如dubbo的使用以及provider和consumer。接下来做个实战小案例,完成对一张用户表的crud操作表中有userid(PRIMARY),username,userage三个属性,使用SOA面向服务架构。结构如下:依照如下结构图建立的工程

d8b77d5008edf51b84f4e5a8973ff1ab.png

9024453784a1d04cd67330d7c4bd27bb.png

配置文件较多不再粘贴,源码直接分享百度云https://pan.baidu.com/s/1e219n92Y_KQMZ7FwxOCGxA 提取码4pef

接下来使用assembly打包插件,在provider服务项目的根目录下建一个名为assembly的目录,将解压的打包插件中的lib和conf目录放到assembly目录下,将conf目录下的dubbo.properties文件清空,在assembly根目录下创建一个assembly.xml的配置文件,修改项目的pom文件添加assembly的打包插件,对该项目install。

由于本机的虚拟机只开了一台常用的,分布部署provider和consumer时候需要部署provider的那台没有开,就不说分布部署了,只说一下环境,需要安装jdk,tomcat和mysql数据库。分布部署consumer时候需要依赖tomcat完成热部署,所以在consumer的Service工程中需要添加热部署插件,然后部署。

所以这里只记录在一台虚拟机 下部署项目的例子。首先由于provider的项目类型是jar类型,所以需要手动将接口等提交到注册中心,要不然启动consumer会报无法注入的错误。这里写了一个类用于提交:

6052afadc9041b6afcefb3ae3bc22327.png

提交之后在管理中心可以看到提交的所有接口,由于在provider中接口我是分开写的,所以这里就会有几个都被提交上来了:

bb6b6f912cfdf97f6f98b56fb8db90e5.png

接下来启动consumer端,启动之后访问页面,可以完成对user表的简单增删改查

5613d5283f829716b44949c41de2a779.png

3d3de3472fb7cefcc981e23a98dfe23e.png

8c1bd651e8ad04760ec3233b8746b14a.png

35006810192f7e6d1d0bbf366d692e0c.png

有一点我觉得需要注意一下,在运行项目的时候需要将项目先进行打包,顺序不能出错,从parent开始打,然后打provider最后打consumer,要不然运行时会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值