public abstract class AbstractCluster extends Cluster
| 限定符和类型 | 类和说明 |
|---|---|
protected class |
AbstractCluster.GracefulDestroyHook
优雅关闭的钩子
|
Destroyable.DestroyHook| 限定符和类型 | 字段和说明 |
|---|---|
protected AddressHolder |
addressHolder
地址保持器
|
protected ConnectionHolder |
connectionHolder
连接管理器
|
protected AtomicInteger |
countOfInvoke
当前Client正在发送的调用数量
|
protected boolean |
destroyed
是否已经销毁(已经销毁不能再继续使用)
|
protected FilterChain |
filterChain
过滤器链
|
protected boolean |
initialized
是否已启动(已建立连接)
|
protected LoadBalancer |
loadBalancer
负载均衡接口
|
protected RouterChain |
routerChain
路由列表
|
consumerBootstrap, consumerConfig| 构造器和说明 |
|---|
AbstractCluster(ConsumerBootstrap consumerBootstrap)
构造函数
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addProvider(ProviderGroup providerGroup)
增加某标签的服务端列表 (增量)
|
protected void |
checkAlias(ProviderInfo providerInfo,
SofaRequest message)
检查分组映射
|
protected void |
checkClusterState()
检测状态
|
protected void |
checkProviderInfo(ProviderGroup providerGroup)
检测服务节点的一些信息
|
protected void |
checkProviderVersion(ProviderInfo providerInfo,
SofaRequest request)
检查服务端版本,特殊处理
|
void |
checkStateChange(boolean originalState)
状态变化通知
|
protected void |
closeTransports()
关闭连接
注意:关闭有风险,可能有正在调用的请求,建议判断下isAvailable() |
Collection<ProviderInfo> |
currentProviderList()
获取当前的Provider全部列表(包括连上和没连上的),比较费性能,慎用
|
void |
destroy()
销毁接口
|
void |
destroy(Destroyable.DestroyHook hook)
Do destroy with hook.
|
protected abstract SofaResponse |
doInvoke(SofaRequest msg)
子类实现各自逻辑的调用,例如重试等
|
protected SofaResponse |
doSendMsg(ProviderInfo providerInfo,
ClientTransport transport,
SofaRequest request)
调用客户端
|
protected SofaResponse |
filterChain(ProviderInfo providerInfo,
SofaRequest request)
发起调用链
|
AddressHolder |
getAddressHolder()
地址管理器
|
ConnectionHolder |
getConnectionHolder()
连接管理器
|
ConsumerConfig<?> |
getConsumerConfig() |
FilterChain |
getFilterChain()
过滤器链
|
RouterChain |
getRouterChain()
路由器链
|
void |
init()
初始化
|
SofaResponse |
invoke(SofaRequest request)
执行调用
|
boolean |
isAvailable()
是否可用
|
protected SofaRouteException |
noAvailableProviderException(String serviceKey)
找不到可用的服务列表的异常
|
void |
notifyStateChangeToAvailable()
通知状态变成可用,主要是:
1.启动成功变成可用时 2.注册中心增加,更新节点后变成可用时 3.重连上从一个可用节点都没有-->有可用节点时 |
void |
notifyStateChangeToUnavailable()
通知状态变成不可用,主要是:
1.注册中心删除,更新节点后变成不可用时 2.连接断线后(心跳+调用),如果是可用节点为空 |
void |
removeProvider(ProviderGroup providerGroup)
删除某标签的服务端列表(增量)
|
protected ProviderInfo |
select(SofaRequest message)
根据规则进行负载均衡
|
protected ProviderInfo |
select(SofaRequest message,
List<ProviderInfo> invokedProviderInfos)
根据规则进行负载均衡
|
protected ClientTransport |
selectByProvider(SofaRequest message,
ProviderInfo providerInfo)
得到provider得到连接
|
protected ProviderInfo |
selectPinpointProvider(String targetIP,
List<ProviderInfo> providerInfos)
Select provider.
|
SofaResponse |
sendMsg(ProviderInfo providerInfo,
SofaRequest request)
调用远程地址发送消息
|
protected SofaRouteException |
unavailableProviderException(String serviceKey,
String providerInfo)
指定地址不可用
|
void |
updateAllProviders(List<ProviderGroup> providerGroups)
更新全部服务端列表(全量)
|
void |
updateProviders(ProviderGroup providerGroup)
更新某标签的服务端列表(全量)
|
protected volatile boolean initialized
protected volatile boolean destroyed
protected AtomicInteger countOfInvoke
protected RouterChain routerChain
protected LoadBalancer loadBalancer
protected AddressHolder addressHolder
protected ConnectionHolder connectionHolder
protected FilterChain filterChain
public AbstractCluster(ConsumerBootstrap consumerBootstrap)
consumerBootstrap - 服务端消费者启动器public void init()
Initializableprotected void checkClusterState()
public void addProvider(ProviderGroup providerGroup)
ProviderInfoListenerproviderGroup - 服务端列表组public void removeProvider(ProviderGroup providerGroup)
ProviderInfoListenerproviderGroup - 服务端列表组public void updateProviders(ProviderGroup providerGroup)
ProviderInfoListenerproviderGroup - 服务端列表组public void updateAllProviders(List<ProviderGroup> providerGroups)
ProviderInfoListenerproviderGroups - 全部服务端列表,为空代表清空已有列表protected void checkProviderInfo(ProviderGroup providerGroup)
providerGroup - 服务列表分组public SofaResponse invoke(SofaRequest request) throws SofaRpcException
Invokerrequest - 请求SofaRpcException - rpc异常protected abstract SofaResponse doInvoke(SofaRequest msg) throws SofaRpcException
msg - Request对象SofaRpcException - rpc异常protected void checkProviderVersion(ProviderInfo providerInfo, SofaRequest request)
providerInfo - 服务端request - 请求对象protected ProviderInfo select(SofaRequest message) throws SofaRpcException
message - 调用对象SofaRpcException - rpc异常protected ProviderInfo select(SofaRequest message, List<ProviderInfo> invokedProviderInfos) throws SofaRpcException
message - 调用对象invokedProviderInfos - 已调用列表SofaRpcException - rpc异常protected ProviderInfo selectPinpointProvider(String targetIP, List<ProviderInfo> providerInfos)
targetIP - the target ipprotected SofaRouteException noAvailableProviderException(String serviceKey)
serviceKey - 服务关键字protected SofaRouteException unavailableProviderException(String serviceKey, String providerInfo)
serviceKey - 服务关键字protected ClientTransport selectByProvider(SofaRequest message, ProviderInfo providerInfo)
message - 调用对象providerInfo - 指定Providerprotected void checkAlias(ProviderInfo providerInfo, SofaRequest message)
providerInfo - 服务端message - 请求对象protected SofaResponse filterChain(ProviderInfo providerInfo, SofaRequest request) throws SofaRpcException
providerInfo - 服务端信息request - 请求对象SofaRpcException - 请求RPC异常public SofaResponse sendMsg(ProviderInfo providerInfo, SofaRequest request) throws SofaRpcException
ClustersendMsg 在类中 ClusterproviderInfo - 服务提供者信息request - 请求SofaRpcException - RPC异常protected SofaResponse doSendMsg(ProviderInfo providerInfo, ClientTransport transport, SofaRequest request) throws SofaRpcException
transport - 客户端连接request - Request对象SofaRpcException - rpc异常public void destroy()
Destroyablepublic void destroy(Destroyable.DestroyHook hook)
Destroyablehook - DestroyHookprotected void closeTransports()
public boolean isAvailable()
ClusterisAvailable 在类中 Clusterpublic void checkStateChange(boolean originalState)
ClustercheckStateChange 在类中 ClusteroriginalState - Origin statepublic void notifyStateChangeToUnavailable()
public void notifyStateChangeToAvailable()
public Collection<ProviderInfo> currentProviderList()
public ConsumerConfig<?> getConsumerConfig()
public AddressHolder getAddressHolder()
ClustergetAddressHolder 在类中 Clusterpublic ConnectionHolder getConnectionHolder()
ClustergetConnectionHolder 在类中 Clusterpublic FilterChain getFilterChain()
ClustergetFilterChain 在类中 Clusterpublic RouterChain getRouterChain()
ClustergetRouterChain 在类中 ClusterCopyright © 2008–2018 The Ant Financial. All rights reserved.