Dubbo

news2025/7/27 3:57:32

致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案在这里插入图片描述
使用zookeeper作为注册中心registry

dubbo.config.annotation下相关注解

  • @Service:被该注解修饰的类,会对外发布,包括IP、端口、路径到注册中心
  • @Reference:远程注入,完成以下操作:
    1. 从zookeeper注册中心获取对应类的访问url
    2. 进行远程调用RPC
    3. 将结果封装为一个代理对象,给变量进行赋值

dubbo admin

监控平台默认用户名密码:root/root

序列化

  • implements Serializable
  • transient:被该关键字修饰的变量不会被序列化
  • 生产者和消费者传输对象,需要在一个独立的模块(工程)中定义,降低耦合度

地址缓存

  • 先问个问题:如果注册中心挂了,消费者是否可以正常访问服务提供者?
  • 答案是可以的,因为dubbo服务消费者在第一次调用时,会将服务提供者的地址缓存到本地,以后再调用就不用访问注册中心。
  • 当服务提供者地址发生变化时候,注册中心会主动通知服务消费者,即执行上方Dubbo架构图的3操作Notify。

超时与重试

高峰流量下可能会存在问题:

  1. 某个服务消费者在调用提供者时,由于一些原因发生了阻塞、等待的情况,消费者会一直等待提供者响应。
  2. 大量请求同时请求这个链路调用,会造成大量的线程堆积,从而形成雪崩。

Dubbo如何解决请求超时?

  • 设置超时时间,在这个时间内,如果无法完成访问或者服务提供者无法响应消息,则自动断开连接。
  • 超时时间默认1000ms
  • 服务提供方注解上配置超时:@Service(timeout=3000)
  • 服务消费方注解上配置超时:@Reference(timeout=2000)
  • 如果服务消费方和提供方同时配置了超时时间,那么肯定以时间较短者作为超时判断标准。

Dubbo如何解决超时重试?

  • 使用retires定义重试次数:@Service(timeout = 3000, reties = 3),表示3秒内重试3次,加上第一次请求,一共是4次。
  • 如果不定义reties,默认的重试次数的2次。

多版本

灰度发布:加入有三个服务消费者C1 C2 C3,同时调用一个服务提供者P,如果P升级成P2,那么可以考虑先让一部分消费者访问P2,如果一段时间没有问题了,再把其他所有消费者全部引流至P2。
这时候就牵扯到版本的概念了,version。怎么配置版本?

  1. 配置服务提供方P:@Service(version = "V1")
  2. 配置服务提供方P2:@Service(version = "v2")
  3. 配置服务消费者C1:@Reference(version = "v2")

负载均衡

在Dubbo中,服务提供者的负载均衡分为四种类型,默认是Random:

  1. Random:按照权重随机,符合正态分布,权重高的访问概率更大。
  2. RoundRobin:安权重轮询,例如三台机器的权重分别为100/200/100,那么访问顺序可能为:1、2、3、2
  3. LeastActive:最少活跃调用次数,相同活跃数的随机, 消费者会记录各个消费提供者最后一次响应所需的时间,选择响应时间最短的进行访问。
  4. ConsistentHash:一致性Hash,相同的参数总是会发到同一个服务提供者

接下来仅简单演示Random怎么设置:

  • 服务提供者P1:@Service(weight = 100 )
  • 服务提供者P2:@Service(weight = 200 )
  • 服务提供者P3:@Service(weight = 100 )
  • 消费者C:@Reference(loadbalance="random")

集群容错模式

  • Failover Cluster(默认):失败重试,当出现失败,尝试连接集群中其他服务,默认重试2次,读取retries配置,一般用在读操作。
  • Failfast Cluster:快速失败,仅发起一次调用,失败立即报错,通常用于写操作。
  • Failsafe Cluster:安全失败,出现异常时候,直接忽略,返回一个空结果,常用于写入日志操作等。
  • Failback Cluster:失败自动回复,后台记录失败请求,定时重发。
  • Forking Cluster:并行调用多个服务器,只要一个成功即返回。
  • Broadcast Cluster:广播调用所有提供者,逐个调用,任意一个报错就报错。
    定义容错模式的语法:@Reference(cluster = "failover")

服务降级

  • mock="force:return null"表示消费方如果调用该服务,直接就返回null,压根就不发起远程调用,可以用来屏蔽一些不重要的服务,如日志服务等。
  • mock="fail:return null"表示如果调用出错,返回null,不抛出异常,用来容忍不重要服务不稳定时对调用放的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习之路=====10=====>>Resnext(tensorflow2)

简介 类型:2017CVPR 作者: Kaiming He组 和其他轻量级网络特点一样,Resnext也是通过降低参数量来改进模型,提高模型精度的。该模型基于Inception的split-transform-merge范式和VGG堆叠网络,将Resnet的单路卷积变成多…

程序员注意!35岁前,别靠死工资过日子

《2022程序员职场洞察报告》显示,六成受访者的职级和薪酬原地踏步,仅38.3%程序员群体的工作发生过变动,升职加薪、搞副业、自由工作等。 近两年,伴随疫情及行业发展的不确定性,企业招聘以及人才求职双方都变得谨慎。越…

MFC程序设计——用button更改静态文本+显示内容并弹出新内容+静态文本动态打开位图

目录 一、新建基于对话框的MFC编程项目 二、设计界面 2.设置启动项 2.找到资源视图和Dialog 3.拖入控件 三、创建变量(关联对话框与静态文本) 四、写入控件代码 1.在文本上的应用 2.在图像上的应用 2.1初始化的方法 2.2控件导入的方法 3.控件…

TSC TTP244Pro 打码机出现的问题及解决方案

背景: 最近在使用TSC的TTP 244 Pro 打码机的过程中,出现了几个小问题,最后请教了专业的人员才解决了问题,现把需要注意的点记录如下: 准备: 先去TSC的** 官网 **上找关于适用于你的打码机和使用环境的驱…

数据结构(高阶)—— AVL树

目录 一、AVL树的基本概念 二、AVL树的结点定义 三、AVL树的插入 四、AVL树的旋转 1. 右单旋 2. 左单旋 3. 右左双旋 4. 左右双旋 五、AVL树的验证 六、AVL树的性能 七、源代码 一、AVL树的基本概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或…

CXL 2.0 Device配置空间寄存器组成

目录 1 配置空间 1.1 PCI Power Management Capability Structure 1.2 PCI Express Capability Structure 2 扩展配置空间 2.1 PCIe DVSEC for CXL Device 2.2 GPF DVSEC for CXL Devices 2.3 PCIe DVSEC for Flex Bus Port 2.4 Register Locator DVSEC CXL设备配置空间…

ThinkPHP架构

文章目录一、架构总览1.1、有关常用的一些概念入口文件应用模块控制器操作模型视图驱动行为命名空间【全限定类名】1.补充二、生命周期三、入口文件四、URL访问五、模块设计六、命明空间七、自动加载八、Traits引入九、API友好一、架构总览 ThinkPHP5.0应用基于MVC(…

前后端分页插件

PageHelper 是一个 MyBatis 的分页插件,支持多种数据库,可查看官网&#xff0c;负责将已经写好的 SQL 语句&#xff0c;进行SQL分页加工。无需你自己去封装以及关心 SQL 分页等问题&#xff0c;支持多种分页方式,如从第0或第一页开始, 使用很方便。 添加依赖 <dependency&…

线代 | 【提神醒脑】自用笔记串联二 —— 向量组 · 线性方程组 · 特征值与特征向量

本文总结参考于 kira 2023 线代提神醒脑技巧班。 笔记均为自用整理。加油!ヾ(◍∇◍)ノ゙ 四、向量组 4.1、向量组的线性相关性 ----------------------------------------------------------------------------------------------------------…

Linux 软链接 与 硬链接 的区别

Linux 软链接 与 硬链接 的区别 1、概念 ​  链接文件&#xff1a;是 Linux 操作系统中的一种文件&#xff0c;主要用于解决文件的共享使用问题&#xff0c;而链接的方式分为两种——软链接和硬链接。 ​  inode&#xff1a;是文件系统中存储文件元信息&#xff08;文件的…

Auddly Music Server的编译和安装

本文始于 2021 年 11 月&#xff0c;已经忘记了是什么原因一直没发&#xff0c;这次基本上全部重写了一遍&#xff0c;除了官方的图&#xff0c;所有图片都是重新截取的&#xff1b; 什么是 auddly &#xff1f; auddly 是一款自托管音乐流应用程序。 什么是 auddly-server &am…

模拟实现ATM系统——Java

目录 一、内容简介 二、基本流程 三、具体步骤 1.定义Account类 2.菜单栏 3.账户注册 (1)根据卡号查询账户信息 (2)生成随机卡号 (3)注册账户 4.账户登录 (1)验证码 (2)登录 5.账户展示界面 6.用户操作 (1)查询账户 (2)存款 (3)取款 (4)转账 (5)修改密码 …

旋转的骰子(二)

1.动画——旋转的骰子 上一次我们做了一个旋转的骰子(参看第2讲),这次我们想要点击按钮,让骰子旋转到特定的点数停下来! 2.分析需求——庖丁解牛 a.立方体特定的朝向

LiveData源码分析

先放整理流程图&#xff1a; 1.postValue调2次只触发1次&#xff1f; postValue本质是把新值保存到LiveData的mPendingData成员变量里&#xff0c;版本号1&#xff0c;把执行Runnable post到主线程&#xff0c;在主线程setValue。 多次调用会更新mPendingData的值&#xff0c…

opencv的极线几何

一、理论介绍 当我们使用针孔相机拍摄图像时&#xff0c;我们会丢失一个重要的信息&#xff0c;即图像的深度。一个解决方案如我们的眼睛的方式使用两个相机&#xff08;两只眼睛&#xff09;&#xff0c;这就是所谓的立体视觉。 PO1O2为极平面&#xff0c;l1和l2为极线,e1和…

基于webrtc的数据传输研究总结

什么是webrtc WebRTC (Web Real-Time Communications) 是一项实时通讯技术&#xff0c;它允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点&#xff08;Peer-to-Peer&#xff09;的连接&#xff0c;实现视频流和&#xff08;或&…

最新阿里云ECS服务器S6/C6/G6/N4/R6/sn2ne/sn1ne/se1ne处理器CPU性能详解

阿里云ECS服务器S6/C6/G6/N4/R6/sn2ne/sn1ne/se1ne处理器CPU性能怎么样&#xff1f;阿里云服务器优惠活动机型有云服务器S6、计算型C6、通用型G6、内存型R6、云服务器N4、云服务器sn2ne、云服务器sn1ne、云服务器se1ne处理器CPU性能详解及使用场景说明。 1、阿里云服务器活动机…

全局唯一ID

文章目录前言MongoDB ObjectIdTwitter SnowflakeUUID前言 基于数据库设置其实初始值&#xff0c;以及增量步长。基于ZK,Redis,改良雪花集中式服务生成&#xff0c;远程调用获取id。基于并行空间划分&#xff0c;Snowflake&#xff08;8Byte字节64bit位&#xff09;&#xff0c…

供应化学试剂mPEG-Azide,mPEG-N3,甲氧基-聚乙二醇-叠氮,CAS:89485-61-0

1、名称 英文&#xff1a;mPEG-Azide&#xff0c;mPEG-N3 中文&#xff1a;甲氧基-聚乙二醇-叠氮 2、CAS编号&#xff1a;89485-61-0 3、所属分类&#xff1a;Azide PEG Methoxy PEG 4、分子量&#xff1a;可定制&#xff0c;甲氧基-聚乙二醇-叠氮 5k、甲氧基-PEG-叠氮 10…

Higress 实战: 30行代码写一个 Wasm Go 插件

前言 在11月15号的直播 《Higress 开源背后的发展历程和上手 Demo 演示》中&#xff0c;为大家演示了 Higress 的 Wasm 插件如何面向 Ingress 资源进行配置生效&#xff0c;本文对当天的 Demo 进行一个回顾&#xff0c;并说明背后的原理机制。 本文中 Demo 运行的前提&#x…