当我们进入到getAvailableClientTransport这个方法的看到存货列表和未初始化列表的时候有没有似曾相识的感觉?没错,这几个参数就是我们上面讲到的客户端会初始化一个心跳线程,在心跳线程里面维护这几个参数。
所以这个方法主要做了以下几件事:
去存活列表里面找transport
去亚健康列表里面找transport,当然目前的版本并没有维护亚健康列表,所以永远找不到
如果设置了延迟加载,那么会去uninitializedConnections里面找到transport,然后再调用initClientTransport方法进行初始化
如果找不到那么就返回null
如果返回null,那么会回到上面的do-while循环进行再次的筛选
好了,那么SOFARPC是如何实现故障剔除的就已经分析完了,如果这篇文章对你有所帮助,不妨点个赞,谢谢。
SOFARPC源码解析系列:
1. 源码分析---SOFARPC可扩展的机制SPI
2. 源码分析---SOFARPC客户端服务引用
3. 源码分析---SOFARPC客户端服务调用
4. 源码分析---SOFARPC服务端暴露
5.源码分析---SOFARPC调用服务
6.源码分析---和dubbo相比SOFARPC是如何实现负载均衡的?