当前位置: 移动技术网 > IT编程>软件设计>架构 > dubbo构建应用

dubbo构建应用

2018年02月08日  | 移动技术网IT编程  | 我要评论

1.Dubbo介绍

Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。

2.Dubbo原理

是不是看着比较懵逼,博主用通俗的语言讲解一下吧,这张图里两个英文单词大家应该比较熟悉,一个Provider(提供者),一个Consumer(消费者),顾名思义,提供者用来提供服务,消费者用来消费服务的,举个例子,房东和房客就是消费和被消费的关系,房东提供租房这项服务,房客把房子租下来,消费了租房这项服务.但是我们知道,当租房子时候苦于不知道价格,不好找房源等问题,这时候就出现了中介这个东西,也就是图中的Registry(注册),当我们想找房子的时候,就可以直接找中介,提供者(房东)会提前在中介上登记房源信息,我们只需要告诉中介我们需要什么样的租房服务,中介就会告诉我们我们需要的房子在哪哪哪,这就是dobbu的原理,最后Monitor(监控)则是负责查看提供者和消费者链接是否正常,(就如中介会让你签租房合同,这里不是很恰当).这就是dubbo的原理,这时候有的同鞋就会问了,我直接将消费者和服务者链接起来不就可以了,为啥非要通过Registry这个东东?这里我多说两句.

dubbo既然出现了就一定是有他的需求的,也一定是解决了某些问题,那是哪种问题被解决了呢?当我们的系统服务客户群只有几十个,百个的时候完全没必要用分布式集群搭建,只有当我们的客户群数量极大,大到我们不得不采用分布方法拆分系统,以防止系统耦合复杂,这样当系统越来越复杂的时候,系统与系统之间的调用关系也越来越复杂,你可以想象淘宝将服务分布式架构图会多复杂,我猜想淘宝的架构师自己都很难理清楚系统与系统之间的调用关系,这个时候我们加上一个中间机构,就有点像第三方,我们不管什么服务都发布在第三方,调用的时候只用在第三方调用就好了,这样不就简单很多吗?这就是dubbo的作用.

dubbo大概讲清楚了,下来说说dubbo使用方法吧

3.dubbo的使用

  我们知道,dubbo有一个Registry(注册机构),dubbo官方推荐使用ZooKeeper,至于ZooKeeper的详细介绍博主就不细说了,大家可以把它理解为第三方(需要部署在linux上的第三方机构),而消费者和提供者则是两个发布的服务,说白了就是用发布的项目,其中有项目提供服务,有项目调用服务.

  关于提供者和消费者后面慢慢说,现在我们先说ZooKeeper的安装.

安装环境:

  Linux:centos6.4

  Jdk:1.7以上版本

 

Zookeeper是java开发的可以运行在windows、linux环境。需要先安装jdk。

  安装步骤:

第一步:安装jdk

  详细的需要去查看博主jdk安装博文

第二步:把zookeeper的压缩包上传到linux系统。

博主曾经学过上传工具的介绍使用,需要的童鞋自行查找下博主的博客

第三步:解压缩压缩包

tar -zxvf zookeeper-3.4.10.tar.gz

解压成功后如上图zookeeper-3.4.10蓝色文件夹

第四步:进入zookeeper-3.4.6目录,创建data文件夹。

就是新建data文件夹

博主这里已经新建过了

第五步:把zoo_sample.cfg改名为zoo.cfg

ps:zoo_sample.cfg文件在conf文件夹中,其中dubbo的配置文件

[root@localhost conf]# mv zoo_sample.cfg zoo.cfg

这命令的意思为修改文件名称改为zoo.cfg,大家也可以cp命令copy文件

第六步:修改data属性:dataDir=/root/zookeeper-3.4.6/data

ps:这里强调一下,这里的地址要修改到你新建data文件的全限定名称

 

第七步:启动zookeeper

[root@localhost bin]# ./zkServer.sh start

关闭:[root@localhost bin]# ./zkServer.sh stop

查看状态:[root@localhost bin]# ./zkServer.sh status

4.dubbo在java中的使用

 需要以来的jar包

ps:代码中博主没有贴出版本号,写在这里大家自行参考版本

<dubbo.version>2.5.3</dubbo.version>

<zookeeper.version>3.4.7</zookeeper.version>

<zkclient.version>0.1</zkclient.version>

<!-- dubbo相关 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>

 需要将dubbo配置在Spring文件中

<!-- 使用dubbo发布服务 -->
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="aliyun-manager" />
    <dubbo:registry protocol="zookeeper"
        address="192.168.32.129:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="cn.aliyun.service.ItemService" ref="itemServiceImpl" />

部分说明

如果没什么问题的话,这样服务就发布成功了.我们看一眼日志

接受服务端dubbo配置文件

 <dubbo:application name="aliyun-manager-web"/>
    <dubbo:registry protocol="zookeeper" address="192.168.32.129:2181"/>    
    <dubbo:reference interface="cn.aliyun.service.ItemService" id="itemService" timeout="600000"/>

日志

连接成功

ps:博主默认大家有一定的基础,没有特别详细的写过程,如果有什么问题,在下方留言就好了

说一种情况,如果服务开启后连接不上zookeeper,有可能是端口未开放,开放端口或关闭防火墙就好了

 

 

欢迎转载: 

中文名:惠凡

博客名:淹死的鱼o0

转载时请说明出处:

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网