public abstract class AbstractEndpointFactory extends Object implements EndpointFactory
一些约定:
1) service :
1.1) not share channel : 某个service暴露服务的时候,不期望和别的service共享服务,明哲自保,比如你说:我很重要,我很重要。
1.2) share channel : 某个service 暴露服务的时候,如果有某个模块,但是拆成10个接口,可以使用这种方式,不过有一些约束条件:接口的几个serviceConfig配置需要保持一致。
不允许差异化的配置如下:
protocol, codec , serialize, maxContentLength , maxServerConnection , maxWorkerThread, workerQueueSize, heartbeatFactory
2)心跳机制:
不同的protocol的心跳包格式可能不一样,无法进行强制,那么通过可扩展的方式,依赖heartbeatFactory进行heartbeat包的创建,
同时对于service的messageHandler进行wrap heartbeat包的处理。
对于service来说,把心跳包当成普通的request处理,因为这种heartbeat才能够探测到整个service处理的关键路径的可用状况
| 限定符和类型 | 字段和说明 |
|---|---|
protected Map<String,Server> |
ipPort2ServerShareChannel
维持share channel 的service列表
|
protected ConcurrentMap<Server,Set<String>> |
server2UrlsShareChannel |
| 构造器和说明 |
|---|
AbstractEndpointFactory() |
| 限定符和类型 | 方法和说明 |
|---|---|
Client |
createClient(URL url)
create remote client
|
Server |
createServer(URL url,
MessageHandler messageHandler)
create remote server
|
EndpointManager |
getEndpointManager() |
Map<String,Server> |
getShallServerChannels() |
protected abstract Client |
innerCreateClient(URL url) |
protected abstract Server |
innerCreateServer(URL url,
MessageHandler messageHandler) |
void |
safeReleaseResource(Client client,
URL url)
safe release client
|
void |
safeReleaseResource(Server server,
URL url)
safe release server
|
protected Map<String,Server> ipPort2ServerShareChannel
protected ConcurrentMap<Server,Set<String>> server2UrlsShareChannel
public Server createServer(URL url, MessageHandler messageHandler)
EndpointFactorycreateServer 在接口中 EndpointFactorypublic Client createClient(URL url)
EndpointFactorycreateClient 在接口中 EndpointFactorypublic void safeReleaseResource(Server server, URL url)
EndpointFactorysafeReleaseResource 在接口中 EndpointFactorypublic void safeReleaseResource(Client client, URL url)
EndpointFactorysafeReleaseResource 在接口中 EndpointFactorypublic EndpointManager getEndpointManager()
protected abstract Server innerCreateServer(URL url, MessageHandler messageHandler)
Copyright © 2016. All rights reserved.