rpc框架使用
连接池使用需要先构造连接池对象,并完成初始化,连接池可以连接多个rpc服务器,从连接池取连接时会随机取不同服务器的连接,达到负载均衡的效果。
下图中为连接池里面使用的装饰者模式uml类图,从连接池中拿出的ITransportWrapper连接被PoolingTransport装饰后,close功能是自动放回连接池中,而不是真正的close掉连接,同样的,FakeTransport装饰后,IsOpen总是返回true,因为它是一个假冒的连接
连接池连接状态变更图如下,首先打开一个连接,打开成功进入BUSY状态,失败则进入DEAD状态,如果BUSY状态的连接使用过程中出现异常,也会进入DEAD状态。
处于BUSY状态的连接正常运行完成后会被重新放回连接池中,状态变更为IDLE状态,后续可以从连接池中获取IDLE状态的连接来处理新的事务。
对于DEAD状态的连接,需要判断当前活跃连接个数,如果活跃连接已经大于minSize了,直接销毁该连接,变更为CLOSED状态。否则重新打开该连接,让其变更为IDLE状态以备使用,当然如果打开失败,该连接还是处于DEAD状态。
对于IDLE状态的连接,如
...