关于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 ...
随机推荐
- C++ 文件保存
文件保存: #include <sstream>#include <fstream>using namespace std; /*save to path ./record ...
- SQL Server日志过大,清理日志
直接执行下面的代码 USE [master] GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库 ...
- Hadoop记录-Hive调优:让任务并行执行
set mapred.job.queue.name=pms; //设置队列set hive.exec.reducers.max=8; //设置最大的reducersset mapred.redu ...
- POJ - 2528 Mayor's posters (离散化+线段树区间修改)
https://cn.vjudge.net/problem/POJ-2528 题意 给定一些海报,可能相互重叠,告诉你每个海报的宽度(高度都一样的)和先后叠放顺序,问没有被完全盖住的有多少张? 分析 ...
- HDU 6362(求椭圆中矩形周长的期望 数学)
题意是给定一个椭圆标准方程的a,b(椭圆的长半轴长和短半轴长),在[0,b]内取一个数,则过点(0,b)且平行于x轴的直线与椭圆交于两点,再将此两点关于x轴做对称点,顺次连接此四点构成矩形,求出这些矩 ...
- c/c++gdb下和发布版本下输出地址不同
相差4字节 相差8个字节 原因: 这4个字节是优化掉了,64位操作系统,函数传参通过寄存器,减少了栈的使用 debug模式下,abc的地址都存下来了.
- Drupal8 入门教程(一)安装部署
一.Drupal简介 Drupal 是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成.连续多年荣获全球最佳CMS大奖,是基于P ...
- GIT与SVN的比较
Git: 1. 分布式版本控制2. 不需要网络,本地就可以操作版本控制3. 可以是公用的,可以分享4. 不依赖于中央服务器,即使服务器有问题也不会有影响5. 传输方式不一样,git要比svn快很多6. ...
- Java根类Object的方法说明
Java中的Object类是所有类的父类,它提供了以下11个方法: public final native Class<?> getClass() public native int ha ...
- SQL Server进阶(十一)可编程对象——变量、 批、流元素、 游标
变量 --------------------------------------------------------------------- -- Variables -------------- ...