欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

dubbo构建应用

程序员文章站 2022-06-24 08:02:21
1.Dubbo介绍 Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。 2.Dubbo原理 是不是看着比较懵逼,博主用通俗的语言讲解一下吧,这张图里两个英文单词大家应该比较熟悉,一个Provider(提 ......

1.Dubbo介绍

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

2.Dubbo原理

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系统。

dubbo构建应用

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

第三步:解压缩压缩包

tar -zxvf zookeeper-3.4.10.tar.gz

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

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

就是新建data文件夹

dubbo构建应用

博主这里已经新建过了

第五步:把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文件的全限定名称

dubbo构建应用

 

第七步:启动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构建应用

接受服务端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"/>

日志

dubbo构建应用

连接成功

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

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

 

 

欢迎转载: 

中文名:惠凡

博客名:淹死的鱼o0

转载时请说明出处:http://www.cnblogs.com/huifan/