spring cloud服务连接超时解决方法
来源:互联网 发布:网络兼职平台 编辑:程序博客网 时间:2024/06/07 02:38
一 . feign连接超时解决方法
在配置文件中添加配置(application.propeties)
设置超时时间5秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000
或者设置不超时
hystrix.command.default.execution.timeout.enabled: false
二 . 超时案例
做项目时有一个接口,服务A调用服务B,服务B又调用服务C,服务C返回服务B,服务B有调用服务A。。。。好晕,直接上图吧。
因为request更改了数据表,之后调用workflow,事务没有提交在等待方法执行完,workflow又反过来调用request更新数据表,因为是同一条数据,之前的没提交,所以就一直等待他提交,这样就死锁了,不管怎么设置超时时间都没有用的。
在这里恶补一下数据库的事务问题。
事务隔离级别
事务隔离级别由弱到强分别是:READ_UNCOMMITTED(未提交读)、READ_COMMITTED(提交读)、REPEATABLE_READ(重复读)和SERIALIZABLE(串行读)。
脏读:
脏读指的是一个事务允许读取其他正在运行的事务还没有提交的数据,这种情况的发生主要因为没有加锁。不可重复读:
不可重复读是指事务A读取了事务B已经提交的更改数据。也就是一个事务内连续读却得到不同的结果,主要因为同时有其他事务更新了我们正在读取的数据。要达到允许可重复读,必须让当前事务保持一个读共享锁。幻读:
幻读指的是事务不是串行发生时发生的一种现象,是事务A读取了事务B已提交的新增数据。例如第一个事务对一个表的所有数据进行修改,同时第二个事务向表中插入一条新数据。那么操作第一个事务的用户就发现表中还有没有修改的数据行,就像发生了幻觉一样。解决幻读的方法是增加范围锁或者表锁。
MySQL的默认事务隔离级别是REPEATABLE_READ,ORACLE、SQL Server、DB2和PostgreSQL的默认事务隔离级别是READ_COMMITED
事务的特性(ACID特性)
- 原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 - 一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 - 隔离性(Isolation)
一个事务的执行不能被其他事务干扰。 - 持续性/永久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
流程2和流程1的区别是request的更新操作是在返回3之后,返回3是workflow调用request服务进行更新操作,此刻更完之后就会提交,之后request中又进行一次更新操作。
能成功的原因是,workflow调用request服务进行更新操作的事务和request服务自己更新操作的事务不是一个,不存在等待。
喜欢请支持,欢迎讨论^^
- spring cloud服务连接超时解决方法
- spring-cloud-zuul超时
- linux远程服务连接不上,或连接超时解决方法
- Spring配置mysql连接池,连接超时解决方法
- spring cloud注册服务
- spring cloud发现服务
- spring cloud服务调用
- Spring Cloud 服务治理
- Spring Cloud 服务提供者
- Spring Cloud 服务消费者
- spring cloud云服务
- Spring Cloud云服务
- Spring Cloud云服务
- Spring Cloud云服务
- mysql 连接超时解决方法
- ssh连接超时解决方法
- github连接超时解决方法
- SSH连接超时解决方法
- HttpUtil
- 视频网站选择搭建主机的方法
- 加多芬为您提供完善的系统部署
- error-page配置错误页面
- windows版redis安装使用
- spring cloud服务连接超时解决方法
- 第7个Java程序,判断数字的奇偶性。
- vision应用教程中文版
- MD5加密的实现
- PAT (Basic Level) Practise (中文) 1018. 锤子剪刀布 (20)
- 加多芬科技深度剖析--“什么是移动支付服务商“
- shell中“空格”使用总结
- hadoop HA集群的搭建
- transient关键字小结