关于RPC

初识RPC

在这里插入图片描述

RPC VS REST HTTP

在这里插入图片描述

Dubbo

在这里插入图片描述
在这里插入图片描述

Dubbo 特性:

  1. 基于接口+动态代理的远程方法调用
	Dubbo对开发者屏蔽了底层的调用细节,在实际代码中调用远程服务就像调用一个本地接口类一样方便。这个功能和Fegin很类似,但是Dubbo用起来比Fegin还要简单很多,Fegin优势还需要独立声明一个接口,而Dubbo真的就是拿到公共接口类后直接就能用。
  1. 负载均衡
Dubbo内置多种负载均衡策略,只能感知下游节点健康状况,提高系统吞吐量,这部分功能和Ribbon十分接近,
但是Dubbo的负载均衡策略不如Ribbon的多,而且Dubbo的负载均衡能力只能供自己享用,而Ribbon可以赋能
给Spring Cloud里的各个组件。
  1. 集群容错
Dubbo提供了一个Cluster组件专门用来做集群容错,它其实并不是Hystrix这类降级组件,而是一种 “异常重
试”
  1. 服务治理
支持多种注册中心服务,服务实力上下线实时感知。就是服务注册、服务发现、服务下线之类的流程,这些功能
和Eureka里面的概念是一模一样的,只是实现方式却大有不同。比如Dubbo在服务下线后会主动将可用服务列表
下发到各个服务节点,送货上门服务周到,而Eureka每次都等着服务节点自己上注册中心来拿数据。

Dubbo 的技能点比较专一,全点在了服务治理体系,但就服务治理来看确实比Eureka细致一些。

Dubbo架构

在这里插入图片描述

Dubbo和Eureka中服务发现的不同

  1. Dubbo里的注册中心、Provider和Counsumer三者之间都是长连接,借助于Zookeeper的高吞吐量,实现基于服务端的服务发现机制。因此Dubbo利用Zookeeper+发布订阅模型可以很快将服务节点的上线下线同步到Consumer集群。如果服务提供者宕机,那么注册中心的长连接会立马感知到这个事件,并且立即推送通知到消费者。
  2. 在服务发现的做法上Dubbo和Eureka有很大的不同,Eureka使用客户端的服务发现机制,因此对于服务列表的变动响应会稍慢,比如某台机器下线以后,在一段时间内可能还会陆续有服务请求发过来,当然这些请求会收到Service Unavailable的异常,需要借助Ribbon活Hystrix实现重试或者降级措施。
  3. 对于注册中心宕机的情况,Dubbo和Eureka的处理方式相同,这两个框架的服务节点都在本地缓存了服务提供者的列表,因此仍然可以发起调用,但服务提供者列表无法被更新,因此可能导致本地缓存的服务状态与实际情况有别。

Dubbo有哪些底层协议

  1. Dubbo本尊,官方推荐;
  2. RMI , JDK中“java.rmi”包下的实现,底层采用阻塞的短连接 + JDK中标准的二进制序列化。
    适用场景:参数数据报大小不一,发i为i提供者和服务消费者个数相近
  3. Hessian , 基于HTTP短连接,采用Service向外暴露服务
    适用场景:参数数据报较大,服务提供者的数量远多于消费者数量
  4. HTTP,基于http表单的协议
    适用场景:可以使用浏览器查看,适用于需要同时给后台应用程序以及浏览器提供服务的场景
  5. WebService,基于大名鼎鼎的Apache CFX,使用基于SOAP的序列化技术
    适用场景:系统由多种不同语言构成的,那么这个场景就比较适合采用WebService协议,WebService通常使用在系统集成和跨语言调用场景中。
  6. REST,基于标准的Java REST API 实现的REST风格调用, Dubbo花了大力气在这部分的实现上面, 他的使用风格和原生Spring MVC类似。

Dubbo协议的特性和性能

  • 连接个数 -> 单连接
  • 连接方式 -> 长连接
  • 传输协议 -> TCP
  • 底层通信框架 -> Netty异步NIO
  • 序列化方式 -> Hessian2或Dubbo序列化

Dispatcher线程派发模型

Dispatcher用来创建具有线程派发能力的ChannelHandler,将来访Request派发到线程池或者当前IO线程。我们可以给Dispatcher配置5种派发策略:

  1. all:所有消息都派发到线程池,包括请求,响应,连接事件,断开事件
  2. direct:所有消息都不派发到线程池,全部在IO线程上直接执行
  3. message:只有请求和响应消息派发到线程池,其它消息均在IO线程上执行
  4. execution:只有请求消息派发到线程池,不含响应。其它消息均在IO线程上执行
  5. connection:在IO线程上,将连接断开事件放入队列,有序逐个执行,其它消息派发到线程池

Dubbo的Cluster和Clister Invoker组件:

在这里插入图片描述

  1. 集群模块是服务提供者和服务消费者的中间层,为服务消费者屏蔽了服务提供者的情况,这样服务消费者就可以专心处理远程调用相关事宜。比如发请求,接受服务提供者返回的数据等。
  2. Cluser Invoker大集合
    a. FailoverClusterInvoker - 指定重试次数 (默认)
    b.FailbackClusterInvoker - 后台定时重试
    c.FailfastClusterInvoker - 早死早超生
    d.FailsafeClusterInvoker - 睁一只眼闭一只眼
    e.ForkingClusterInvoker - 百万雄师过大江

Dubbo中的负载均衡

  1. RandomLoadBalance 基于权重算法的负载均衡策略
  2. LeastActiveLoadBalance 基于最少活跃调用数算法
  3. ConsistentLoadBalance 基于Hash一致性
  4. RoundRobinLoadBalance 基于加权轮询算法

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西安交易所开发:打造区块链交易系统的DApp开发

随着区块链技术的逐步成熟和普及,数字资产交易逐渐走向了去中心化的方向。西安交易所作为一种新型的数字资产交易平台,具有更高的安全性、透明度和可信度,受到了越来越多投资者的青睐。本文将探讨在西安交易所开发中如何打造区块链交易系统的…

web后端Servlet实现文件上传(最后用于图书类)

老规矩哦,别抄哦兄弟们!不包含基本的ajax基本封装哦,要是有需要,可以私信找我,我发给你,你放在包里面,二次直接调用。 前端html代码:(在这个js中实现了点击选择文件后&a…

服务器被挖矿了怎么办,实战清退

当我们发现服务器资源大量被占用的时候,疑似中招了怎么办 第一时间重启服务是不行的,这些挖矿木马一定是会伴随着你的重启而自动重启,一定时间内重新霸占你的服务器资源 第一步检查高占用进程 top -c ps -ef 要注意这里%CPU,如果…

Day75:WEB攻防-验证码安全篇接口滥用识别插件复用绕过宏命令填入滑块类

目录 图片验证码-识别插件-登录爆破&接口枚举 登录爆破 接口枚举 图片验证码-重复使用-某APP短信接口滥用 滑块验证码-宏命令-某Token&Sign&滑块案例 知识点: 1、验证码简单机制-验证码过于简单可爆破 2、验证码重复使用-验证码验证机制可绕过 3、…

使用ChatGPT的场景之gpt写研究报告,如何ChatGPT写研究报告

推荐写研究报告使用智能站: dayfire.cn/ 1. 确定研究主题 明确主题:在开始之前,你需要有一个清晰的研究主题。这将帮助AI更好地理解你的需求…

【网络爬虫】(1) 网络请求,urllib库介绍

各位同学好,今天开始和各位分享一下python网络爬虫技巧,从基本的函数开始,到项目实战。那我们开始吧。 1. 基本概念 这里简单介绍一下后续学习中需要掌握的概念。 (1)http 和 https 协议。http是超文本传输&#xf…

STM32之HAL开发——Keil调试工具介绍

Debug介绍 在Keil工具中有许多常用的小工具,下面将会依次为大家介绍每个工具的用途。 命令行窗口 在窗口内可以输入一些指令,来进行断点设置以及删除,一般不常用 反汇编窗口 可以查看当前C代码的汇编指令 标志窗口 寄存器窗口 可以用来查看C…

Knative 助力 XTransfer 加速应用云原生 Serverless 化

作者:元毅 公司介绍 XTransfer 是一站式外贸企业跨境金融和风控服务公司,致力于帮助中小微企业大幅降低全球展业的门槛和成本,提升全球竞争力。公司连续7年专注 B2B 外贸金融服务,已成为中国 B2B 外贸金融第一平台,目…

FFmpeg+mediamtx 实现将本地摄像头推送成RTSP流

文章目录 概要推流过程实现过程安装FFmpeg安装Mediamtx 启动推流 概要 FFmpegmediamtx实现将本地摄像头推送成RTSP流 FFmpeg 版本号为:N-114298-g97d2990ea6-20240321 mediamtx 版本号为:v1.6.0 推流过程 摄像头数据,经过ffmpeg的推流代码…

华为OD机22道试题

华为OD机试题 2.查找小朋友的好朋友位置 在学校中,N 个小朋友站成一队,第 i 个小朋友的身高为 height[i],第 i 个小朋友可以看到第一个比自己身高更高的小朋友j,那么 j 是 i 的好朋友 (要求:j>i) 。 请重新生成一个…

图解Kafka架构学习笔记(二)

kafka的存储机制 https://segmentfault.com/a/1190000021824942 https://www.lin2j.tech/md/middleware/kafka/Kafka%E7%B3%BB%E5%88%97%E4%B8%83%E5%AD%98%E5%82%A8%E6%9C%BA%E5%88%B6.html https://tech.meituan.com/2015/01/13/kafka-fs-design-theory.html https://feiz…

服务端高并发分布式结构

前言 本文以⼀个 “电子商务” 应用为例,介绍从⼀百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有⼀个整体的认知,方便⼤家对后续知识做深⼊学习时有⼀定的整体视野…

iOS-UIFont 实现三方字体的下载和使用

UIFont 系列传送门 第一弹加载本地字体:iOS UIFont-新增第三方字体 第二弹加载线上字体:iOS-UIFont 实现三方字体的下载和使用 前言 在上一章我们完成啦如何加载使用本地的字体。如果我们有很多的字体可供用户选择,我们当然可以全部使用本地字体加载方式,可是这样就增加了…

RSTP环路避免实验(华为)

思科设备参考:RSTP环路避免实验(思科) 一,技术简介 RSTP (Rapid Spanning Tree Protocol) 是从STP发展而来 • RSTP标准版本为IEEE802.1w • RSTP具备STP的所有功能,可以兼容STP运行 • RSTP和STP有所不同 减少了…

基于Arduino IDE 野火ESP8266模块 EEPROM 存储开发

一、操作存储器 我们可以使用ESP8266模块的EEPROM,也就是可读可擦存储器,可以掉电不丢失地帮我们存储一些数据。ESP8266微控制器有一个闪存区(Flash memory) 来模拟Arduino的EEPROM。这是微控制器中一个特殊的内存位置,即使在主板关闭后&…

Selenium 自动化 —— 浏览器窗口操作

更多内容请关注我的专栏: 入门和 Hello World 实例使用WebDriverManager自动下载驱动Selenium IDE录制、回放、导出Java源码 当用 Selenium 打开浏览器后,我们就可以通过 Selenium 对浏览器做各种操作,就像我们日常用鼠标和键盘操作浏览器一…

基于nodejs+vue企业人才引进服务平台python-flask-django-php

本文通过采用MySQL数据库以及nodejs语言、express框架,结合国内线上管理现状,开发了一个基于node的企业人才引进服务平台。系统分为多个功能模块:用户信息、企业信息、招聘信息、应聘信息等。通过系统测试,本系统实现了系统设计目…

pe启动盘破解windows密码wins电脑登录密码修改重置

目录 1.进入电脑BIOS,设置电脑第一启动项为U盘启动2.进入微pe系统3.然后点击界面最左下方的Windows图标4.点击windows密码选择对应用户名称修改; 1.进入电脑BIOS,设置电脑第一启动项为U盘启动 把u盘插到要清除密码的电脑,然后开机…

测试环境搭建整套大数据系统(十二:挂载磁盘到hadoop环境)

一:链接硬盘 将硬盘连接到计算机的 SATA 接口或 USB 接口,并确保硬盘通电并处于可用状态。 二:查看硬盘信息 sudo fdisk -l三:创建分区 gdisk /dev/vbd重新扫描磁盘 partprobe /dev/vdb格式化磁盘 mkfs.ext4 /dev/vdb2查看磁…

【vscode打开多文件夹】

1)将文件夹添加到工作空间中 2)文件夹方式展开 3)最终效果 小技巧: 文件夹的位置不对的话,可以拖动进行调整。