public class AddressPool extends Object implements RsfUpdater
路由策略:随机选址
流控规则:服务级、方法级、参数级
| 限定符和类型 | 字段和说明 |
|---|---|
protected org.slf4j.Logger |
logger |
| 构造器和说明 |
|---|
AddressPool(RsfEnvironment rsfEnvironment) |
| 限定符和类型 | 方法和说明 |
|---|---|
Map<String,List<InterAddress>> |
allServiceAddressToSnapshot()
所有服务地址快照功能,该接口获得的数据不可以进行写操作。
|
void |
appendAddress(String serviceID,
Collection<InterAddress> newHostSet)
新增或追加更新服务地址信息。
|
void |
appendAddress(String serviceID,
InterAddress newHost)
新增或追加更新服务地址信息。
|
void |
appendStaticAddress(String serviceID,
Collection<InterAddress> newHostSet)
新增或追加更新服务地址信息。
|
void |
appendStaticAddress(String serviceID,
InterAddress newHost)
新增或追加更新服务地址信息。
|
String |
argsRoute(String serviceID)
更新本地参数级地址计算脚本。
|
String |
flowControl(String serviceID)
更新服务路由策略
|
protected ArgsKey |
getArgsKey() |
AddressBucket |
getBucket(String serviceID) |
Set<String> |
getBucketNames()
获取地址池中注册的服务列表。
|
protected RuleRef |
getRefRule(String serviceID)
获取地址路由规则引用。
|
RsfEnvironment |
getRsfEnvironment()
获取所使用的RsfEnvironment
|
String |
getUnitName()
获取本机所属单元(虚机房 or 集群)
|
void |
invalidAddress(InterAddress address)
将服务的地址设置成临时失效状态。
|
String |
methodRoute(String serviceID)
更新本地方法级地址计算脚本。
|
InterAddress |
nextAddress(String serviceID,
String methodName,
Object[] args)
从服务地址本中获取一条可用的地址。
|
List<InterAddress> |
queryAllAddresses(String serviceID)
获取所有地址(包括本地的和无效的)。
|
List<InterAddress> |
queryAvailableAddresses(String serviceID)
获取计算之后可用的地址。
|
List<InterAddress> |
queryInvalidAddresses(String serviceID)
失效地址。
|
List<InterAddress> |
queryLocalUnitAddresses(String serviceID)
获取计算之后同一单元地址。
|
void |
refreshAddress(String serviceID,
List<InterAddress> addressList)
刷新服务的地址本,使其使用全新的地址本。
|
void |
refreshAddressCache()
刷新地址缓存
|
void |
removeAddress(InterAddress address)
某一个地址不可用了,从所有服务中删除这个地址
|
void |
removeAddress(String serviceID,
Collection<InterAddress> invalidAddressSet)
将服务的地址设置成临时失效状态,把地址从服务的地址本中彻底删除。
|
void |
removeAddress(String serviceID,
InterAddress invalidAddress)
将服务的地址设置成临时失效状态,把地址从服务的地址本中彻底删除。
|
boolean |
removeBucket(String serviceID)
从地址池中,删除指定服务的地址本。
|
void |
restoreConfig(InputStream inStream)
从保存的地址本中恢复数据。
|
String |
serviceRoute(String serviceID)
更新服务地址本计算规则(服务级)
|
void |
storeConfig(OutputStream outStream)
保存地址列表到zip流中。
|
String |
toString() |
boolean |
updateArgsRoute(String serviceID,
String scriptBody)
更新本地参数级地址计算脚本。
|
boolean |
updateFlowControl(String serviceID,
String flowControl)
更新服务的流控规则。
|
boolean |
updateMethodRoute(String serviceID,
String scriptBody)
更新本地方法级地址计算脚本。
|
boolean |
updateRoute(String serviceID,
RouteTypeEnum routeType,
String script)
更新某个服务的路由规则脚本。
|
boolean |
updateServiceRoute(String serviceID,
String scriptBody)
更新服务地址本计算规则(服务级)
|
public AddressPool(RsfEnvironment rsfEnvironment)
public AddressBucket getBucket(String serviceID)
public String getUnitName()
public RsfEnvironment getRsfEnvironment()
public Map<String,List<InterAddress>> allServiceAddressToSnapshot()
public Set<String> getBucketNames()
RsfBindInfo.getBindID()public void appendStaticAddress(String serviceID, InterAddress newHost)
如果追加的地址是已存在的失效地址,那么updateAddress方法将重新激活这些失效地址。
serviceID - 服务ID。newHost - 追加更新的地址。public void appendStaticAddress(String serviceID, Collection<InterAddress> newHostSet)
如果追加的地址是已存在的失效地址,那么updateAddress方法将重新激活这些失效地址。
appendStaticAddress 在接口中 RsfUpdaterserviceID - 服务ID。newHostSet - 追加更新的地址。public void appendAddress(String serviceID, InterAddress newHost)
如果追加的地址是已存在的失效地址,那么updateAddress方法将重新激活这些失效地址。
serviceID - 服务ID。newHost - 追加更新的地址。public void appendAddress(String serviceID, Collection<InterAddress> newHostSet)
如果追加的地址是已存在的失效地址,那么updateAddress方法将重新激活这些失效地址。
appendAddress 在接口中 RsfUpdaterserviceID - 服务ID。newHostSet - 追加更新的地址。public void invalidAddress(InterAddress address)
RsfSettings.getInvalidWaitTime()毫秒之后,失效的地址会重新被列入备选地址池。
置为失效,失效并不意味着永久的。address - 失效的地址。public void removeAddress(String serviceID, InterAddress invalidAddress)
removeAddress 在接口中 RsfUpdaterserviceID - 服务ID。invalidAddress - 将要删除的地址。public void removeAddress(String serviceID, Collection<InterAddress> invalidAddressSet)
removeAddress 在接口中 RsfUpdaterserviceID - 服务ID。invalidAddressSet - 将要删除的地址。public void removeAddress(InterAddress address)
RsfUpdaterremoveAddress 在接口中 RsfUpdaterpublic boolean removeBucket(String serviceID)
serviceID - 服务ID。public void refreshAddress(String serviceID, List<InterAddress> addressList)
RsfUpdaterrefreshAddress 在接口中 RsfUpdaterpublic void refreshAddressCache()
refreshAddressCache 在接口中 RsfUpdaterpublic InterAddress nextAddress(String serviceID, String methodName, Object[] args)
当一个服务具有多个地址的情况下,为了保证公平性地址池采取了随机选取的方式(路由策略:随机选址)
serviceID - 服务id。methodName - 调用该服务的方法名。args - 方法调用时用到的参数。protected ArgsKey getArgsKey()
public boolean updateServiceRoute(String serviceID, String scriptBody)
RsfUpdaterupdateServiceRoute 在接口中 RsfUpdaterpublic boolean updateMethodRoute(String serviceID, String scriptBody)
RsfUpdaterupdateMethodRoute 在接口中 RsfUpdaterpublic boolean updateArgsRoute(String serviceID, String scriptBody)
RsfUpdaterupdateArgsRoute 在接口中 RsfUpdaterpublic boolean updateFlowControl(String serviceID, String flowControl)
updateFlowControl 在接口中 RsfUpdaterserviceID - 应用到的服务。flowControl - 流控规则public boolean updateRoute(String serviceID, RouteTypeEnum routeType, String script)
serviceID - 要更新的服务。routeType - 更新的路由规则类型。script - 路由规则脚本内容。public String serviceRoute(String serviceID)
RsfUpdaterserviceRoute 在接口中 RsfUpdaterpublic String methodRoute(String serviceID)
RsfUpdatermethodRoute 在接口中 RsfUpdaterpublic String argsRoute(String serviceID)
RsfUpdaterargsRoute 在接口中 RsfUpdaterpublic String flowControl(String serviceID)
RsfUpdaterflowControl 在接口中 RsfUpdaterpublic List<InterAddress> queryAllAddresses(String serviceID)
RsfUpdaterqueryAllAddresses 在接口中 RsfUpdaterpublic List<InterAddress> queryAvailableAddresses(String serviceID)
RsfUpdaterqueryAvailableAddresses 在接口中 RsfUpdaterpublic List<InterAddress> queryInvalidAddresses(String serviceID)
RsfUpdaterqueryInvalidAddresses 在接口中 RsfUpdaterpublic List<InterAddress> queryLocalUnitAddresses(String serviceID)
RsfUpdaterqueryLocalUnitAddresses 在接口中 RsfUpdaterpublic void storeConfig(OutputStream outStream) throws IOException
IOExceptionpublic void restoreConfig(InputStream inStream) throws IOException
IOExceptionCopyright © 2020–2021. All rights reserved.