Dubbo-Demo 环境搭建配置编码及实际项目中的应用

Hi,大家好.


今天来讲讲dubbo的环境搭建及实际项目中的应用,很久以前在我学习tuscany分布式soa框架时,只知道是干嘛的,但是对于如何在项目中使用完全毫无头绪.因为自身兴趣,学了学dubbo,发现跟tuscany框架没什么大的不同.


首先什么是soa?soa是一个思想,主张面向服务编程,组件化开发,简而言之就是把一个需求拆分成一个个功能,然后由这些功能组成一个服务发布,发布以后客户端通过远程调用来调用这些服务.好处就是本来一个项目可能很大,先分成一个个模块,然后又分成一个个组件,这样的话利于解耦,拓展,单独发布.我简单举一个小栗子吧.


如果要写一个计算器的功能,利用soa的思想来做就是,把各个功能加减乘除作为一个组件来进行开发,然后像搭积木那般将四个组件作为一个构建来形成一个服务发布即可,客户端注册以后调用服务即可. 如果某一个又要写一个比较牛逼的项目,其中包括计算器的需求,直接把服务注册下就ok了,不用再去重新写.


废话不多说,项目中分布式架构的项目目录是这样的,首先是创建一个父级maven项目(简单Java的maven项目只留一个pom文件)



下面说一下为什么要这样做,这是典型的分布式项目结构.一个项目使用分布式架构需要按不同的功能来分解.因为这是一个简单的demo,所以只有一个core,一个service,一个web.实际项目中可能会有多个core,多个service,多个web. 

core模块里面包含model实体类和serivce接口


service模块依赖core,service包含对于实现对应core的接口以及实现业务逻辑,然后还有就是将自身发布为一个服务.

web依赖于service,web主要是是编写restful接口,然后调用service层完成相应的业务逻辑.



实际项目中可能会有多个core,多个service,多个web,如下图.


core定义了标准了model,service层实现了core包定义的接口,然后通过对model对应的数据库表进行操作完成了相应的业务逻辑.web主要是对前端传过来的参数做校验,以及相应的处理后调用service完成业务逻辑并渲染视图响应请求.



首先讲讲如何创建分布式项目目录,先创建一个普通的Java的maven项目,然后点击该项目右键new model,如果是加core和service就普通java maven项目就好,如果是web就创建webApp


完了就是添加依赖了,依赖的话自己看我github上的项目吧,地址见下方.


首先core包我们定义一个model,User和Coach,注意实现Serializable接口,并且指定UID,因为分布式是基于远程调用的,model是需要通过网络传递的,传递方需要序列化,接收方需要反序列化.



然后建一个UserService,其中包含了对于User表的相关逻辑的方法定义.



core包功能完成


下面是service,service是需要依赖core包的,所以pom文件添加dubbo-core的依赖.



完了就是实现UserService,并将自身发布为dubbo的服务.



发布服务需要进行配置dubbo,我们在resouce中新建一个spring的配置文件命名为applicationContext-server.xml(可随意),zookeeper后面再讲.



这样就将服务注册打了zookeeper,我们可以看到,userService和coachService相当于一个组件,在配置文件中将这两个构建一同作为服务并发布到20881端口.


web是使用服务端,自然依赖service和core,因此我这边写了一个简单的restFul接口,并在接口中注册并调用了userService服务.



注册在spring配置文件中进行配置,建议命名applicationContext-client.xml


注册完了,dubbo类似于tuscany会自动将对应的服务发布为bean,只需要在对应的类中加载使用即可.



至此dubbo的配置和项目中目录结构等内容讲完了,那么下面就讲讲什么是zookeeper,为什么提供方和使用方均需要向zookeeper注册.

zookeeper是一个分布式协调工具,相当于一个管理员.之前tuscany框架我们是发布服务和注册服务都写入到数据库中.也就是说发布服务你需要将服务的相关信息写入数据库,注册服务也需要将注册方相关信息写入数据库.


其中也可以起到一个负载均衡的作用,以及暂停某个服务等等.比如说dubbo-service这个服务你分别在20801和20802端口进行发布,形成了一个集群.那么一个请求过来该调用20801的服务呢还是20802的服务呢?我们可以在dubbo的控制台进行控制,这就是通过通知zookeeper来实现的.

zookeeper很简单,下载完了启动zkService和zkClient就ok,然后默认端口就行,换其他端口什么的自行百度.



下面来试试效果,首先启动zookeeper以便让服务提供方和使用方能够进行注册,然后启动服务提供方(dubboService),最后启动web来注册服务并使用.

zookeeper讲了没啥可讲的,发布服务,我们上面可以看到我们的项目结构有个server目录和一个server类,这个就是用来发布服务的.


dubbo的发布很简单,加载配置文件以后调用start方法,并让该程序一直进行即可.


注册服务,没啥可讲的,直接启动web调用就自动注册了.


最后来讲讲怎么配置dubbo的控制台,首先dubbo的控制台是一个web,这个web需要下载源码以后打包.并通过tomcat来启动运行.

打包方式很简单.首先下载项目https://github.com/dubbo/dubbo-ops 下载完了直接运行命令

mvn install -Dmaven.test.skip=true


完了进入目录dubbo-admin/target,找到dubbo-adminXXX.war的包. 然后放到tomcat的webapp下,完了启动,启动以后会自动解压.然后进入解压后的目录进入WEB-INF编辑dubbo.properties文件,如下图 第一行不说了,第二三行是账号密码,用于登录dubbo后台的(如果账号密码不起作用,试试root,root)




后台效果如下:




Demo github链接:https://github.com/Himly1/dubbo-demo

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值