菜鸟学习Dubbo

一.什么是dubbo?

    随着互联网的不断发展,网站的应用规模愈来愈大,常规的垂直架构已经没法应对,尤为是相似电商的项目,因此分布式架构和流动计算架构已经势在必行。
① 单一应用架构
    当网站很小时,只须要一个项目就能够将全部功能部署到一块儿,减小部署成本。
    此时用于简化增删改查工做量的数据访问框架(ORM)是关键。
② 垂直应用架构
    当访问量增大时,单一应用增长机器所带来的加速愈来愈小,此时应当拆分单个项目为互不相干的多个应用,提高效率。
    此时,加速前端页面开发的web框架(MVC)是关键。
③ 分布式服务架构
    当垂直应用愈来愈多,有不少相同的业务逻辑,这样应用直接的交互不可避免,此时将核心业务抽取出来,做为独立的服务,逐 渐造成稳定的服务中心,以应对快速变化的外部市场环境。
    此时,用于提升业务复用整合的分布式服务框架(RPC)是关键。
④ 流动计算架构
    当服务愈来愈多,容量的评估,小服务资源浪费等问题逐渐暴露,此时须要一个服务治理工具来管理集群容量,提升利用率。
    此时,提升资源利用率的资源调度和服务治理中心(SOA)是关键。
 
而Dubbo就是资源调度和服务治理中心的管理工具。

二.为何使用dubbo?

1.webservice:效率不高基于soap协议,项目中不建议使用,但它的优势在于跨语言通讯,适用于不一样公司相互调用接口。
2.使用restful形式服务:http+json。不少项目中的应用,若是服务太多,系统之间调用关系混乱,须要治疗服务。
3.使用dubbo。使用rpc协议进行远程调用,之间使用socket通讯,传输效率高,而且能够统计出系统之间的调用关系、调用次数。
说白了dubbo就是一个服务治理工具,是一个服务的中间件,因为dubbo是经过java编写的,dubbo最大的缺点就出现了,它只适用于java系统间的通讯。

三.Dubbo的架构

角色说明
Provider:暴露服务的服务提供方
Container:服务运行容器
Consumer:调用服务的消费方
Registry:注册服务与发现服务中心
Monitor:统计服务调用的监控中心(无关紧要)
调用关系说明
0:服务运行容器启动,加载服务提供者
1:在启动时告诉注册中心服务方有什么服务
2:消费者调用服务时,先到注册中心订阅所须要服务
3:注册中心返回结果即该服务的地址
4:消费者经过地址调用服务(此时注册中心没用了)
5:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次到监控中心

四.如何使用Dubbo

Dubbo使用Spring配置方式,只需用Spring加载Dubbo的配置便可。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<!-- 配置包扫描器,扫描全部带@Service注解的类 -->
<context:component-scan base-package="xxxx.service"/>
<!-- 发布dubbo服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="xxxx" />
<!-- 注册中心的地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.224.50:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明须要暴露的服务接口 -->
<dubbo:service interface="xxxx.ItemService" ref="itemServiceImpl" timeout="300000"/>
<dubbo:service interface="xxxx.ItemCatService" ref="itemCatServiceImpl" timeout="300000"/>
</beans>

 

首先引入Dubbo的dtd文件头,上述配置文件为服务提供者,经过zookeeper暴露服务,timeout=“300000”为debug调试时候使用。下面则是消费者引用dubbo服务。
<!-- 引用dubbo服务 -->
<dubbo:application name="xxxx"/>
<dubbo:registry protocol="zookeeper" address="192.168.224.50:2181" />
<dubbo:reference interface="xxxx.ItemService" id="itemService" />

 

Dubbo使用相对简单,只是须要了解为何使用Dubbo,在什么状况下使用Dubbo便可,如何搭建Dubbo和注册中心以后介绍。
相关文章
相关标签/搜索