Dubbo介绍

之前我们使用集中式框架。耦合性很高,无法水平扩展,实现集群。

Controller->Service->Dao

而分布式的框架 就是 解决集中式框架的这一问题。

但是如果根据功能拆分,进行集群,会需要写 很多重复的相同方法。(不同的controller方法会调用一个service)

那么我们进行水平拆分。


将页面控制层controller拆分出来,service和dao作为服务层

这样其实也有一些问题:

1.当服务越来越多,调用服务的url越来越难管理

2.当调用服务量越来越大,很难确定服务需要多少机器支撑,什么时候增加机器


Dubbo就是资源调度和治理中心,解决上面的问题。

它是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。

是阿里SOA服务化治理方案的核心框架。


1.服务提供者,在启动的时候,向注册中心注册自己提供的服务。

2.服务消费者,在启动的时候,向注册中心订阅自己需要的服务。

3.注册中心返回服务提供者地址列表,给消费者。如果变更,注册中心将基于长连接退送变更数据给消费者。

4.服务消费者,从提供者地址列表中,基于负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台

5.服务消费者 和 服务提供者,在内存累积调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。


使用:

我们提供在testServiceImpl

1.在配置文件头部配置dubbo约束

2.加入dubbo.xsd约束文件


将服务提供出去。(服务端    IP 1.1机器


在springMvc.xml中配置(消费端  1.2 机器 想要引用上面 1.1的服务

<!-- 配置dubbo服务 -->
	<dubbo:application name="xxx-manager-web" />

	<!-- 使用广播 -->
	<dubbo:registry address="multicast://224.5.6.7:1234" />

	<!-- 声明要调用的服务,timeout是设置连接超时最长时间,如果不设置,默认一秒超时,重试3次 -->
	<dubbo:reference interface="com.xxx.TestService"
		id="testService" timeout="1000000" />


例子:


一般生产环境就是将这个服务类,打包成jar发布到服务器,使用main来启动服务。


消费者:


reference的interface必须和服务端的 暴露接口一模一样。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值