springcloud客服端交叉调用

 spingboot开发的应用作为客户端,可以是相互调用的,但是相互调用会出现个问题就是交叉调用,

 

如图举例,A处理一个业务需要调用F的服务,但是F处理这个有需要B的服务,B处理有需要E的服务,E有需要A的服务,这样循环会导致个问题大家都都是相互调用,条例清除的话基本还不会死循环调用。

而且测试的时候基本也没啥问题,单元测试时都是规规矩矩的基本测不出来,而且单机压力测试基本很难压出来因为,A这里已经瓶颈限制了,一上线压力一大就会出问题。

 

举例A-F每个应用每秒能够处理100个请求,A首先由100个请求来了,E也收到100个请求,E这100个还要去请求A,A已经没有多余的能力来处理请求,最后死循环系统卡死,调用超时。

我们当时第一次用springcloud的时候项目上线就出现这个问题,一到高峰时段系统就卡起,重启系统就好一会,平时没有出现,一到高峰期就出问题。

 

查询服务器连接数据

netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}',显示等待连接数超多。后面才想到可能是springcloud客户端阻塞。

 

怎么拆呢,不允许交叉调用,只能单向调,A只能调B,B不能调A,如果B非要调A,A单独一个项目出来改成A-1专门给B调用,这样处理后面基本就是好了。

 

以前我们做项目的时候,也是云服务,当初有一个规定就是只能单向调用服务。

 

今天在一个微信公众号也看到了也有人问这个问题!

https://mp.weixin.qq.com/s/B6xvAgMh0WVf2NdxPJ8GjA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值