初识dubbo

JAVA学习网 2017-09-25 08:23:07

  最近由于工作需要,小生抽时间了解了一下dubbo框架,由于个人能力有限,如果有理解错误的地方,还望各位大神多多指点,帮助小生进一步提升,先行谢过各位大神。

  众所周知,一个web工程的开发笼统的说,都是分为三层。第一层为controller层,用于接受外部请求,并对response进行处理;第二层为service层,主要用于具体的业务逻辑实现;第三层为DAO层,就是持久层,用于进行与数据库的交互。在目前主流框架中小生最为熟悉的是springMVC,spring,mybatis三大框架,即SSM框架。说着这里,可能有人问:咦?你不是在说dubbo么?为什么到现在没有任何关于dubbo的关键字出现呢?别急,小生会慢慢解释。

  如果SSM框架没有集成dubbo,那么所有的代码都会整合在一个web工程中。OK,现在我们看一个很简单的web工程结构,如下图:

 其中,DAO存放的是我的持久层的接口;dto存放我具体的bin对象;service存放我的service接口和具体的实现类;util存放我的工具类;web就是接受对应的request请求。所有的配置文件交由web.xml进行管理。容器启动进行加载。

  而如果运用了dubbo框架呢?其实按照小生的理解,其实就是进行了一个跨域访问,实现了工程与工程之间的调用,而不是简单的方法与方法之间的调用(dubbo框架为什么这么做,它的具体的优势请大家自行百度,小生就不解释了)。好了,现在我们回归正轨,正式解读一下dubbo框架的配置以及具体实现。

  首先,你需要下载一个zookeeper,下载好解压之后,在conf目录下 将zoo_sample.cfg改名为zoo.cfg。一定记住,将zoo_sample.cfg改名为zoo.cfg,否则会报错的。如果是简单的学习,里面的内容可以暂时不改。下载后直接启动zkServer.cmd。

  然后,在pom.xml中引入相关jar包。jar包引入成功后,就可以进行server端和client端的文件配置了,我具体的SSM框架我已经提前搭好,其中service里面的接口用来提供服务,也就是用来暴露具体的服务接口的;而web则交由client端进行管理,也就是对服务层进行引用。看到这里,是不是已经有朋友有了一个大胆的想法:你是不是“棒打鸳鸯”,把service层和controller层强制分开了?恭喜你,答对了……一半。其实明面上分开了,实际上他们还在私底下传小纸条。请看下图:

server端配置:

server端相关代码:

客户端相关配置:

客户端代码:

这次有没有看出点小细节了?对,没错!具体的细节如下:

1、server端与client端包的路径完全一致,并且类名完全一致!否则,两者怎么交互,client端去哪找服务去,对吧。这次明白我上面为什么说的其实service层和controller层并没有完全分开的意思了吧。

2、client端也是SSM框架,并没有发现具体的持久层代码,也就是mybatis,为什么呢?因为我们把所有的业务逻辑都交给了server端进行了处理,我们做的只是把server端的结构复制过来了而已,也就是引入server端的接口。

3、通过以上配置,我们client端就可以调用server端的服务了,也就是达到了解耦,只是看起来controller层和service层没有任何联系。

4、客户端启用多线程,是由于我的业务需要,各位不必纠结这个。

以上就是dubbo简单的应用,如需要代码,请联系QQ:465369081。

阅读(821) 评论(0)