dubbo构建应用
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
转载时请说明出处:http://www.cnblogs.com/huifan/
上一篇: Flask学习之旅--Flask项目部署
下一篇: 合并table中值相同的列