java 远程调用dubbo,这么说吧,dubbo很简单,其实就是一个远程服务调用的框架

这么说吧,dubbo很简单,其实就是一个远程服务调用的框架

ceba5ddc7c06ca0341ea01ef14bd2fab.png

极简教程,五分钟快速入门之dubbo,为后面的dubbo实战以及dubbo源码分析作铺垫。

a44f262db4993c574624bb9f00ce1aa9.pngjava

1、dubbo是什么?

1)本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架。mysql

既然是新手教学,确定不少同窗不明白什么是分布式和远程服务调用,为何要分布式,为何要远程调用。我简单画个对比图说明(图1看到图2。画板画的,勿喷)。

c3e55095bf59e7d8a439e390768042c3.png

你想一下,之前什么的都在一个服务器上,调用方法直接就天然而然调用了,没啥问题。

如今由于需求增多拆分了这么多个,部署在不一样的服务器上,那是否是相对之前都在一个服务器上,如今分布式后,web层调用service层的服务变成了远程调用(由于你的web层和service层都部署在不一样机器了)?那怎样像之前那样都在一个服务器上天然而然调用方法呢?dubbo来解决。这就是下面dubbo的好处。程序员

2、Dubbo的好处?

透明化的远程方法调用,就像调用本地方法同样调用远程方法,只需简单配置,没有任何API侵入。

软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,下降成本,减小单点。

服务自动注册与发现,再也不须要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,而且可以平滑添加或删除服务提供者。(下面讲解)

3、dubbo架构图以下所示:

讲解他的架构图以前,咱们先普及下几个概念。

节点角色说明:web

Provider(生产者): 暴露服务的服务提供方。

Consumer(消费者): 调用远程服务的服务消费方。

以下图,咱们能够简单理解为web1234须要调用service1234的服务,因此web1234是消费者,service1234是生产者。

0ddaebab50ed579d567783aea955ed69.png面试

那若是按照上面,消费者调用生产者的服务,那是否是以下图:

4e33ed9541ae11e68dd9bae186f0f5de.pngredis

你看着晕不晕?晕不晕?晕不晕?反正我是晕了,万一分布式得更多呢?,因此咱们须要他:

Registry(注册中心): 服务注册与发现的注册中心。dubbo推荐的是zookeeper。什么是zookeeper?zookeeper是用于分布式中一致性处理的框架。更多的能够查看我以前的文章。

我这里简单讲下,zookeeper就是个中介,卖楼的(生产者)把楼盘信息放在中介(注册中心)那里,想买楼的(消费者)去中介那里得到楼盘资源清单(生产者信息等)。

固然!要注意的是!咱们平时买楼是经过中介去买卖,可是消费者并非从中间件(通常都是Zookeeper)上去拿数据,而是服务消费者从中间件上拿到可用的服务生产者的集群地址,再从集群地址中选出一个进行直连。

因此插播个面试题:若是注册中心集群都挂掉,发布者和订阅者之间还能通讯么?(这个应该很简单吧)

因而,咱们的图变成了这样:

92fe73abf35442c2d7e2b58e8387b09b.png

是否是好不少了?还不够, 咱们还须要个监控中心(干吗用的?固然是监控用的,调用失败怎么办?挂了怎么办?): Monitor——统计服务的调用次调和调用时间的监控中心。(不画图了)

而后,Provider放在容器里运行,就叫作Container服务运行容器。(不画图了)算法

到这里,dubbo有关的角色就讲完了:spring

Provider(生产者): 暴露服务的服务提供方。

Consumer(消费者): 调用远程服务的服务消费方。

Registry(中介:注册中心)

Monitor(统计服务的调用次调和调用时间的监控中心监控中心)

Container:服务运行容器。

4、最终dubbo架构,如图(从0开始看起):

63fe6835f7e54a7d4148b55909775a48.png

本身脑海里按照上图走了一遍后,看看本身想的是否是和下面说明同样。

0.服务容器负责启动,加载,运行服务提供者。

服务提供者(生产者)在启动时,向注册中心注册本身提供的服务。

服务消费者在启动时,向注册中心订阅本身所需的服务。

注册中心返回服务提供者地址列表给消费者,若是有变动,注册中心将基于长链接推送变动数据给消费者。

服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,若是调用失败,再选另外一台调用。

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

本次讲解就到这里。sql

本公众号已开设以下二十大专题,欢迎查看相关专题!

【springboot专题】【spring源码】

【mysql优化专题】【HTTP协议】

【架构技术专题】【多线程专题】

【dubbo专题】【dubbo源码专题】

【JVM调优专题】【HTTP专题】

【设计模式专题】【高并发专题】

【架构技术专题】【Lucene专题】

【数据结构专题】【redis专题】

【mq中间件专题】【netty专题】

【java面试专题】【zookeeper】

5cf66bbec87e41ab89855ecb.html

闷骚的大屌程序员富一代们↓↓↓↓

点个赞、留个言再走可好↓↓

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值