一、dubbo是什么?

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

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

你想一下,以前什么的都在一个服务器上,调用方法直接就自然而然调用了,没啥问题。现在因为需求增多拆分了这么多个,部署在不同的服务器上,那是不是相对以前都在一个服务器上,现在分布式后,web层调用service层的服务变成了远程调用?那怎样像以前那样都在一个服务器上自然而然调用方法呢?dubbo来解决。这就是下面dubbo的好处。

二、Dubbo的好处?

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

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

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

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

三、dubbo架构图如下所示:

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

节点角色说明:

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

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

如图,我们可以简单理解为web1234需要调用service1234的服务,所以web1234是消费者,service1234是生产者。

那如果按照上面,消费者调用生产者的服务,那是不是如下图:

你看着晕不晕?晕不晕?晕不晕?反正我是晕了,万一分布式得更多呢?,所以我们需要他:

Registry(注册中心): 服务注册与发现的注册中心。dubbo推荐的是zookeeper。什么是zookeeper?zookeeper是用于分布式中一致性处理的框架。更多的可以查看我之前的文章:这么说吧,zookeeper 很简单,其实就是个框架,是一致性处理用的。简单的讲,zookeeper就是个中介,卖楼的(生产者)把楼盘信息放在中介(注册中心)那里,想买楼的(消费者)去中介那里获得楼盘资源清单。于是,我们的图变成了这样:

是不是好很多了?还不够, 我们还需要个监控中心(干嘛用的?当然是监控用的,调用失败怎么办?挂了怎么办?): Monitor: 统计服务的调用次调和调用时间的监控中心。(不画图了)

然后,Provider放在容器里运行,就叫做Container服务运行容器。(不画图了)

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

自己脑海里按照上图走了一遍后,看看自己想的是不是和下面说明一样。

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

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

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

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

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

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

转载:https://www.cnblogs.com/a8457013/p/7818925.html

Dubbo+zookeeper 基础讲解的更多相关文章

  1. maven+dubbo+zookeeper 基础实例

    1.maven  引入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...

  2. 微服务的一种开源实现方式——dubbo+zookeeper

    转自: http://blog.csdn.NET/zhdd99/article/details/52263609 微服务架构成了当下的技术热点,实现微服务是要付出很大成本的,但也许是因为微服务的优点太 ...

  3. 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

    平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis ...

  4. 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis

     分类: 分布式技术(3)    目录(?)[+]   平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...

  5. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  6. MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建

    : 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程  API    Pom.xml:不用引用任何东西  Provider    Pom.xml:要denpend ...

  7. SpringBoot分布式:Dubbo+zookeeper

    西部开源-秦疆老师:SpringBoot + Dubbo + zookeeper 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 基础知识 ...

  8. Zookeeper系列一:Zookeeper基础命令操作

    有些事不是努力就可以改变的,五十块的人民币设计的再好看,也没有一百块的招人喜欢. 前言 由于公司年底要更换办公地点,所以最近投了一下简历,发现面试官现在很喜欢问dubbo.zookeeper和高并发等 ...

  9. dubbo+zookeeper示例记录

    提示:要直接看搭建例子的可以跳到 三 一.项目架构的发展 传统的mvc架构项目将整个系统功能实现全部写在一个项目中,部署在一个机器上,随着用户量的增涨,单个项目服务器无法承受暴增的用户请求时需要增加服 ...

随机推荐

  1. 导入的Java Web项目提示找不到javax.servlet.http.*包

    在网上下载了个Java web项目,导入到eclipse发现以下错误 解决办法: 1.右击项目,进入Configure Build Path 2.在Libraries标签下点击Add Library. ...

  2. 3分钟搞定高逼格PPT封底——简约型

    封底想要高逼格又简约? 发现了这五类,看完不会制作算我输.   一.纯文字 白色背景下,一段结束语,或提问或感谢.       重叠文字,看上去非常有创意. 没有操作难度,END放大字号,颜色设置为浅 ...

  3. idhttp文件的上传和下载

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  4. 第4章 ZK基本特性与基于Linux的ZK客户端命令行学习

    第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-1 zookeeper常用命令行操作 4-2 session的基本原理与create命令的使用

  5. UML-操作契约总结

    1.操作契约属于什么? 属于用例模型 如图: 2.操作契约在那个阶段引入? 在细化阶段,并非初始阶段. 3.哪些需要写操作契约? 1).最复杂的系统操作 2).最微妙的系统操作

  6. 关于电脑识别不出自己画的板子上的USB接口问题

    现在在画一个Cortex-A5的底板,现在已经完成,正在测试各个模块,发现USB插上后,电脑提示报错,如下: 网上查了很多,有的说是配置问题,有的说是走线问题,首先配置肯定没问题,因为同一台电脑,在买 ...

  7. sol - 0x60,61,62

    [例题]走廊泼水节 设当前扫描到边x,y,长度为z,x所处的并查集为Sx,y所处的并查集为Sy: 对于任意u属于Sx,v属于Sy,我们可以知道u,v之间必连一条边 但是我们要在保证x,y之间的边属于唯 ...

  8. macbook 一些php相关操作

    开启php: https://jingyan.baidu.com/article/67508eb434539f9cca1ce4da.html 配置多虚拟主机:  https://jingyan.bai ...

  9. 利用 wave 库 对音频进行格式处理

    import wave r = r"D:\沫沫酱 - 旧伤口.wav" # 一个.wav格式文件 with wave.open(r, "rb") as f: # ...

  10. scp 碰到的问题

    将 nodejs 的全局目录scp复制到另外一台机器部署代码, 发现运行报错, 提示缺少依赖模块. 检查了很久, 没发现问题. 后来发现,软链接 scp后不再是软链接而是对应文件, 导致相对路径改变!