[size=medium][color=black][b]1 写在前面[/b][/color][/size]
[size=medium][color=black][b]1.1 名词解释[/b][/color][/size]
consumer表示服务调用方
provider标示服务提供方,dubbo里面一般就这么讲。
下面的A调用B服务,一般是泛指调用B服务里面的一个接口。
1.2 拓扑图
大写字母表示不同的服务,后面的序号表示同一个服务部署在不同机器的实例。
[img]http://img1.tuicool.com/QVZRZny.jpg!web[/img]
[size=medium][color=black][b]2 从微观角度思考[/b][/color][/size]
[size=medium][color=black][b]2.1 超时(timeout)[/b][/color][/size]
在接口调用过程中,consumer调用provider的时候,provider在响应的时候,有可能会慢,如果provider 10s响应,那么consumer也会至少10s才响应。如果这种情况频度很高,那么就会整体降低consumer端服务的性能。
这种响应时间慢的症状,就会像一层一层波浪一样,从底层系统一直涌到最上层,造成整个链路的超时。
所以,consumer不可能无限制地等待provider接口的返回,会设置一个时间阈值,如果超过了这个时间阈值,就不继续等待。
这个超时时间选取,一般看provider正常响应时间是多少,再追加一个buffer即可。
2.2 重试(retry)