美文网首页工具和方法程序员@IT·互联网
Dubbo 到底是用来做什么的?

Dubbo 到底是用来做什么的?

作者: 我是小徐同学 | 来源:发表于2017-08-20 22:47 被阅读4252次

这篇文章争取用比较浅显易懂的语言来描述 Dubbo,但是并不涉及具体的操作步骤,本人只是希望大家能对 Dubbo 这个概念有个更好的理解,那么之后你在使用 Dubbo 的时候才不会那么困惑。

Dubbo 是什么?

Dubbo 是阿里出的。为什么 Dubbo 成名了呢?阿里内部使用了它好长时间,一直木有对外公开,后来阿里面的工程师离职了,就把 Dubbo 给带出来了,后来阿里也就把 Dubbo 公开了。

官方说法,Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案。RPC 指的是远程调用协议,也就是说两个服务器交互数据。

Dubbo 能做什么?

那么,我们究竟是在什么地方使用到的 Dubbo 呢?大家请看下面的流程图:

流程图

简单来说,用户发送的请求转交给 Nginx,然后 Nginx 决定将请求发送那个服务器(此处为 Tomcat),然后 Tomcat 将请求发送给 Dubbo,由它来决定继续调用哪个 service 层去数据库读取数据。

相信大家对于 Dubbo 作用于何处应该有个大体的了解了。

Dubbo 的使用原理解析

官方有提供的 Dubbo 的架构图。

架构图
  • Consumer:消费者
  • Provider:生产者
  • Registry:注册中心(相当于之前的等待--wait 和唤醒---notify)
  • Monitor:监控中心
    执行的顺序:
  • 0:先启动生产者;
  • 1:生产者将自己启动的消息报告给注册中心;
  • 2:消费者启动,通知注册中心;
  • 3:注册中心通知消费者有生产者了;
  • 4:消费者消费(调用方法);
  • 5:生产者和消费者将自己的调用信息和被调用信息发送监控中心;

要说明的是,必须要先启动生产者,就像咱们平常生活一样,只有生产了某样东西你才能去消费,对吧。

可能会有读者有疑问,这个生产者、消费者和上面的流程图有什么关系,或者说,生产者、消费者对应流程图中的哪个部分呢?

在这里我想用一些拟人化的手法解释一下,效果或许会更好点。

生产者相当于 service 层,拿上面的流程图来说,可以看成有三个生产者:service、service_2 和 service_3。

随便拿其中一个生产者举例子,比如说 service_2,它能够利用 dao 层去数据库取出数据,也就是说生产者可以拿到他人需要的数据,这也正符合「生产者」这个名词,service_2 可以 “生产” 出消费者需要的东西(数据)。

生产者在产生之后会先去 Registry 这个地方去「报到」,告诉Registry 它能生产哪些物品(即取出哪些数据)。

消费者相当于 controller 层,暂且把消费者叫做 c。如果 c 想要买某样东西(可以把这样东西看成数据库中的数据),但是不知道该去哪里买,那么这个时候,它就会去 Registry 这个地方,告诉 Registry 它需要这个东西。

由于生产者产生之后在这里「报到」过了,所以 Registry 会告诉消费者 c,生产者 service_2 可以给你你想要的东西(数据),然后消费者 c 就会去找生产者 service_2 而不去找其他两个生产者,这样一来 service 层的压力就会小很多。

不知道这么说大家有没有能够明白一点。

还有就是,不论是生产者还是消费者,产生之后都要去 Registry 报到,不然就是黑户哟~

另外,它俩都要受到 Monitor(监控中心)的监控,以监控它俩是否离奇失踪,哈哈。

Dubbo 的存在简单来说就是要减小 service 层的压力。

文章首发于公众号:徐老师福利课堂。公众号后台回复:java,可以免费获得优质Java学习资料,助你提升能力!

相关文章

  • Dubbo 到底是用来做什么的?

    这篇文章争取用比较浅显易懂的语言来描述 Dubbo,但是并不涉及具体的操作步骤,本人只是希望大家能对 Dubbo ...

  • 简单整合:zookeeper+dubbo

    原因:dubbo建议使用zookeeper作为服务注册中心。 zookeeper:是用来做负载均衡和注册中心,那一...

  • dubbo+zookeeper 实战Demo

    讲解一下当前流行的分布式开发所用到分布式服务框架dubbo和zookeeper。至于这两个框架到底是做什么的。自行...

  • 朋友到底是用来干什么的?

    今天看了一段复旦大学女教师的视频,关于朋友的讲解,听得很有感觉。朋友到底是用来干什么的?我们多数人都会说朋友是用来...

  • 简书到底是用来写什么的?

    从朋友那儿得知简书,因我是个对什么事情都有好奇心的人,于是就怀揣着好奇心来到简书。如标题所言,我先知道简书到底是用...

  • Dubbo学习笔记

    1. Dubbo入门 Dubbo是一款高性能Java RPC框架,常用来构建分布式系统。Dubbo为开发者提供了三...

  • dubbo入门第一课--简单项目

    项目里在使用dubbo,我一直想要知道dubbo是干什么的,怎么用,具体的原理。那么第一课,我首先来介绍dubbo...

  • 大学到底是用来干什么的?

    中国没有真正的大学 最近在网上看到武汉大学新闻系主任夏琼教授辞职的消息。 尊敬的学院领导: 本人因任新闻系...

  • Node.js到底是用来做什么的

    第一次更新 查漏补缺昨晚零时写的 辣鸡输入法导致错别字太多。 Node.js的到底是用来做什么的 在阐述之前我想放...

  • 项目开发中 常用es6--API【必会之对象的拓展符】人送外号

    es6中的三个点到底是用来做什么的?到底是龙是马拉出来溜溜。。。 对象的拓展运算符拓展运算符(...)用于取出参数...

网友评论

    本文标题:Dubbo 到底是用来做什么的?

    本文链接:https://www.haomeiwen.com/subject/ssfqdxtx.html