远程服务调用的一些注意事项

引言

最近工作中,遇到了一些关于远程服务调用的问题,背景是调用三方接口获取某些特征数据,但由于调用出现了超时,导致业务本身的接口的可用行降低。因此整理一些远程服务调用时的注意事项,通过不同维度的考虑来提高系统稳定性。

什么是远程服务调用?

网络时代,系统通过网络请求调用另一个独立运行的服务以获取数据或执行特定操作的流程,就是网络调用。

进程间通信等不涉及网络传输等调用不在讨论范围。

超时

为了防止对方服务响应时间变长,导致拖慢我们自己的程序, 在调用远程服务的时候一定要配置超时时间或实现合适的超时机制;如果设置的超时时间不合理的话, 就会出现对方服务故障拖垮我们自己服务的尴尬情况。

img

常见的远程调用场景有

  • 网络请求,请求外部接口获取数据或执行操作;
  • 数据库查询,查询MySQL、Redis等数据库服务;

关于超时时间的设置,可以参考以下指标

超时时间 = 基础时间 × 波动系数 × 业务系数 × 网络系数
指标作用设置建议
平均响应时间反映整体性能超时时间 > 平均响应时间,但不宜过大
P99延迟反映极端情况超时时间 ≈ 1.5-2倍P99延迟
业务特性实时性、用户体验高实时性业务超时时间短,低实时性业务超时时间长

容错机制

容错机制有两种,一种是针对单次调用的偶发情况:重试,在调用失败时,为了避免偶发情况的影响,可以考虑进行重试,再次请求看操作是否成功。还有针对全局情况,在失败情况过多时,快速失败,避免级联故障引起系统雪崩。

重试策略

  • 重试间隔一般不要是固定间隔,比如重试三次,第一次300ms、第二次500ms、第三次1s;
  • 一定要限制重试次数,防止出现雪崩效应,打垮对方服务。

熔断机制

  • 结合熔断器(如Hystrix),在下游服务可用性低于某个阈值时(如80%)快速失败,避免级联故障;
  • 服务熔断后,调用前直接返回失败,少量请求试探服务是否可用,若试探成功(如请求成功率高于80%),恢复为关闭状态。

img

日志

当调用正常返回时,我们需要日志进行统计分析等操作;调用异常时,也需要记录错误描述方便定位排查,一般需要如下信息

  • 调用的服务信息,比如请求的 url、ip、端口之类的;
  • 请求参数,可以用于复现/debug 的相关请求参数;
  • 失败原因,比如异常信息,根据需要区分不同的异常;
  • 如果有响应返回的话,响应中包含的有用信息,比如 http 响应码、http response 中的有用信息等。

性能也要注意,使用连接池技术

对于远程服务调用,第一要考虑异常情况不会影响我们自己服务的稳定,另外就是要使用合适的技术来优化网络连接过程中的资源开销,比较有效的方式就是连接复用技术,即连接池。

通过复用连接,增加一些维护开销,减少连接创建、销毁对系统资源的浪费。

具体实现不赘述,这里列一些连接池的核心参数

参数含义设置建议
最大连接数连接池允许的最大连接数量。- 高并发服务:根据服务器性能设置,如100-200。 - 低并发服务:50-100。
最小空闲连接数保持的最小空闲连接数量。- 高并发服务:20-50。 - 低并发服务:5-10。
连接超时时间获取连接的超时时间。- 核心服务:500ms-1s。 - 非核心服务:3s-5s。
空闲连接回收时间空闲连接的最大存活时间。- 一般设置为30s-60s,避免长时间占用资源。
最大等待时间等待可用连接的最大时间。- 避免长时间等待,建议设置为1-2秒。
在 ABAP SEGW OData 服务里,把 Function Import 参数长度校验真正跑起来 SAP Gateway服务中Function Import参数长度校验的实现机制解析:在SEGW中定义Max Length参数后,需通过模型特性USE_STRICT_FUNCTION_PARAM_CHK(7.52+版本支持)启用严格检查。该特性需在MPC_EXT的DEFINE方法中设置,框架会在URI解析阶段拦截超长参数,避免错误进入业务逻辑。对于低版本系统,建议在应用层手动添加校验。这种模型驱动的方式符合Clean Core原则,能有效提升接口健壮性。 阅读详情

相关推荐

Omnibox 2.11 NAS部署指南:家庭影音中枢的轻量化落地实践

家庭影音平台本质是本地化内容调度中枢,其核心在于聚合NAS媒体库、统一管理直播/IPTV/音频/视频等多源内容,并通过智能元数据匹配与硬解加速实现零门槛播放体验。技术原理上依赖Java轻量Web容器(Jetty)、SQLite嵌入式数据库双缓存架构,以及宿主机FFmpeg动态链接与HTTP/2直播代理治理能力。该方案显著降低4K播放卡顿、EPG加载失败、海报缺失等高频问题,适用于群晖、飞牛、绿联等主流NAS设备,尤其适配ARM64芯片与Realtek网卡等国产硬件生态。本文聚焦Omnibox 2.11在真实

weixin_30846347的博客 471

微服务中远程调用的超时时间应该设置为多少合适?

在Java微服务架构中,合理设置远程调用超时时间是保证系统稳定性、可用性和性能的关键。以下从。

weixin_43521001的博客 961

别再死记硬背GNN公式了!用PyTorch Geometric从零实现一个GraphSAGE(附完整代码)

本文通过PyTorch Geometric从零实现GraphSAGE模型,深入解析图神经网络的核心原理与实战应用。文章提供完整代码示例,涵盖环境配置、邻居采样、信息聚合等关键步骤,帮助开发者掌握图表示学习技术,避免陷入公式推导的困境。适合希望将GNN应用于实际项目的中级开发者和学生。

weixin_42530570的博客 348

Spring Boot 中的事务超时时间

Spring Boot 中的事务超时时间 在 Spring Boot 中,事务管理是一个非常重要的话题。当我们在数据库中执行一些复杂的操作时,需要确保这些操作能够在一定的时间内完成,否则可能会导致数据一致性问题。为了解决这个问题,Spring Boot 提供了事务超时时间的设置。 事务超时时间是什么? 事务超时时间是指一个事务在执行中最长的允许时间。如果事务在超时时间内未能完成,则会自动回滚。超时时间可以通过设置来控制,以确保事务在规定的时间内完成或回滚,避免数据一致性问题。 事务超时时间的原理 在 Sp

徐师兄的博客 6197

安装部署 Guacamole 远程桌面网关

Guacamole 是Apache基金会提供的一组基于web的远程桌面访问工具,支持 VNC、RDP、SSH、 Telnet 等协议,支持远程透传音视频。

UsamaBinLaden6976498的专栏 1963

银行会计第2课:交易和核算分离的思想

核算作为会计的基础,将交易转化为可量化的信息,而会计则通过整合核算结果,实现对经济活动的全面把控。- 本质:指企业或主体之间发生的、能引起经济利益变动的具体事项,比如采购商品、销售货物、支付工资等,是客观发生的经济事实。可售产品(业务视角的核算对象) + 属性条件(核算的分类,限制等) = 核算类型(会计视角,含有科目分类内容)- 核算:会计人员根据采购发票、入库单等,将这笔交易记为“借:原材料,贷:银行存款”(对事实的会计处理)。- 特点:是核算的源头,不涉及会计处理,仅代表经济行为的发生。

ademen的博客 499

超简单!spring 微服务之远程服务调用实战

微服务是一种将单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。Spring Cloud作为构建微服务应用的解决方案之一,提供了丰富的组件来帮助开发者快速搭建分布式系统。

Grumpy_Amber的博客 1155

路径跟踪 | 图解纯追踪算法Pure Pursuit(附ROS C++/Python/Matlab仿真)

纯追踪算法(Pure Pursuit)参考了人类驾驶行为,其基本思想是在待跟踪路径上设置预瞄点(goal-ahead),通过简单的几何方法驱动机器人跟踪预瞄点直至抵达目标位置.本文详细推导纯追踪算法的理论原理及其变种——自适应纯追踪算法(APP)和规范化纯追踪算法(RPP),并提供ROS C++/Python/Matlab三种仿真实现加深理解

FRIGIDWINTER的博客 8412

canal 数据同步工具

概念: canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL应用场景Feign远程调用(之前用远程调用来获取)canal 把远程库里面的内容同步到本地库中实现流程:

雨声学java 258

GD32F4xx MCU ADC+DMA 多通道采样

1、GD32F4xx ADC GD32F4xx 的12位ADC是一种采用逐次逼近方式的模拟数字转换器。 1.1 主要特征 可配置12位、10位、8位、6位分辨率; ADC采样率:12位分辨率为2.6MSPs,10位分辨率为3.0 MSPs。分辨率越低,转换越快; PS: MSPs (模拟混合信号转换速率),是指完成1次从模拟转换到数字的AD转换所需的时间的倒数。常用单位是ksps和Msps,表示每秒采样(千)/(百万)次(kilo / Million Samples per Second)。 1msps

madao1234的博客 8118

SAP_MM&FI模块-质保金标准解决方案详解

主要讲述了SAP系统质保金的标准实现方案,包含业务背景、后台配置、前台业务操作记录,以及关键点的AI解释;

风沙的博客 687

9.5.5 远程服务调用-Webservice协议

远程服务框架可以采用webservice协议来实现rpc调用,目前支持apache cxf webservice框架。apache cxf webservice的详细资料可以参考其官方网站【http://cxf.apache.org/index.html】Aop框架中已经很好地集成了apache cxf webservice框架,用户可以通过bboss aop框架来发布cxf的webservi

BbossGroups 打造中国制造品牌 3091

001、NPU是什么?为什么嵌入式设备需要它?

本文通过作者调试工业相机板卡的经历,引出嵌入式设备为何需要NPU(神经网络处理器)的探讨。文章对比了CPU和NPU的设计哲学差异,指出NPU通过专用乘加器阵列和优化的数据流,能高效处理神经网络运算。作者分析了嵌入式设备使用NPU的三大优势:算力提升、功耗降低和实时性保障,并介绍了三类常见NPU形态。通过一个YOLOv5模型调试案例,揭示了NPU使用中的常见陷阱,最后给出五条实用建议,强调理解NPU原理和局限的重要性。文章生动展现了NPU在嵌入式AI应用中的关键作用。

m0_50546716的博客 127

Android远程服务一:android AIDL远程服务调用

本文转载自:点击打开链接 AIDL是一种远程服务调用机制,写一个简单的例子,我想应该能让大家知道它的基本使用方法。 这个例子实现的是两个应用之间的对象的数据的传递,例子比较简单,不过能体现AIDL的用法也就足够了。   首先,如果你只需要传递比较简单的数据,比如 java原始类型数据,string charsequence 或者list/map不过list/map中的数据也必须是基本数据类型

houpk999的博客 449

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Workerman-JSONRPC:基于PHP的高性能远程服务调用框架

Workerman-JSONRPC:基于PHP的高性能远程服务调用框架 Workerman-JSONRPC是一个利用Workerman作为进程管理器,并采用JSON作为通信协议的远程服务调用框架。该框架专为PHP开发者设计,允许他们构建分布式系统、实现服务间的高效通信。它支持多进程、多种网络协议(如TCP/UDP)并借助libevent提升性能,适合创建如RPC服务、在线游戏和即时通讯系统等应用场...

gitblog_00465的博客 830

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android调用远程服务中的方法(AIDL)

mingtian

倒骑驴走着瞧的博客 3018

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring整合Hessian访问远程服务

Spring整合Hessian访问远程服务 目录 1.1      Hessian简介 1.2      整合 1.2.1     概述 1.2.2     服务端整合 1.2.3     客户端整合 1.1     Hessian简介        Hessian是一个轻量级的Web服务实现工具,它采用的是二进制协议,因此很适合发送二进制数据。它的一个基本原理就是把远程服务对

zylzb的专栏 879

【LangChain】langchain_ollama.OllamaLLM:通过 Ollama 服务调用本地或远程 LLM 生成文本

langchain_ollama.OllamaLLM 是一个便捷的 LLM 类,通过 Ollama 服务调用本地或远程模型(如 llama3)。核心功能包括:方法:invoke(同步)、stream(流式)、ainvoke/astream(异步)。参数:model(模型选择)、base_url(服务地址)、temperature(随机性)。使用方式:连接 Ollama 服务,生成文本,结合提示模板(如 PromptTemplate)。

彬彬侠的博客 2076

HarmonyOS全栈开发指南:从入门到精通,构建万物智联的未来生态(五·续)

分布式数据管理是指在HarmonyOS系统中,实现跨设备的数据共享、同步和管理。通过分布式数据管理,用户可以在不同设备上访问和操作同一份数据,无需担心数据的同步和一致性问题。

Lin_Zhong_的博客 983

controller调用controller的方法_SpringCloud Alibaba微服务实战三 - 服务调用

导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远程调用accout-service和product-service的服务接口。统一接口返回结构在开始今天的正餐之前我们先把上篇文章中那个丑陋的接口返回给优化掉,让所有的接口都有统一的返回结构。建立公共...

weixin_39943992的博客 1397

springcloudalibaba架构(30):Dubbo的使用入门

Apache Dubbo时一款高性能的Java RPC框架。Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架,致力于提供搞性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Spring-Cloud-alibaba-dubbo是基于SpringCloudAlibaba技术栈对 dubbo技术的一种封装,目的在于实现基于RPC的服务调用。在service-1-api里定义接口}

不积跬步,无以至千里 1040

Spring Cloud Netflix 微服务全家桶(二)

Spring Cloud Netflix 微服务全家桶(二) 一、Restful风格的API /** * http://xxx/users Get 约定 获取列表信息 * http://xxx/users/{id} Get 例如:http://xxx/users/1 获取Id=1的user信息 * Delete 删除 * Put 修改 * * 可以引入版本的概念 * http:/

baidu_38900596的博客 152

OpenFeign相关问题及答案

1、什么是OpenFeign,它如何简化远程服务调用?OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分,可以与Spring Boot应用轻松集成。通过使用OpenFeign,开发者可以通过简单的接口和注解来定义服务绑定,从而简化了与远程HTTP服务的交互过程。开发者可以定义一个接口,并对其进行注解,以标识需要调用的远程服务的HTTP端点。借助Spring MVC的注解,如和。

qq_43012298的博客 2684

spring整合hessian 转载

转载 原文地址:http://haohaoxuexi.iteye.com/blog/1869488 Spring整合Hessian访问远程服务 目录 1.1 Hessian简介 1.2 整合 1.2.1 概述 1.2.2 服务端整合 1.2.3 客户端整合 1.1 Hessian简介 Hessian是一个轻...

u012377366的博客 325

seata 各个微服务回滚的时机

在Seata中,当你在服务方法上使用@GlobalTransactional注解时,Seata会为该全局事务创建一个事务上下文,并在远程服务调用时传递这个事务上下文。:当你通过OpenFeign发起远程调用时,Seata会拦截这个调用,并将当前的全局事务XID(事务ID)通过HTTP请求头传递给远程服务。:在远程服务端,Seata的拦截器会检查请求头中的XID,并将其绑定到当前的服务线程上下文中,使得远程服务也参与到同一个全局事务中。TC根据全局事务的状态,可能会触发全局事务的回滚。

qq_59837818的博客 951

分布式系统的那些事儿(三) - 系统与系统之间的调用

系统与系统之间的调用通俗来讲,分为本地同一台服务器上的服务相互调用与远程服务调用,这个都可以称之为RPC通信。浅白点讲,客户访问服务器A,此时服务器要完成某个动作必须访问服务器B,服务器A与B互相通信,相互调用,A访问B的时候,A挂起,等待B的响应,B响应返回相应的数据个A,A再返回给用户,这就是一个很简单的栗子。 举个常见栗子,用户上传图片,用户上传图...

weixin_34293246的博客 136
上一篇: 大数据开发之数据仓库
下一篇: 介绍下Nginx的作用与请求转发机制
高冷小伙
博客等级 码龄7年 223粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高冷小伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值