关于dubbo服务超时的讨论
呵呵,偷点懒,直接把QQ上的讨论发下来。
huxin 10:35:19
你们现在超时了是咋办的,首先超时了,回复用户肯定是要的
huxin 10:36:14
超时了用户实际是不知道这业务是成功还失败了
后续你们如何处理
幂等性。根据业务来的
一种是用户在某个时间主动再来发起这个业务
一种是系统的监听机制发现业务成功主动推过来告知用户
当用户在某个时间主动再来发起这个业务的时候,服务必须要保证幂等性
那么你们有具体的幂等性机制吗,还是这个幂等性是要通过查数据库,从业务角度去完成呢
如果是这样,那么幂等性就强依赖业务代码了
就要强依赖程序员的逻辑了,检查起来就比较累,程序员素质高,幂等性就保证的好,反之就差。你测的时候还得分析他的业务代码,才能判断幂等性是不是保证了
是的
huxin 10:42:35
所以我认为,这个幂等性得从架构上来保证,至于程序愿意在业务层面上再保证那再好不过了
huxin 10:43:38
至于程序员愿意在业务层面上再保证那再好不过了
这样就是双保险
一棵小草 10:43:56
你觉得架构上怎么保证啊
huxin 10:44:18
可以用全局业务编号的机制
你要干一件事,先领一个号,这个号类似于MD5码,你同样的一次业务永远会是这个编号
huxin 10:46:17
这样我不管你的代码管不管业务的幂等性,架构上是把了一道关的
我检查冥等性的代码是所有业务可以共用的
huxin 10:47:41
程序员如果愿意在业务层面上再保证一次冥等性那再好不过了
huxin 10:48:47
以上就是我的服务超时解决方案
huxin 10:53:39
架构级的冥等性的好处是对程序员的依赖性降低了,对架构师的能力有依赖,但一般来说,架构师能力总是强于程序员的,所以架构师更靠谱些吧。
关于dubbo服务超时的讨论的更多相关文章
- Dubbo服务超时
服务消费者引用服务提供者的服务时可能由于网络原因导致长时间未返回相应,此时大量的线程将会阻塞,引起性能下降等问题.可以通过引入服务超时来解决该问题 服务超时指服务在给定的时间内未返回相应将立即终止该请 ...
- 记一次线上dubbo服务超时和线程池满问题排查
线上某dubbo服务A调用dubbo服务B的接口X方法,调用端A日志中出现了很多超时的情况,提供端B该接口X超时时间设置为60s: 查看提供端B的日志,报了很多线程池满的异常: Caused by: ...
- dubbo服务端响应超时错误一例记录
错误描述: Portlet J2AppsPortlet::QuickStartPortlet not available: Waiting server-side response timeout. ...
- Dubbo服务调用超时
服务降级的发生,其实是由于消费者调用服务超时引起的,即从发出调用请求到获取到提供者的响应结果这个时间超出了设定的时限.默认服务调用超时时限为1秒.可以在消费者端与提供者端设置超时时限. 一.创建提供者 ...
- dubbo的超时重试
dubbo的超时分为服务端超时 SERVER_TIMEOUT 和客户端超时 CLIENT_TIMEOUT.本文讨论服务端超时的情形: 超时:consumer发送调用请求后,等待服务端的响应,若超过ti ...
- dubbo服务提供与消费
一.前言 项目中用到了Dubbo,临时抱大腿,学习了dubbo的简单实用方法.现在就来总结一下dubbo如何提供服务,如何消费服务,并做了一个简单的demo作为参考. 二.Dubbo是什么 Dubbo ...
- 当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用
当当网近日开源了Dubbox项目,可为Dubbo服务框架提供多项扩展功能,包括REST风格远程调用.Kryo/FST序列化等等. 当当网架构部和技术委员会架构师沈理向InfoQ中文站介绍了Dubbox ...
- 跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)
Dubbo服务的运行方式: 1.使用Servlet容器运行(Tomcat.Jetty等)----不可取 缺点:增加复杂性(端口.管理) 浪费资源(内存) 官方:服务容器是一个standalone的启动 ...
- dubbo RPC超时异常小结
dubbo消费者调用服务超时的原因可能有很多,今天排查问题花了两个小时,也查了很多资料,好像每一篇资料都是提出一个问题,所以简单总结几点: 1. 配置才是重中之重,仔细检查服务提供方的dubbo se ...
随机推荐
- Java 中的悲观锁和乐观锁的实现
一.定义 1.悲观锁:即很悲观,每次拿数据的时候都觉得数据会被人更改,所以拿数据的时候就把这条记录锁掉,这样别人就没法改这条数据了,一直到你的锁释放. 2.乐观锁:即很乐观,查询数据的时候总觉得不会有 ...
- Tensorflow object detection API 搭建物体识别模型(三)
三.模型训练 1)错误一: 在桌面的目标检测文件夹中打开cmd,即在路径中输入cmd后按Enter键运行.在cmd中运行命令: python /your_path/models-master/rese ...
- Java Web之EL
<%-- Created by IntelliJ IDEA. User: Vae Date: 2019/1/2 Time: 12:19 To change this template use F ...
- 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)
题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...
- flask请求异步执行(转载)
Flask默认是不支持非阻塞IO的,表现为: 当 请求1未完成之前,请求2是需要等待处理状态,效率非常低. 在flask中非阻塞实现可以由2种: 启用flask多线程机制 # Flask from f ...
- Silverlight用户无法注册之MySql.Data.dll不一致
本篇博文记录本人解决一个"用户无法注册"的问题的过程 1 问题描述: 用户可以删除:但不能注册,也不能修改权限: 图 1用户注册失败 图 2修改用户权限出错 2 解决过程 1)粗暴 ...
- content-type: application/json没有设置导致的500错误
$.ajax({ url:'http://xxx.test', type: 'Post', data: JSON.stringify(model), dataType: 'json', content ...
- redis整合Spring集群搭建及业务中的使用
1.redis安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一步:redis的源码包上传到li ...
- python基础 range()与np.arange()
range()返回的是range object,而np.nrange()返回的是numpy.ndarray() range尽可用于迭代,而np.nrange作用远不止于此,它是一个序列,可被当做向量使 ...
- ubuntu终端命令启动matlab方法
让所有用户都有权限使用matlab,在终端输入 sudo gedit /etc/profile 在后行写 export MATLABPATH=/home/ubuntu/MATLAB/R2016b:$M ...