Spring Cloud失散多年的哥哥Dubbo学习笔记
Spring Cloud失散多年的哥哥Dubbo
随着互联网项目用户量的急剧增长,访问并发良突然暴增,将一个应用使用多个独立的工程共同实现的系统架构,称为SOA系统架构,各个工程可以允许在不同的机器上,他们之间可以通过RPC协议(远程过程调用协议),完成通信,Dubbo就是RPC协议的实现着之一
Dubbo的简单介绍
Dubbo是阿里的一个开源的服务框架,可以实现应用拆分为多个工程, 通过RPC实现服务间的输出和输入,可以和Spring框架无缝连接,官方原话"Dubbo是一款高性能,轻量级的开源JavaRPC框架,他提供了三大核心能力:”面向接口的远程调用“,”智能容错和负载均衡“,”服务的自动注册和发现““。
2011年开源,成为同类框架佼佼者
2014年10月30日,发布了2.4.11版本后,Dubbo停止更新
2017年9月7号,在GitHub上发布了2.5.4版本
2017年10月的云栖大会上,阿里向外公开消息:将其列为重点项目维护
2018.2.15,也是酒大年三十,Dubbo进入Apach孵化器
Dubbo的四大组件
Provider:服务的暴露者,也就是提供服务的人
Consumer:服务的调用方,也就是服务的消费者
Registry:服务的注册与发现中心,比如Zeekkper,Eureka,Redis,官方推荐使用ZK
Monitor:服务监控中心,统计服务的调用次数、调用时间等信息的日子服务等


官网中的流程图的解释:
0.start :Dubbo服务器启动,Spring容器首先会创建服务提供者
1.register :服务提供者创建好了以后,将该服务注册到注册中心,这个过程称为服务暴露
2.subscribe:服务消费者启动后,首先回想注册中心订阅相关的服务
3.notify:消费订阅的服务在注册中心中可能还没有注册,但不不影响,因为是虚线,代表异步,并不会阻塞,还可以订阅其他服务,当相应的服务被注册到注册中心后,注册中心会马上通知订阅了该服务的消费者,
4.invoke:消费者以同步的方式调用服务提供者的请求,消费者通过远程注册中心的服务列表调用远程服务,Dubbo会基于负载均衡算法,选一台服务提供者出路消费者的请求,因为是同步的,所以在服务提供方没有返回服务结果之前,消费者出路阻塞状态,知道服务提供者返回服务结果,或者等待超时,若是等待超时,Dubbo会再选一个服务提供者为消费者提供服务,当然以我Spring cloud的基础来看:(如果服务迟迟不响应,可能造成线程用完要么直接宕机要么服务降级)
5.count 每个消费者对各个服务的累积调用次数,调用时间,每个服务提供者的服务被调用的次数和时间,消费者和提供者都会将数据定时发送给监控中心,这些数据都可以在Dubbo的可视化界面看到
Dubbo的三二一(了解内容)
Dubbo的三大领域模型
为了对Dubbo整体架构叙述的方便,Dubbo抽象出了三个领域模型
Protocol服务域:是invoker暴露和引用的主功能入口,它负责invoker的生命周期管理
Invoker实体域:是Dubbo的核心模型,它代表一个可执行体,可向他发起invoke调用,它有可能是一个本地的实现,也有可能是一个远程的实现,也可能是一个集群实现
Invacation会话域:它持有调用过程中的变量,比如方法名,参数等
Dubbo的两大设计原则
采用Microkernel + Plugin模式,Microkernel 只负责组装Plugin,Dubbo自身的功能也是通过扩实现的,也就是Dubbo的所有功能点都可以被用户自定义扩展和替换
采用URL作为配置信息的统一公司,所有扩展点都是通过传递URL携带配置信息
Dubbo的一个整体架构

Dubbo的整体架构如上所示,总共分了10层,最上面Service层是Dubbo开发分布式服务开发着实现业务逻辑的接口层,图中淡蓝色背景为服务消费者使用的接口,右边淡青色背景为服务提供者使用的接口,位于中轴线的为双方都要使用到的接口。
Spring Cloud失散多年的哥哥Dubbo学习笔记的更多相关文章
- 《深入理解Spring Cloud与微服务构建》学习笔记(二十)~配置中心Spring Cloud Config
本例重新创建项目,构建一个空的mavan工程. 一.Config Server 从本地读取配置文件 新建一个moudle config_server ,pom添加依赖 <dependency ...
- Spring Cloud Alibaba生态探索:Dubbo、Nacos及Sentinel的完美结合
@ 目录 背景 一.项目框架 1.1 采用IDEA和Maven多模块进行项目搭建 1.2 模块管理及版本管理 二.微服务公共接口 2.1 定义一个公共接口Api 2.2 pom.xml 2.3 Goo ...
- Dubbo学习笔记0:RPC框架Dubbo介绍
整体来说,一个公司业务系统的演进流程基本都是从单体应用到多应用.在单体应用时,不同业务模块相互调用直接在本地JVM进程内就可以完成,而变为多个应用时,相互之间进行通信就不能简单的进行本地调用了,因为不 ...
- 阿里巴巴分布式服务框架dubbo学习笔记
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的 ...
- Dubbo学习笔记11:使用Dubbo中需要注意的一些事情
指定方法异步调用 前面我们讲解了通过设置ReferenceConfig的setAsync()方法来让整个接口里的所有方法变为异步调用,那么如何指定某些方法为异步调用呢?下面讲解下如何正确地设置默写方法 ...
- Dubbo学习笔记6:Dubbo增强SPI与SPI中扩展点自动包装的实现原理
在Dubbo整体架构分析中介绍了Dubbo中除了Service和Config层为API外,其他各层均为SPI,为SPI意味着下面各层都是组件化可以被替换的,也就是扩展性比较强,这也是Dubbo比较好的 ...
- Dubbo学习笔记5:Dubbo整体框架分析
Dubbo的分层架构 本文将简单介绍Dubbo的分层架构设计,如下图是Dubbo官方的整体架构图: Dubbo官方提供的该架构图很复杂,一开始我们没必要深入细节,下面我们简单介绍下其中的主要模块. 其 ...
- Dubbo学习笔记4:服务消费端泛化调用与异步调用
本文借用dubbo.learn的Dubbo API方式来解释原理. 服务消费端泛化调用 前面我们讲解到,基于Spring和基于Dubbo API方式搭建简单的分布式系统时,服务消费端引入了一个SDK二 ...
- Dubbo学习笔记3:Dubbo管理控制台与监控中心的搭建
Dubbo源码下载与编译 本文来讲下如何在Dubbo源码编译后,得到用于搭建管理控制台的war包和监控平台的jar包. 首先需要到Github上下载Dubbo的源码,解压后如下: 在dubbo-2.5 ...
随机推荐
- 对TextVIew中特定字符串设定onTouchEvent方法
上面是Iphone备忘录的图,笔者之前接到一个需求是实现点击文本框里的数字,弹出一个类似上图的按钮,显示出复制,要求是这个按钮的位置必须是根据你点击的位置进行定位(为什么这么说,是因为我们不可能把按钮 ...
- centos6.8 oracle 11.2.0.4 11g安装
配置Linux系统参数 配置阿里云yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ...
- 杭电多校第一场-B-Operation
题目描述 There is an integer sequence a of length n and there are two kinds of operations:0 l r: select ...
- VS项目种类GUID
在VS里新建的类库项目,在添加新建项时往往找不到模板.比如想新建一个WPF的资源词典文件,VS认为该类库项目不是WPF类型,就没有列出新建资源词典的模板.解决办法是在csproj文件的<Prop ...
- MapReduce计算原理及步骤
步骤:input从HDFS读取内容, split()切割分片内容,key/value, map()方法对输入的key/value进行计算处理,先写到内存,在内存中进行分区.排序,之后将Key/valu ...
- 官网下载 Linux 上需要的 MySQL的步骤
1.输入MySQL 官网地址 https://dev.mysql.com/ 选择 download ->Community->MySQL Community Server 点击 MyS ...
- Python:Logging日志处理
程序中,需要添加日志来记录大量信息. import logging # 第一步:创建logger self.logger = logging.getLogger() self.logger.setLe ...
- centos6|centos7防火墙区别 | 网络配置区别
CentOS 6 Linux防火墙 service iptables status (功能描述:查看防火墙状态) chkconfig iptables –list (功能描述:查看防火墙开机启动状态) ...
- 禁用NX软件启动欢迎界面[转载]
环境变量UGII_BACKGROUND_URL NONE 转载自https://www.ugnx.net/wt/414
- ARC032 D - アットコーダーモンスターズ
https://arc032.contest.atcoder.jp/tasks/arc032_4# 切比雪夫距离,放在3000*3000的平面上, 一个集合就是恰好包含这个集合的矩形,价值是矩形长.宽 ...