RPC:时钟轮解决定时任务以及超时检测

2023-10-31

定时任务带来了什么问题

我们来看一下RPC框架是如何处理超时请求的:

  • RPC中,无论是同步调用还是异步调用,调用端内部实行的都是异步
    • 调用端在向服务端发送消息之前会创建一个Future,并存储这个消息标识与这个Future的映射
    • 当服务端收到消息并且处理完毕后向调用端发送响应消息,调用端在接收到消息后会根据消息的唯一标识找到这个Future,并将结果注入到这个Future

那这个过程中,如果服务端没有及时响应消息给调用端呢?调用端应该如何处理超时的请求?

  • 可以利用定时任务
  • 每次创建一个Future,我们都记录这个Future的场景时间与这个Future的超时时间,并且有一个定时任务进行检测
  • 当这个Future到达超时时间并且没有被处理时,我们就对这个Future执行超时逻辑

时钟轮在 RPC 中的应用

在 RPC框架中只要涉及到定时相关的操作,我们就可以使用时钟轮

那么 RPC 框架在哪些功能实现中会用到它呢?

  • 请求超时处理:每发一次请求,都创建一个处理请求超时的定时任务放到时钟轮里面,在高并发、高访问量的情况下,时钟轮每次只轮询一个时间槽中的任务,这样会大量节省CPU
  • 调用端和服务端的启动超时:以调用端为例,假设我们想要让应用可以快速的部署,比如1分钟内启动,超过1分钟则启动失败。我们可以在调用端启动时创建一个处理启动超时的定时任务,放到时钟轮里
  • 定时心跳:RPC调用端定时向服务端发送心跳,来维护连接。我们可以将心跳的逻辑封装为一个心跳任务,放到时钟轮里。但心跳任务是要定时执行的,而时钟轮中的任务执行一遍就被移除了,对于这种需要重复执行的定时任务我们应该如何处理呢?在定时任务的执行逻辑的最后,我们可以重设这个任务的定时时间,把它重新丢回时钟轮里
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RPC:时钟轮解决定时任务以及超时检测 的相关文章

  • java.lang.IllegalArgumentException:无法实例化工厂类:org.springframework.boot.env.EnvironmentPostProcessor

    我是 Spring 新手 作为起点遵循教程 Spring IO 教程 https spring io guides tutorials bookmarks 我已经使用 spring 初始化程序下载了项目Web JPA H2 Lombok并使
  • ipc:// 上的 ZeroMQ REQ/REP 和并发性

    我使用 REQ REP 0MQ ipc 套接字实现了一个 JSON RPC 服务器 我遇到了奇怪的行为 我怀疑这是由于 ipc 底层 unix 套接字不是真正的套接字 而是一个事实一根管子 根据文档 必须强制执行严格的 zmq send z
  • 思腾合力赞助CCF YOCSEF太原第十一届学术委员会第三次全体会议

    2024年1月6日 由思腾合力赞助的 CCF YOCSEF太原第十一届学术委员会第三次全体会议暨AC换届选举活动 在山西大学举办 华北区教育行业负责人宋肖敏出席本次会议 会议汇聚了众多学术界和企业界的精英 共同探讨人工智能和计算机科学的未来
  • 【计算机开题报告】 网上茶叶销售平台设计与开发

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着社会经济的迅速发展和科学技术的全面进步 以计算机与网络技术为基础的信息系统正处于蓬勃发展的时期 随着经济文化水平的提高 近年来 随着科学
  • 一个网工(网络工程师)七年的职业血泪史....

    前言 一个工作了七年的老网工 上家公司待了五年 现在这家公司也快三年了 分享一些我自己学习网络安全路上的一些经历 也算是帮大家少走些弯路 一 如何学习网络安全 1 不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全 一般
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • HPE Aruba Networking:五大网络现代化策略助力实现校园数字化转型

    作者 Aruba中国区技术销售总监 俞世丹 全球数字化进程日益加深 科技已成为加速教育行业发展的重要驱动力 人工智能 大数据 云计算 物联网 虚拟现实等新兴技术的快速发展 正在深刻改变着教育的形态和模式 为了更好地满足学校师生个性化教育教学
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全
  • 在 Java 中伪造堆栈跟踪

    当您在 Java 中使用 RMI 时 异常的远程堆栈跟踪将在您收到异常时添加到前面 有点像这样 ERROR Client received error when doing stuff myapp FooBarException bla a
  • 启动 RPC 服务器时出现“端点重复”

    我的程序使用 Microsoft RPC 进行进程间通信 为了准备接收 RPC 调用 程序运行以下序列 RpcServerUseProtseqEp 然后 RpcServerRegisterIf 则 RpcServerListen 该程序按照
  • LRPC 的意义何在?为什么有人想要对同一台机器进行远程过程调用?

    根据我对 RPC 远程过程调用 的理解 它们提供了一种向远程计算机发送函数调用 调用等的方法 这样做的明显优点是 您可以拥有一个在机器集群上运行的单个程序 并且可以处理更多请求 更多数据等 但我很困惑LRPC 轻量级RPC http www
  • 远程过程调用认证

    我正在使用远程过程调用 RPC 在本地计算机上通信数据 我的要求是使用 RPC 在两个处理之间通信数据 但服务器应该通过某种方式对客户端进行身份验证 我遇到了 RpcBindingSetAuthInfo 它设置身份验证和授权信息 第四个参数

随机推荐

  • CANOpen DS402伺服电机控制项目总结

    公司的电机控制要统一到CANOpen上面来 协议栈用的CanFestival 配合RTThread进行控制 要控制伺服电机 最先搞明白的就是控制字6040和状态字6041 一共使用过三个厂家的伺服电机 控制字都是一样的 但是状态字各家有自己
  • DevOps到底是什么意思?看完这篇不要再问我了

    提到DevOps这个词 我相信很多人一定不会陌生 作为一个热门的概念 DevOps近年来频频出现在各大技术社区和媒体的文章中 备受行业大咖的追捧 也吸引了很多吃瓜群众的围观 那么 DevOps是什么呢 有人说它是一种方法 也有人说它是一种工
  • Yolov5

    Yolov5 文章目录 Yolov5 一 Yolov5 现状 二 Yolov5 模型结构 一 Yolov5 2 0 二 Yolov5 6 0 输入端 BackBone基准网络 Head网络 三 Yolov5 模型推理流程 四 Yolov5
  • 电子科技大学软件工程期末复习笔记(八):软件维护

    目录 前言 重点一览 软件维护的定义 四种类型的维护 软件维护的必要性 软件维护的成本 软件维护的困难性 可维护性的定义 决定软件可维护性的因素 软件维护的过程模型 维护费用估算 软件再工程 软件逆向工程 本章小结 前言 本复习笔记基于王玉
  • 盘一盘 Python 系列 - Cufflinks (下)

    本文含 8890 字 37 图表截屏 建议阅读 46 分钟 0 引言 本文是 Python 系列的 Cufflinks 补充篇 整套 Python 盘一盘系列目录如下 Python 入门篇 上 Python 入门篇 下 数组计算之 NumP
  • 5G/NR 上行免授权

    上行免授权 非动态调度 就是指gNB通过激活一次上行授权给UE 在UE不收到去激活的情况下 将会一直使用第一次上行授权所指定资源进行上行传输 其有两种传输类型 配置授权type 1 由RRC通过高层信令进行配置 IE ConfiguredG
  • 【安卓逆向】爱加密so层静态分析

    因为这个是比较久远的apk 所以高版本是运行不起来的 学习的目的是了解一下以前的加固方式 也是划水 哈哈 下一次更新 我这边也打算写一篇关于小x书APP的协议分析 感兴趣的同学可以关注一下 应该就是在这几天更新 有问题也可以加我vx3481
  • Microchip Studio 7.0 如何编译工程项目

    Microchip Studio 7 0 系列教程 1 Microchip Studio 7 0 如何修改字体大小Microchip Studio 7 0 如何修改字体大小 2 MicroChip Studio 7 0如何快速打开 h文件
  • Linux部分参数作用讲解

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 ls help 查看ls 命令的基本用法 hel
  • NLP学习—23.基于Transformer的机器翻译实战

    文章目录 Transformer理论部分 Transformer代码实现 基于Transformer的机器翻译实战 在Transformer的代码实现的基础上 采用机器翻译数据 进行基于Transformer的机器翻译实战 数据集代码链接
  • JAVA单元测试框架-10-断言Assert

    使用Assert对结果进行断言 这是testng里的断言方式 常用断言 assertTrue assertSame assertEquals Test public void TestAssert Assert assertEquals 2
  • 如何在 SubSystem for Android 上安装应用?

    如何在 SubSystem for Android上安装应用 2022年3月19日更新 原先的 Apk文件安装程序 加入了广告 且软件源代码有盗窃原作者的嫌疑 目前不能确定 如有冒犯请谅解 所以更新此文章 这次推荐的是 来自酷友的作品 Ap
  • 命名接口约束统一

    Dao 接口命名 insert batchInsert selectOne selectByXXX count list listPage update delete Service 接口命名 add findOne findByXXX f
  • Python报错:from torchvision import _C解决办法

    原因 很有可能是torch装的是cpu 而torchvision装的是gpu版本 解决办法 到pytorch官方网站下载对应版本的torchvision cpu版本
  • python怎么打包_如何将一整个python工程打包

    匿名用户 1级 2016 05 14 回答 1 下载并安装py2exe 可下载最新版本 2 编写安装脚本 比较简单 不过多解释 如下 Screenshot setup py usr bin env python coding utf 8 f
  • 直线拟合的三种方法

    近日考虑直线拟合相关的知识 大概有所了解 所以打算进行一些总结 直线拟合常用的三种方法 一 最小二乘法进行直线拟合 二 梯度下降法进行直线拟合 三 高斯牛顿 列 马算法进行直线拟合 一 使用最多的就是最小二乘法 这里我也对最小二乘法进行了一
  • 有道翻译JS逆向最新版本,包含解密部分

    话不多说 首先抓包 发现提交的POST参数中 有一个值会变的sign参数 一看是32位的长度 就判断是一个MD5的加密 我们要做的就是调试出这个参与MD5加密的字符串 然后搜索关键字sige 找到JS的关键位置 发现是一个v方法 V方法又调
  • 【LeetCode】MySQL:数据库简单题(181)

    181 超过经理收入的员工 1 题目描述 2 具体实现 Write your MySQL query statement below 法一 子查询 执行时间 905 ms select name as Employee from Emplo
  • 排队论mm1和mms

    排队论 分类 mm1模型 介绍 代码 结果截图 mms模型 介绍 代码 结果截图 分类 mm1模型 介绍 代码 clear clc 初始化顾客源 需要改动的地方就只有仿真时间 到达率和服务率 服务率一般很难提升 但是到达率可以减小 比如肯德
  • RPC:时钟轮解决定时任务以及超时检测

    定时任务带来了什么问题 我们来看一下RPC框架是如何处理超时请求的 RPC中 无论是同步调用还是异步调用 调用端内部实行的都是异步 调用端在向服务端发送消息之前会创建一个Future 并存储这个消息标识与这个Future的映射 当服务端收到