目录

负载均衡

服务超时

集群容错

服务降级

本地存根

本地伪装

参数回调

异步调⽤

泛化调⽤

泛化服务

Dubbo中的REST

管理台

动态配置

服务路由

什么是蓝绿发布、灰度发布


负载均衡

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/loadbalance/
如果在消费端和服务端都配置了负载均衡策略,以消费端为准。
这其中⽐较难理解的就是最少活跃调⽤数是如何进⾏统计的?
讲道理 ,最少活跃数应该是在 服务提供者端 进⾏统计的,服务提供者统计有多少个请求正在执⾏中。
但在Dubbo中,就是不讲道理,它是在消费端进⾏统计的,为什么能在消费端进⾏统计?
逻辑是这样的:
1. 消费者会缓存所调⽤服务的所有提供者,⽐如记为p1、p2、p3三个服务提供者,每个提供者内都有⼀个属性记为active,默认位0
2. 消费者在调⽤次服务时,如果负载均衡策略是leastactive
3. 消费者端会判断缓存的所有服务提供者的active,选择最⼩的,如果都相同,则随机
4. 选出某⼀个服务提供者后,假设位p2,Dubbo就会对p2.active+1
5. 然后真正发出请求调⽤该服务
6. 消费端收到响应结果后,对p2.active-1
7. 这样就完成了对某个服务提供者当前活跃调⽤数进⾏了统计,并且并不影响服务调⽤的性能

服务超时

在服务提供者和服务消费者上都可以配置服务超时时间,这两者是不⼀样的。
消费者调⽤⼀个服务,分为三步:
1. 消费者发送请求(⽹络传输)
2. 服务端执⾏服务
3. 服务端返回响应(⽹络传输)
如果在服务端和消费端只在其中⼀⽅配置了timeout,那么没有歧义,表示消费端 调⽤ 服务的超时时间,消费端如果超过时间还没有收到响应结果,则消费端会抛超时异常, 但 ,服务端不会抛异常,服务端在执⾏服务后,会检查执⾏该服务的时间,如果超过timeout,则会打印⼀个超时⽇志。服务会正常的执⾏完。
如果在服务端和消费端各配了⼀个timeout,那就⽐较复杂了,假设
1. 服务执⾏为5s
2. 消费端timeout=3s
3. 服务端timeout=6s
那么消费端调⽤服务时,消费端会收到超时异常(因为消费端超时了),服务端⼀切正常(服务端没有超时)。

集群容错

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/fault-tolerent-strategy/
集群容错表示:服务消费者在调⽤某个服务时,这个服务有多个服务提供者,在经过负载均衡后选出其中⼀个服务提供者之后进⾏调⽤,但调⽤报错后,Dubbo所采取的后续处理策略。

服务降级

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/service-downgrade/
服务降级表示:服务消费者在调⽤某个服务提供者时,如果该服务提供者报错了,所采取的措施。
集群容错和服务降级的区别在于:
1. 集群容错是整个集群范围内的容错
2. 服务降级是单个服务提供者的⾃身容错

本地存根

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/local-stub/
本地存根,名字很抽象,但实际上不难理解,本地存根就是⼀段逻辑,这段逻辑是在服务消费端执⾏的,这段逻辑⼀般都是由服务提供者提供,服务提供者可以利⽤这种机制在服务消费者远程调⽤服务提供者之前或之后再做⼀些其他事情,⽐如结果缓存,请求参数验证等等。

本地伪装

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/local-mock/
本地伪装就是Mock,Dubbo中Mock的功能相对于本地存根更简单⼀点,Mock其实就是Dubbo中的服务容错的解决⽅案。

参数回调

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/callback-parameter/
官⽹上的Demo其实太复杂,可以看课上的Demo更为简单。
⾸先,如果当前服务⽀持参数回调,意思就是:对于某个服务接⼝中的某个⽅法,如果想⽀持消费者在调⽤这个⽅法时能设置回调逻辑,那么该⽅法就需要提供⼀个⼊参⽤来表示回调逻辑。
因为Dubbo协议是基于⻓连接的,所以消费端在两次调⽤同⼀个⽅法时想指定不同的回调逻辑,那么就需要在调⽤时在指定⼀定key进⾏区分。

异步调⽤

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/async-call/
理解起来⽐较容易,主要要理解 CompletableFuture ,如果不理解,就直接把它理解为Future
其他异步调⽤⽅式: https://mp.weixin.qq.com/s/U3eyBUy6HBVy-xRw3LGbRQ

泛化调⽤

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/generic-reference/
泛化调⽤可以⽤来做服务测试。
在Dubbo中,如果某个服务想要⽀持泛化调⽤,就可以将该服务的generic属性设置为true,那对于服务消费者来说,就可以不⽤依赖该服务的接⼝,直接利⽤GenericService接⼝来进⾏服务调⽤。

泛化服务

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/generic-service/
实现了GenericService接⼝的就是泛化服务

Dubbo中的REST

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/rest/
注意Dubbo的REST也是Dubbo所⽀持的⼀种协议。
当我们⽤Dubbo提供了⼀个服务后,如果消费者没有使⽤Dubbo也想调⽤服务,那么这个时候我们就可以让我们的服务⽀持REST协议,这样消费者就可以通过REST形式调⽤我们的服务了。

管理台

github地址: https://github.com/apache/dubbo-admin

动态配置

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/config-rule/
注意动态配置修改的是服务 参数 ,并不能修改服务的协议、IP、PORT、VERSION、GROUP,因为这5个信息是服务的标识信息,是服务的身份证号,是不能修改的。

服务路由

官⽹地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/routing-rule/

什么是蓝绿发布、灰度发布

https://zhuanlan.zhihu.com/p/42671353

dubbo系列二:Dubbo的基本应⽤与⾼级应⽤相关推荐

  1. Dubbo(十二)dubbo的服务版本配置以及本地存根使用介绍

    一.接口服务多版本管理 在实际项目场景中在发布生产之前会存在一个过渡的灰度版本环境,dubbo也一样在接口服务升级时,可以实现两个版本的服务接口,指定不同的版本号.当少量的消费端调用引用高版本后使用无 ...

  2. Dubbo系列之Dubbo原理简介

    文章目录 一.分布式基本知识 1.1) 架构演变 1.2).分布式基本概念 二.RPC简介 2.1) RPC概念 2.2) RPC核心模块 三.Dubbo原理简介 3.1) Dubbo简介 3.2) ...

  3. 【dubbo系列】dubbo协议与http协议对比

    前言 ​ 什么是协议?协议可以认为是一种语言,是一种交互的标准.比如A和B互相发手机短信.A和B必须互相知道对方手机号(IP地址),知道手机号后,全部使用汉语(协议)即可互相通信. ​ http即超文 ...

  4. java tts引擎_Android TTS系列二——如何开发一款系统级tts引擎?

    上篇文章Android TTS系列一--如何让app具备tts能力分享了如何通过第三方tts sdk和Android speech包下的接口来拥有tts能力,这次分享下如何开发一款系统级tts引擎.代 ...

  5. php dubbo 接口测试工具,dubbo服务自动化测试搭建

    java实现dubbo的消费者服务编写:ruby实现消费者服务的接口测试:通过消费者间接测试dubbo服务接口的逻辑 内容包括:dubbo服务本地调用环境搭建,dubbo服务启动,消费者部署,脚本编写 ...

  6. Apache Dubbo系列:泛化调用

    上一章,我们讲到了Dubbo的线程池策略,本章我们一起探讨,Dubbo如何实现泛化调用的.主要内容包括: 1.什么是泛化调用 2.泛化调用的三种方式 3.如何使用 4.源码分析 推荐阅读: Apach ...

  7. Dubbo系列(二)源码分析之SPI机制

    Dubbo系列(二)源码分析之SPI机制 在阅读Dubbo源码时,常常看到 ExtensionLoader.getExtensionLoader(*.class).getAdaptiveExtensi ...

  8. 深度学习Dubbo系列(入门开篇)

    2019独角兽企业重金招聘Python工程师标准>>> 此文档为系列学习文档 这系列文档详细讲解了dubbo的使用,基本涵盖dubbo的所有功能特性.在接下来的文章里会详细介绍. 如 ...

  9. Dubbo (二) ---------- Dubbo 框架

    目录 一.Dubbo 概述 二.基本架构 三.Dubbo 支持的协议 四.第一个 Dubbo 项目 直连方式 1) 创建服务提供者 :订单服务 2) 创建服务消费者 :商品网站 五.dubbo 服务化 ...

最新文章

  1. spring-aop-01
  2. leetcode-21-合并两个有序链表
  3. Codeforces Round #446 (Div. 1) B. Gluttony 构造 + 补集思想
  4. Diango博客--19.使用 Docker部署项目到线上服务器
  5. android广播注册源码,android 广播源码简要分析-注册
  6. 制图折断线_学不好CAD怎么办?老师傅教你CAD制图规范,新手也能秒懂
  7. Qt中SQL语句update同时更新多字段及设置字段值为空的方法
  8. linux 查看系统位数命令,怎么用命令行查看Linux系统位数
  9. CentOS 6U7分区大于2TB的磁盘以及挂载大于16TB分区磁盘的解决方案
  10. Axure 基本功能
  11. php爬取金山词霸发音,php金山词霸api
  12. kubectl查看node状态_【大强哥-k8s从入门到放弃03】查看K8S集群基本信息
  13. iOS7 tabbar遮盖tableview的cell解决方法
  14. 信息学奥赛一本通:1084:幂的末尾
  15. 打印机管理系统解决方案
  16. 开源php官方团队解散,php语言大厦将倾?
  17. oracle asm 缺省用户,oracle asm自动存储使用及管理说明(下)
  18. WEB端显示摄像头实时图像数据
  19. 南非认证_现在...南非
  20. LWIP (chapter 2.01) pbuf数据包缓存

热门文章

  1. # Python 字符串数据(二进制编码数据)格式转换及解析
  2. OkHttp3简单使用:请求和响应,post,get
  3. 老舍|回忆初恋,只一眼就一生
  4. 数据结构习题:找出临界点之间的最小和最大距离
  5. 【笔记】4. 离散傅里叶变换及其性质
  6. 使用AspectJ LTW(Load Time Weaving)【转载】
  7. 打车软件为抢入口开战
  8. 手游为什么老被攻击?手游DDOS防护方法
  9. 通用量子计算机任重道远的研发之路
  10. cumulative match score