Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
thythm
ribbon
提交
48784572
R
ribbon
项目概览
thythm
/
ribbon
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
ribbon
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
48784572
编写于
2月 01, 2019
作者:
E
elandau
提交者:
GitHub
2月 01, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #397 from elandau/feature/archaius_subproject
Decouple core library from archaius1
上级
304e38cf
5efbbda2
变更
34
隐藏空白更改
内联
并排
Showing
34 changed file
with
304 addition
and
254 deletion
+304
-254
build.gradle
build.gradle
+2
-2
ribbon-archaius/build.gradle
ribbon-archaius/build.gradle
+12
-0
ribbon-archaius/src/main/java/com/netflix/client/SimpleVipAddressResolver.java
...ain/java/com/netflix/client/SimpleVipAddressResolver.java
+0
-0
ribbon-archaius/src/main/java/com/netflix/client/config/ArchaiusClientConfigFactory.java
...om/netflix/client/config/ArchaiusClientConfigFactory.java
+8
-0
ribbon-archaius/src/main/java/com/netflix/client/config/DefaultClientConfigImpl.java
...va/com/netflix/client/config/DefaultClientConfigImpl.java
+44
-49
ribbon-archaius/src/main/java/com/netflix/utils/ScheduledThreadPoolExectuorWithDynamicSize.java
...lix/utils/ScheduledThreadPoolExectuorWithDynamicSize.java
+2
-0
ribbon-archaius/src/main/resources/META-INF/services/com.netflix.client.config.ClientConfigFactory
...NF/services/com.netflix.client.config.ClientConfigFactory
+1
-0
ribbon-core/build.gradle
ribbon-core/build.gradle
+3
-3
ribbon-core/src/main/java/com/netflix/client/DefaultLoadBalancerRetryHandler.java
...a/com/netflix/client/DefaultLoadBalancerRetryHandler.java
+3
-4
ribbon-core/src/main/java/com/netflix/client/config/ClientConfigFactory.java
...n/java/com/netflix/client/config/ClientConfigFactory.java
+17
-8
ribbon-core/src/main/java/com/netflix/client/config/CommonClientConfigKey.java
...java/com/netflix/client/config/CommonClientConfigKey.java
+49
-37
ribbon-core/src/main/java/com/netflix/client/config/IClientConfig.java
...rc/main/java/com/netflix/client/config/IClientConfig.java
+43
-27
ribbon-core/src/main/java/com/netflix/client/config/IClientConfigKey.java
...main/java/com/netflix/client/config/IClientConfigKey.java
+5
-3
ribbon-core/src/resources/META-INF/services/com.netflix.client.config.ClientConfigFactory
...NF/services/com.netflix.client.config.ClientConfigFactory
+0
-0
ribbon-core/src/test/java/com/netflix/client/config/ClientConfigTest.java
...test/java/com/netflix/client/config/ClientConfigTest.java
+0
-5
ribbon-eureka/build.gradle
ribbon-eureka/build.gradle
+1
-0
ribbon-eureka/src/main/java/com/netflix/niws/loadbalancer/DiscoveryEnabledNIWSServerList.java
...lix/niws/loadbalancer/DiscoveryEnabledNIWSServerList.java
+12
-18
ribbon-guice/src/main/java/com/netflix/ribbon/guice/RibbonModule.java
.../src/main/java/com/netflix/ribbon/guice/RibbonModule.java
+1
-2
ribbon-guice/src/test/java/com/netflix/ribbon/examples/rx/RxMovieProxyExampleTest.java
...m/netflix/ribbon/examples/rx/RxMovieProxyExampleTest.java
+1
-2
ribbon-httpclient/build.gradle
ribbon-httpclient/build.gradle
+1
-0
ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClient.java
...pclient/src/main/java/com/netflix/http4/NFHttpClient.java
+4
-5
ribbon-loadbalancer/build.gradle
ribbon-loadbalancer/build.gradle
+2
-0
ribbon-loadbalancer/src/main/java/com/netflix/client/ClientFactory.java
...ancer/src/main/java/com/netflix/client/ClientFactory.java
+50
-27
ribbon-loadbalancer/src/main/java/com/netflix/client/PrimeConnections.java
...er/src/main/java/com/netflix/client/PrimeConnections.java
+8
-14
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java
.../main/java/com/netflix/loadbalancer/BaseLoadBalancer.java
+3
-7
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ConfigurationBasedServerList.java
...om/netflix/loadbalancer/ConfigurationBasedServerList.java
+0
-5
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java
...m/netflix/loadbalancer/DynamicServerListLoadBalancer.java
+3
-8
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerBuilder.java
...in/java/com/netflix/loadbalancer/LoadBalancerBuilder.java
+4
-4
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerContext.java
...in/java/com/netflix/loadbalancer/LoadBalancerContext.java
+6
-8
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ServerListSubsetFilter.java
...java/com/netflix/loadbalancer/ServerListSubsetFilter.java
+5
-5
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneAffinityServerListFilter.java
...om/netflix/loadbalancer/ZoneAffinityServerListFilter.java
+2
-8
ribbon-transport/build.gradle
ribbon-transport/build.gradle
+1
-0
ribbon-transport/src/main/java/com/netflix/ribbon/transport/netty/http/LoadBalancingHttpClient.java
.../ribbon/transport/netty/http/LoadBalancingHttpClient.java
+0
-2
settings.gradle
settings.gradle
+11
-1
未找到文件。
build.gradle
浏览文件 @
48784572
...
...
@@ -9,8 +9,8 @@ subprojects {
apply
plugin:
'nebula.netflixoss'
apply
plugin:
'java'
sourceCompatibility
=
1.
7
targetCompatibility
=
1.
7
sourceCompatibility
=
1.
8
targetCompatibility
=
1.
8
group
=
"com.netflix.${githubProjectName}"
// TEMPLATE: Set to organization of project
...
...
ribbon-archaius/build.gradle
0 → 100644
浏览文件 @
48784572
dependencies
{
compile
'org.slf4j:slf4j-api:1.6.4'
compile
'com.google.code.findbugs:annotations:2.0.0'
compile
"com.google.guava:guava:${guava_version}"
compile
'commons-configuration:commons-configuration:1.8'
compile
'commons-lang:commons-lang:2.6'
compile
"com.netflix.archaius:archaius-core:${archaius_version}"
compile
project
(
':ribbon-core'
)
testCompile
'junit:junit:4.11'
}
ribbon-
core
/src/main/java/com/netflix/client/SimpleVipAddressResolver.java
→
ribbon-
archaius
/src/main/java/com/netflix/client/SimpleVipAddressResolver.java
浏览文件 @
48784572
文件已移动
ribbon-archaius/src/main/java/com/netflix/client/config/ArchaiusClientConfigFactory.java
0 → 100644
浏览文件 @
48784572
package
com.netflix.client.config
;
public
class
ArchaiusClientConfigFactory
implements
ClientConfigFactory
{
@Override
public
IClientConfig
newConfig
()
{
return
new
DefaultClientConfigImpl
();
}
}
ribbon-
core
/src/main/java/com/netflix/client/config/DefaultClientConfigImpl.java
→
ribbon-
archaius
/src/main/java/com/netflix/client/config/DefaultClientConfigImpl.java
浏览文件 @
48784572
...
...
@@ -19,11 +19,11 @@ package com.netflix.client.config;
import
com.google.common.base.Strings
;
import
com.netflix.client.VipAddressResolver
;
import
com.netflix.config.ConfigurationManager
;
import
com.netflix.config.DynamicProperty
;
import
com.netflix.config.DynamicPropertyFactory
;
import
com.netflix.config.DynamicStringProperty
;
import
org.apache.commons.configuration.AbstractConfiguration
;
import
org.apache.commons.configuration.Configuration
;
import
org.slf4j.Logger
;
...
...
@@ -84,25 +84,25 @@ public class DefaultClientConfigImpl implements IClientConfig {
public
static
final
Boolean
DEFAULT_PRIORITIZE_VIP_ADDRESS_BASED_SERVERS
=
Boolean
.
TRUE
;
public
static
final
String
DEFAULT_NFLOADBALANCER_PING_CLASSNAME
=
"com.netflix.loadbalancer.DummyPing"
;
// DummyPing.class.getNam
e();
public
static
final
String
DEFAULT_NFLOADBALANCER_PING_CLASSNAME
=
CommonClientConfigKey
.
NFLoadBalancerPingClassName
.
getDefaultValu
e
();
public
static
final
String
DEFAULT_NFLOADBALANCER_RULE_CLASSNAME
=
"com.netflix.loadbalancer.AvailabilityFilteringRule"
;
public
static
final
String
DEFAULT_NFLOADBALANCER_RULE_CLASSNAME
=
CommonClientConfigKey
.
NFLoadBalancerRuleClassName
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_NFLOADBALANCER_CLASSNAME
=
"com.netflix.loadbalancer.ZoneAwareLoadBalancer"
;
public
static
final
String
DEFAULT_NFLOADBALANCER_CLASSNAME
=
CommonClientConfigKey
.
NFLoadBalancerClassName
.
getDefaultValue
()
;
public
static
final
boolean
DEFAULT_USEIPADDRESS_FOR_SERVER
=
Boolean
.
FALSE
;
public
static
final
boolean
DEFAULT_USEIPADDRESS_FOR_SERVER
=
CommonClientConfigKey
.
UseIPAddrForServer
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_CLIENT_CLASSNAME
=
"com.netflix.niws.client.http.RestClient"
;
public
static
final
String
DEFAULT_CLIENT_CLASSNAME
=
CommonClientConfigKey
.
ClientClassName
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_VIPADDRESS_RESOLVER_CLASSNAME
=
"com.netflix.client.SimpleVipAddressResolver"
;
public
static
final
String
DEFAULT_VIPADDRESS_RESOLVER_CLASSNAME
=
CommonClientConfigKey
.
VipAddressResolverClassName
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_PRIME_CONNECTIONS_URI
=
"/"
;
public
static
final
String
DEFAULT_PRIME_CONNECTIONS_URI
=
CommonClientConfigKey
.
PrimeConnectionsURI
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_MAX_TOTAL_TIME_TO_PRIME_CONNECTIONS
=
30000
;
public
static
final
int
DEFAULT_MAX_TOTAL_TIME_TO_PRIME_CONNECTIONS
=
CommonClientConfigKey
.
MaxTotalTimeToPrimeConnections
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_MAX_RETRIES_PER_SERVER_PRIME_CONNECTION
=
9
;
public
static
final
int
DEFAULT_MAX_RETRIES_PER_SERVER_PRIME_CONNECTION
=
CommonClientConfigKey
.
MaxRetriesPerServerPrimeConnection
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_ENABLE_PRIME_CONNECTIONS
=
Boolean
.
FALSE
;
public
static
final
Boolean
DEFAULT_ENABLE_PRIME_CONNECTIONS
=
CommonClientConfigKey
.
EnablePrimeConnections
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_MAX_REQUESTS_ALLOWED_PER_WINDOW
=
Integer
.
MAX_VALUE
;
...
...
@@ -110,45 +110,45 @@ public class DefaultClientConfigImpl implements IClientConfig {
public
static
final
Boolean
DEFAULT_ENABLE_REQUEST_THROTTLING
=
Boolean
.
FALSE
;
public
static
final
Boolean
DEFAULT_ENABLE_GZIP_CONTENT_ENCODING_FILTER
=
Boolean
.
FALSE
;
public
static
final
Boolean
DEFAULT_ENABLE_GZIP_CONTENT_ENCODING_FILTER
=
CommonClientConfigKey
.
EnableGZIPContentEncodingFilter
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_CONNECTION_POOL_CLEANER_TASK_ENABLED
=
Boolean
.
TRUE
;
public
static
final
Boolean
DEFAULT_CONNECTION_POOL_CLEANER_TASK_ENABLED
=
CommonClientConfigKey
.
ConnectionPoolCleanerTaskEnabled
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_FOLLOW_REDIRECTS
=
Boolean
.
FALSE
;
public
static
final
Boolean
DEFAULT_FOLLOW_REDIRECTS
=
CommonClientConfigKey
.
FollowRedirects
.
getDefaultValue
()
;
public
static
final
float
DEFAULT_PERCENTAGE_NIWS_EVENT_LOGGED
=
0.0f
;
public
static
final
int
DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER
=
1
;
public
static
final
int
DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER
=
CommonClientConfigKey
.
MaxAutoRetriesNextServer
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_MAX_AUTO_RETRIES
=
0
;
public
static
final
int
DEFAULT_MAX_AUTO_RETRIES
=
CommonClientConfigKey
.
MaxAutoRetries
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_BACKOFF_INTERVAL
=
0
;
public
static
final
int
DEFAULT_BACKOFF_INTERVAL
=
CommonClientConfigKey
.
BackoffInterval
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_READ_TIMEOUT
=
5000
;
public
static
final
int
DEFAULT_READ_TIMEOUT
=
CommonClientConfigKey
.
ReadTimeout
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_CONNECTION_MANAGER_TIMEOUT
=
2000
;
public
static
final
int
DEFAULT_CONNECTION_MANAGER_TIMEOUT
=
CommonClientConfigKey
.
ConnectionManagerTimeout
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_CONNECT_TIMEOUT
=
2000
;
public
static
final
int
DEFAULT_CONNECT_TIMEOUT
=
CommonClientConfigKey
.
ConnectTimeout
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_ENABLE_CONNECTION_POOL
=
Boolean
.
TRUE
;
public
static
final
Boolean
DEFAULT_ENABLE_CONNECTION_POOL
=
CommonClientConfigKey
.
EnableConnectionPool
.
getDefaultValue
()
;
@Deprecated
public
static
final
int
DEFAULT_MAX_HTTP_CONNECTIONS_PER_HOST
=
50
;
public
static
final
int
DEFAULT_MAX_HTTP_CONNECTIONS_PER_HOST
=
CommonClientConfigKey
.
MaxHttpConnectionsPerHost
.
getDefaultValue
()
;
@Deprecated
public
static
final
int
DEFAULT_MAX_TOTAL_HTTP_CONNECTIONS
=
200
;
public
static
final
int
DEFAULT_MAX_TOTAL_HTTP_CONNECTIONS
=
CommonClientConfigKey
.
MaxTotalHttpConnections
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_MAX_CONNECTIONS_PER_HOST
=
50
;
public
static
final
int
DEFAULT_MAX_CONNECTIONS_PER_HOST
=
CommonClientConfigKey
.
MaxConnectionsPerHost
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_MAX_TOTAL_CONNECTIONS
=
200
;
public
static
final
int
DEFAULT_MAX_TOTAL_CONNECTIONS
=
CommonClientConfigKey
.
MaxTotalConnections
.
getDefaultValue
()
;
public
static
final
float
DEFAULT_MIN_PRIME_CONNECTIONS_RATIO
=
1.0f
;
public
static
final
float
DEFAULT_MIN_PRIME_CONNECTIONS_RATIO
=
CommonClientConfigKey
.
MinPrimeConnectionsRatio
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_PRIME_CONNECTIONS_CLASS
=
"com.netflix.niws.client.http.HttpPrimeConnection"
;
public
static
final
String
DEFAULT_PRIME_CONNECTIONS_CLASS
=
CommonClientConfigKey
.
PrimeConnectionsClassName
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_SEVER_LIST_CLASS
=
"com.netflix.loadbalancer.ConfigurationBasedServerList"
;
public
static
final
String
DEFAULT_SEVER_LIST_CLASS
=
CommonClientConfigKey
.
NIWSServerListClassName
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_SERVER_LIST_UPDATER_CLASS
=
"com.netflix.loadbalancer.PollingServerListUpdater"
;
public
static
final
String
DEFAULT_SERVER_LIST_UPDATER_CLASS
=
CommonClientConfigKey
.
ServerListUpdaterClassName
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_CONNECTION_IDLE_TIMERTASK_REPEAT_IN_MSECS
=
30000
;
// every half minute (30 secs)
...
...
@@ -173,16 +173,16 @@ public class DefaultClientConfigImpl implements IClientConfig {
public
static
final
int
DEFAULT_POOL_MIN_THREADS
=
1
;
public
static
final
long
DEFAULT_POOL_KEEP_ALIVE_TIME
=
15
*
60L
;
public
static
final
TimeUnit
DEFAULT_POOL_KEEP_ALIVE_TIME_UNITS
=
TimeUnit
.
SECONDS
;
public
static
final
Boolean
DEFAULT_ENABLE_ZONE_AFFINITY
=
Boolean
.
FALSE
;
public
static
final
Boolean
DEFAULT_ENABLE_ZONE_EXCLUSIVITY
=
Boolean
.
FALSE
;
public
static
final
int
DEFAULT_PORT
=
7001
;
public
static
final
Boolean
DEFAULT_ENABLE_LOADBALANCER
=
Boolean
.
TRUE
;
public
static
final
Boolean
DEFAULT_ENABLE_ZONE_AFFINITY
=
CommonClientConfigKey
.
EnableZoneAffinity
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_ENABLE_ZONE_EXCLUSIVITY
=
CommonClientConfigKey
.
EnableZoneExclusivity
.
getDefaultValue
()
;
public
static
final
int
DEFAULT_PORT
=
CommonClientConfigKey
.
Port
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_ENABLE_LOADBALANCER
=
CommonClientConfigKey
.
InitializeNFLoadBalancer
.
getDefaultValue
()
;
public
static
final
String
DEFAULT_PROPERTY_NAME_SPACE
=
"ribbon"
;
public
static
final
String
DEFAULT_PROPERTY_NAME_SPACE
=
CommonClientConfigKey
.
DEFAULT_NAME_SPACE
;
private
String
propertyNameSpace
=
DEFAULT_PROPERTY_NAME_SPACE
;
public
static
final
Boolean
DEFAULT_OK_TO_RETRY_ON_ALL_OPERATIONS
=
Boolean
.
FALSE
;
public
static
final
Boolean
DEFAULT_OK_TO_RETRY_ON_ALL_OPERATIONS
=
CommonClientConfigKey
.
OkToRetryOnAllOperations
.
getDefaultValue
()
;
public
static
final
Boolean
DEFAULT_ENABLE_NIWS_EVENT_LOGGING
=
Boolean
.
TRUE
;
...
...
@@ -632,7 +632,7 @@ public class DefaultClientConfigImpl implements IClientConfig {
if
(
resolver
==
null
)
{
try
{
resolver
=
(
VipAddressResolver
)
Class
.
forName
(
(
String
)
getProperty
(
CommonClientConfigKey
.
VipAddressResolverClassName
))
.
forName
(
getOrDefault
(
CommonClientConfigKey
.
VipAddressResolverClassName
))
.
newInstance
();
}
catch
(
InstantiationException
|
IllegalAccessException
|
ClassNotFoundException
e
)
{
throw
new
RuntimeException
(
"Cannot instantiate VipAddressResolver"
,
e
);
...
...
@@ -645,7 +645,7 @@ public class DefaultClientConfigImpl implements IClientConfig {
@Override
public
String
resolveDeploymentContextbasedVipAddresses
(){
String
deploymentContextBasedVipAddressesMacro
=
(
String
)
getProperty
(
CommonClientConfigKey
.
DeploymentContextBasedVipAddresses
);
String
deploymentContextBasedVipAddressesMacro
=
get
(
CommonClientConfigKey
.
DeploymentContextBasedVipAddresses
);
if
(
deploymentContextBasedVipAddressesMacro
==
null
)
{
return
null
;
}
...
...
@@ -653,21 +653,11 @@ public class DefaultClientConfigImpl implements IClientConfig {
}
public
String
getAppName
(){
String
appName
=
null
;
Object
an
=
getProperty
(
CommonClientConfigKey
.
AppName
);
if
(
an
!=
null
){
appName
=
""
+
an
;
}
return
appName
;
return
get
(
CommonClientConfigKey
.
AppName
);
}
public
String
getVersion
(){
String
version
=
null
;
Object
an
=
getProperty
(
CommonClientConfigKey
.
Version
);
if
(
an
!=
null
){
version
=
""
+
an
;
}
return
version
;
return
get
(
CommonClientConfigKey
.
Version
);
}
/* (non-Javadoc)
...
...
@@ -819,6 +809,11 @@ public class DefaultClientConfigImpl implements IClientConfig {
return
propertyNameSpace
;
}
@Override
public
void
setNameSpace
(
String
nameSpace
)
{
this
.
propertyNameSpace
=
nameSpace
;
}
public
static
DefaultClientConfigImpl
getEmptyConfig
()
{
return
new
DefaultClientConfigImpl
();
}
...
...
ribbon-
core
/src/main/java/com/netflix/utils/ScheduledThreadPoolExectuorWithDynamicSize.java
→
ribbon-
archaius
/src/main/java/com/netflix/utils/ScheduledThreadPoolExectuorWithDynamicSize.java
浏览文件 @
48784572
...
...
@@ -29,7 +29,9 @@ import com.netflix.config.DynamicIntProperty;
*
* @author awang
*
* @deprecated This class is no longer necessary as part of Ribbon and should not be used by anyone
*/
@Deprecated
public
class
ScheduledThreadPoolExectuorWithDynamicSize
extends
ScheduledThreadPoolExecutor
{
private
final
Thread
shutdownThread
;
...
...
ribbon-archaius/src/main/resources/META-INF/services/com.netflix.client.config.ClientConfigFactory
0 → 100644
浏览文件 @
48784572
com.netflix.client.config.ArchaiusClientConfigFactory
\ No newline at end of file
ribbon-core/build.gradle
浏览文件 @
48784572
...
...
@@ -2,8 +2,8 @@ dependencies {
compile
'org.slf4j:slf4j-api:1.6.4'
compile
'com.google.code.findbugs:annotations:2.0.0'
compile
"com.google.guava:guava:${guava_version}"
compile
'commons-configuration:commons-configuration:1.8'
compile
'commons-lang:commons-lang:2.6'
compile
"com.netflix.archaius:archaius-core:${archaius_version}"
testCompile
'junit:junit:4.11'
testCompile
'junit:junit:4.11'
testCompile
project
(
":ribbon-archaius"
)
}
ribbon-core/src/main/java/com/netflix/client/DefaultLoadBalancerRetryHandler.java
浏览文件 @
48784572
...
...
@@ -19,7 +19,6 @@ package com.netflix.client;
import
com.google.common.collect.Lists
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
java.net.ConnectException
;
...
...
@@ -61,9 +60,9 @@ public class DefaultLoadBalancerRetryHandler implements RetryHandler {
}
public
DefaultLoadBalancerRetryHandler
(
IClientConfig
clientConfig
)
{
this
.
retrySameServer
=
clientConfig
.
get
(
CommonClientConfigKey
.
MaxAutoRetries
,
DefaultClientConfigImpl
.
DEFAULT_MAX_AUTO_RETRIES
);
this
.
retryNextServer
=
clientConfig
.
get
(
CommonClientConfigKey
.
MaxAutoRetriesNextServer
,
DefaultClientConfigImpl
.
DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER
);
this
.
retryEnabled
=
clientConfig
.
get
(
CommonClientConfigKey
.
OkToRetryOnAllOperations
,
false
);
this
.
retrySameServer
=
clientConfig
.
get
OrDefault
(
CommonClientConfigKey
.
MaxAutoRetries
);
this
.
retryNextServer
=
clientConfig
.
get
OrDefault
(
CommonClientConfigKey
.
MaxAutoRetriesNextServer
);
this
.
retryEnabled
=
clientConfig
.
get
OrDefault
(
CommonClientConfigKey
.
OkToRetryOnAllOperations
);
}
@Override
...
...
ribbon-core/src/main/java/com/netflix/client/config/ClientConfigFactory.java
浏览文件 @
48784572
...
...
@@ -16,19 +16,28 @@
package
com.netflix.client.config
;
import
java.util.Comparator
;
import
java.util.ServiceLoader
;
import
java.util.stream.StreamSupport
;
/**
* Created by awang on 7/18/14.
*/
public
interface
ClientConfigFactory
{
IClientConfig
newConfig
();
public
static
class
DefaultClientConfigFactory
implements
ClientConfigFactory
{
@Override
public
IClientConfig
newConfig
()
{
IClientConfig
config
=
new
DefaultClientConfigImpl
();
return
config
;
}
ClientConfigFactory
DEFAULT
=
findDefaultConfigFactory
();
default
int
getPriority
()
{
return
0
;
}
static
ClientConfigFactory
findDefaultConfigFactory
()
{
return
StreamSupport
.
stream
(
ServiceLoader
.
load
(
ClientConfigFactory
.
class
).
spliterator
(),
false
)
.
sorted
(
Comparator
.
comparingInt
(
ClientConfigFactory:
:
getPriority
)
.
thenComparing
(
Comparator
.
comparing
(
f
->
f
.
getClass
().
getCanonicalName
())))
.
findFirst
()
.
orElseGet
(()
->
{
throw
new
IllegalStateException
(
"Expecting at least one implementation of ClientConfigFactory discoverable via the ServiceLoader"
);
});
}
public
static
final
ClientConfigFactory
DEFAULT
=
new
DefaultClientConfigFactory
();
}
ribbon-core/src/main/java/com/netflix/client/config/CommonClientConfigKey.java
浏览文件 @
48784572
...
...
@@ -30,13 +30,15 @@ import static com.google.common.base.Preconditions.checkArgument;
public
abstract
class
CommonClientConfigKey
<
T
>
implements
IClientConfigKey
<
T
>
{
public
static
final
String
DEFAULT_NAME_SPACE
=
"ribbon"
;
public
static
final
IClientConfigKey
<
String
>
AppName
=
new
CommonClientConfigKey
<
String
>(
"AppName"
){};
public
static
final
IClientConfigKey
<
String
>
Version
=
new
CommonClientConfigKey
<
String
>(
"Version"
){};
public
static
final
IClientConfigKey
<
Integer
>
Port
=
new
CommonClientConfigKey
<
Integer
>(
"Port"
){};
public
static
final
IClientConfigKey
<
Integer
>
Port
=
new
CommonClientConfigKey
<
Integer
>(
"Port"
,
7001
){};
public
static
final
IClientConfigKey
<
Integer
>
SecurePort
=
new
CommonClientConfigKey
<
Integer
>(
"SecurePort"
){};
public
static
final
IClientConfigKey
<
Integer
>
SecurePort
=
new
CommonClientConfigKey
<
Integer
>(
"SecurePort"
,
7001
){};
public
static
final
IClientConfigKey
<
String
>
VipAddress
=
new
CommonClientConfigKey
<
String
>(
"VipAddress"
){};
...
...
@@ -44,27 +46,27 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
String
>
DeploymentContextBasedVipAddresses
=
new
CommonClientConfigKey
<
String
>(
"DeploymentContextBasedVipAddresses"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxAutoRetries
=
new
CommonClientConfigKey
<
Integer
>(
"MaxAutoRetries"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxAutoRetries
=
new
CommonClientConfigKey
<
Integer
>(
"MaxAutoRetries"
,
0
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxAutoRetriesNextServer
=
new
CommonClientConfigKey
<
Integer
>(
"MaxAutoRetriesNextServer"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxAutoRetriesNextServer
=
new
CommonClientConfigKey
<
Integer
>(
"MaxAutoRetriesNextServer"
,
1
){};
public
static
final
IClientConfigKey
<
Boolean
>
OkToRetryOnAllOperations
=
new
CommonClientConfigKey
<
Boolean
>(
"OkToRetryOnAllOperations"
){};
public
static
final
IClientConfigKey
<
Boolean
>
OkToRetryOnAllOperations
=
new
CommonClientConfigKey
<
Boolean
>(
"OkToRetryOnAllOperations"
,
false
){};
public
static
final
IClientConfigKey
<
Boolean
>
RequestSpecificRetryOn
=
new
CommonClientConfigKey
<
Boolean
>(
"RequestSpecificRetryOn"
){};
public
static
final
IClientConfigKey
<
Integer
>
ReceiveBufferSize
=
new
CommonClientConfigKey
<
Integer
>(
"ReceiveBufferSize"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnablePrimeConnections
=
new
CommonClientConfigKey
<
Boolean
>(
"EnablePrimeConnections"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnablePrimeConnections
=
new
CommonClientConfigKey
<
Boolean
>(
"EnablePrimeConnections"
,
false
){};
public
static
final
IClientConfigKey
<
String
>
PrimeConnectionsClassName
=
new
CommonClientConfigKey
<
String
>(
"PrimeConnectionsClassName"
){};
public
static
final
IClientConfigKey
<
String
>
PrimeConnectionsClassName
=
new
CommonClientConfigKey
<
String
>(
"PrimeConnectionsClassName"
,
"com.netflix.niws.client.http.HttpPrimeConnection"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxRetriesPerServerPrimeConnection
=
new
CommonClientConfigKey
<
Integer
>(
"MaxRetriesPerServerPrimeConnection"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxRetriesPerServerPrimeConnection
=
new
CommonClientConfigKey
<
Integer
>(
"MaxRetriesPerServerPrimeConnection"
,
9
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxTotalTimeToPrimeConnections
=
new
CommonClientConfigKey
<
Integer
>(
"MaxTotalTimeToPrimeConnections"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxTotalTimeToPrimeConnections
=
new
CommonClientConfigKey
<
Integer
>(
"MaxTotalTimeToPrimeConnections"
,
30000
){};
public
static
final
IClientConfigKey
<
Float
>
MinPrimeConnectionsRatio
=
new
CommonClientConfigKey
<
Float
>(
"MinPrimeConnectionsRatio"
){};
public
static
final
IClientConfigKey
<
Float
>
MinPrimeConnectionsRatio
=
new
CommonClientConfigKey
<
Float
>(
"MinPrimeConnectionsRatio"
,
1.0f
){};
public
static
final
IClientConfigKey
<
String
>
PrimeConnectionsURI
=
new
CommonClientConfigKey
<
String
>(
"PrimeConnectionsURI"
){};
public
static
final
IClientConfigKey
<
String
>
PrimeConnectionsURI
=
new
CommonClientConfigKey
<
String
>(
"PrimeConnectionsURI"
,
"/"
){};
public
static
final
IClientConfigKey
<
Integer
>
PoolMaxThreads
=
new
CommonClientConfigKey
<
Integer
>(
"PoolMaxThreads"
){};
...
...
@@ -74,33 +76,33 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
String
>
PoolKeepAliveTimeUnits
=
new
CommonClientConfigKey
<
String
>(
"PoolKeepAliveTimeUnits"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableConnectionPool
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableConnectionPool"
)
{};
public
static
final
IClientConfigKey
<
Boolean
>
EnableConnectionPool
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableConnectionPool"
,
true
)
{};
/**
* Use {@link #MaxConnectionsPerHost}
*/
@Deprecated
public
static
final
IClientConfigKey
<
Integer
>
MaxHttpConnectionsPerHost
=
new
CommonClientConfigKey
<
Integer
>(
"MaxHttpConnectionsPerHost"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxHttpConnectionsPerHost
=
new
CommonClientConfigKey
<
Integer
>(
"MaxHttpConnectionsPerHost"
,
50
){};
/**
* Use {@link #MaxTotalConnections}
*/
@Deprecated
public
static
final
IClientConfigKey
<
Integer
>
MaxTotalHttpConnections
=
new
CommonClientConfigKey
<
Integer
>(
"MaxTotalHttpConnections"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxTotalHttpConnections
=
new
CommonClientConfigKey
<
Integer
>(
"MaxTotalHttpConnections"
,
200
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxConnectionsPerHost
=
new
CommonClientConfigKey
<
Integer
>(
"MaxConnectionsPerHost"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxConnectionsPerHost
=
new
CommonClientConfigKey
<
Integer
>(
"MaxConnectionsPerHost"
,
50
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxTotalConnections
=
new
CommonClientConfigKey
<
Integer
>(
"MaxTotalConnections"
){};
public
static
final
IClientConfigKey
<
Integer
>
MaxTotalConnections
=
new
CommonClientConfigKey
<
Integer
>(
"MaxTotalConnections"
,
200
){};
public
static
final
IClientConfigKey
<
Boolean
>
IsSecure
=
new
CommonClientConfigKey
<
Boolean
>(
"IsSecure"
){};
public
static
final
IClientConfigKey
<
Boolean
>
GZipPayload
=
new
CommonClientConfigKey
<
Boolean
>(
"GZipPayload"
){};
public
static
final
IClientConfigKey
<
Integer
>
ConnectTimeout
=
new
CommonClientConfigKey
<
Integer
>(
"ConnectTimeout"
){};
public
static
final
IClientConfigKey
<
Integer
>
ConnectTimeout
=
new
CommonClientConfigKey
<
Integer
>(
"ConnectTimeout"
,
2000
){};
public
static
final
IClientConfigKey
<
Integer
>
BackoffInterval
=
new
CommonClientConfigKey
<
Integer
>(
"BackoffTimeout"
){};
public
static
final
IClientConfigKey
<
Integer
>
BackoffInterval
=
new
CommonClientConfigKey
<
Integer
>(
"BackoffTimeout"
,
0
){};
public
static
final
IClientConfigKey
<
Integer
>
ReadTimeout
=
new
CommonClientConfigKey
<
Integer
>(
"ReadTimeout"
){};
public
static
final
IClientConfigKey
<
Integer
>
ReadTimeout
=
new
CommonClientConfigKey
<
Integer
>(
"ReadTimeout"
,
5000
){};
public
static
final
IClientConfigKey
<
Integer
>
SendBufferSize
=
new
CommonClientConfigKey
<
Integer
>(
"SendBufferSize"
){};
...
...
@@ -108,17 +110,17 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
Integer
>
Linger
=
new
CommonClientConfigKey
<
Integer
>(
"Linger"
){};
public
static
final
IClientConfigKey
<
Integer
>
ConnectionManagerTimeout
=
new
CommonClientConfigKey
<
Integer
>(
"ConnectionManagerTimeout"
){};
public
static
final
IClientConfigKey
<
Integer
>
ConnectionManagerTimeout
=
new
CommonClientConfigKey
<
Integer
>(
"ConnectionManagerTimeout"
,
2000
){};
public
static
final
IClientConfigKey
<
Boolean
>
FollowRedirects
=
new
CommonClientConfigKey
<
Boolean
>(
"FollowRedirects"
){};
public
static
final
IClientConfigKey
<
Boolean
>
FollowRedirects
=
new
CommonClientConfigKey
<
Boolean
>(
"FollowRedirects"
,
false
){};
public
static
final
IClientConfigKey
<
Boolean
>
ConnectionPoolCleanerTaskEnabled
=
new
CommonClientConfigKey
<
Boolean
>(
"ConnectionPoolCleanerTaskEnabled"
){};
public
static
final
IClientConfigKey
<
Boolean
>
ConnectionPoolCleanerTaskEnabled
=
new
CommonClientConfigKey
<
Boolean
>(
"ConnectionPoolCleanerTaskEnabled"
,
true
){};
public
static
final
IClientConfigKey
<
Integer
>
ConnIdleEvictTimeMilliSeconds
=
new
CommonClientConfigKey
<
Integer
>(
"ConnIdleEvictTimeMilliSeconds"
){};
public
static
final
IClientConfigKey
<
Integer
>
ConnectionCleanerRepeatInterval
=
new
CommonClientConfigKey
<
Integer
>(
"ConnectionCleanerRepeatInterval"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableGZIPContentEncodingFilter
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableGZIPContentEncodingFilter"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableGZIPContentEncodingFilter
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableGZIPContentEncodingFilter"
,
false
){};
public
static
final
IClientConfigKey
<
String
>
ProxyHost
=
new
CommonClientConfigKey
<
String
>(
"ProxyHost"
){};
...
...
@@ -143,16 +145,16 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
Boolean
>
IgnoreUserTokenInConnectionPoolForSecureClient
=
new
CommonClientConfigKey
<
Boolean
>(
"IgnoreUserTokenInConnectionPoolForSecureClient"
){};
// Client implementation
public
static
final
IClientConfigKey
<
String
>
ClientClassName
=
new
CommonClientConfigKey
<
String
>(
"ClientClassName"
){};
public
static
final
IClientConfigKey
<
String
>
ClientClassName
=
new
CommonClientConfigKey
<
String
>(
"ClientClassName"
,
"com.netflix.niws.client.http.RestClient"
){};
//LoadBalancer Related
public
static
final
IClientConfigKey
<
Boolean
>
InitializeNFLoadBalancer
=
new
CommonClientConfigKey
<
Boolean
>(
"InitializeNFLoadBalancer"
){};
public
static
final
IClientConfigKey
<
Boolean
>
InitializeNFLoadBalancer
=
new
CommonClientConfigKey
<
Boolean
>(
"InitializeNFLoadBalancer"
,
true
){};
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerClassName"
){};
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerClassName"
,
"com.netflix.loadbalancer.ZoneAwareLoadBalancer"
){};
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerRuleClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerRuleClassName"
){};
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerRuleClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerRuleClassName"
,
"com.netflix.loadbalancer.AvailabilityFilteringRule"
){};
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerPingClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerPingClassName"
){};
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerPingClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerPingClassName"
,
"com.netflix.loadbalancer.DummyPing"
){};
public
static
final
IClientConfigKey
<
Integer
>
NFLoadBalancerPingInterval
=
new
CommonClientConfigKey
<
Integer
>(
"NFLoadBalancerPingInterval"
){};
...
...
@@ -160,9 +162,9 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
String
>
NFLoadBalancerStatsClassName
=
new
CommonClientConfigKey
<
String
>(
"NFLoadBalancerStatsClassName"
){};
public
static
final
IClientConfigKey
<
String
>
NIWSServerListClassName
=
new
CommonClientConfigKey
<
String
>(
"NIWSServerListClassName"
){};
public
static
final
IClientConfigKey
<
String
>
NIWSServerListClassName
=
new
CommonClientConfigKey
<
String
>(
"NIWSServerListClassName"
,
"com.netflix.loadbalancer.ConfigurationBasedServerList"
){};
public
static
final
IClientConfigKey
<
String
>
ServerListUpdaterClassName
=
new
CommonClientConfigKey
<
String
>(
"ServerListUpdaterClassName"
){};
public
static
final
IClientConfigKey
<
String
>
ServerListUpdaterClassName
=
new
CommonClientConfigKey
<
String
>(
"ServerListUpdaterClassName"
,
"com.netflix.loadbalancer.PollingServerListUpdater"
){};
public
static
final
IClientConfigKey
<
String
>
NIWSServerListFilterClassName
=
new
CommonClientConfigKey
<
String
>(
"NIWSServerListFilterClassName"
){};
...
...
@@ -174,13 +176,13 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
Integer
>
ServerDownStatWindowInMillis
=
new
CommonClientConfigKey
<
Integer
>(
"ServerDownStatWindowInMillis"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableZoneAffinity
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableZoneAffinity"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableZoneAffinity
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableZoneAffinity"
,
false
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableZoneExclusivity
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableZoneExclusivity"
){};
public
static
final
IClientConfigKey
<
Boolean
>
EnableZoneExclusivity
=
new
CommonClientConfigKey
<
Boolean
>(
"EnableZoneExclusivity"
,
false
){};
public
static
final
IClientConfigKey
<
Boolean
>
PrioritizeVipAddressBasedServers
=
new
CommonClientConfigKey
<
Boolean
>(
"PrioritizeVipAddressBasedServers"
){};
public
static
final
IClientConfigKey
<
String
>
VipAddressResolverClassName
=
new
CommonClientConfigKey
<
String
>(
"VipAddressResolverClassName"
){};
public
static
final
IClientConfigKey
<
String
>
VipAddressResolverClassName
=
new
CommonClientConfigKey
<
String
>(
"VipAddressResolverClassName"
,
"com.netflix.client.SimpleVipAddressResolver"
){};
public
static
final
IClientConfigKey
<
String
>
TargetRegion
=
new
CommonClientConfigKey
<
String
>(
"TargetRegion"
){};
...
...
@@ -188,7 +190,7 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
static
final
IClientConfigKey
<
String
>
RequestIdHeaderName
=
new
CommonClientConfigKey
<
String
>(
"RequestIdHeaderName"
)
{};
public
static
final
IClientConfigKey
<
Boolean
>
UseIPAddrForServer
=
new
CommonClientConfigKey
<
Boolean
>(
"UseIPAddrForServer"
)
{};
public
static
final
IClientConfigKey
<
Boolean
>
UseIPAddrForServer
=
new
CommonClientConfigKey
<
Boolean
>(
"UseIPAddrForServer"
,
false
)
{};
public
static
final
IClientConfigKey
<
String
>
ListOfServers
=
new
CommonClientConfigKey
<
String
>(
"listOfServers"
)
{};
...
...
@@ -244,17 +246,23 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
private
final
String
configKey
;
private
final
Class
<
T
>
type
;
private
T
defaultValue
;
@SuppressWarnings
(
"unchecked"
)
protected
CommonClientConfigKey
(
String
configKey
)
{
this
(
configKey
,
null
);
}
protected
CommonClientConfigKey
(
String
configKey
,
T
defaultValue
)
{
this
.
configKey
=
configKey
;
Type
superclass
=
getClass
().
getGenericSuperclass
();
checkArgument
(
superclass
instanceof
ParameterizedType
,
"%s isn't parameterized"
,
superclass
);
"%s isn't parameterized"
,
superclass
);
Type
runtimeType
=
((
ParameterizedType
)
superclass
).
getActualTypeArguments
()[
0
];
type
=
(
Class
<
T
>)
TypeToken
.
of
(
runtimeType
).
getRawType
();
this
.
defaultValue
=
defaultValue
;
}
@Override
public
Class
<
T
>
type
()
{
return
type
;
...
...
@@ -272,4 +280,8 @@ public abstract class CommonClientConfigKey<T> implements IClientConfigKey<T> {
public
String
toString
()
{
return
configKey
;
}
@Override
public
T
getDefaultValue
()
{
return
defaultValue
;
}
}
ribbon-core/src/main/java/com/netflix/client/config/IClientConfig.java
浏览文件 @
48784572
...
...
@@ -21,67 +21,66 @@ import java.util.Map;
/**
* Defines the client configuration used by various APIs to initialize clients or load balancers
* and for method execution.
The default implementation is {@link DefaultClientConfigImpl}.
* and for method execution.
*
* @author awang
*
*/
public
interface
IClientConfig
{
public
String
getClientName
();
String
getClientName
();
public
String
getNameSpace
();
String
getNameSpace
();
void
setNameSpace
(
String
nameSpace
);
/**
* Load the properties for a given client and/or load balancer.
* @param clientName
*/
public
void
loadProperties
(
String
clientName
);
void
loadProperties
(
String
clientName
);
/**
* load default values for this configuration
*/
public
void
loadDefaultValues
();
void
loadDefaultValues
();
public
Map
<
String
,
Object
>
getProperties
();
Map
<
String
,
Object
>
getProperties
();
/**
* @deprecated use {@link #set(IClientConfigKey, Object)}
*/
@Deprecated
public
void
setProperty
(
IClientConfigKey
key
,
Object
value
);
void
setProperty
(
IClientConfigKey
key
,
Object
value
);
/**
* @deprecated use {@link #get(IClientConfigKey)}
*/
@Deprecated
public
Object
getProperty
(
IClientConfigKey
key
);
Object
getProperty
(
IClientConfigKey
key
);
/**
* @deprecated use {@link #get(IClientConfigKey, Object)}
*/
@Deprecated
public
Object
getProperty
(
IClientConfigKey
key
,
Object
defaultVal
);
Object
getProperty
(
IClientConfigKey
key
,
Object
defaultVal
);
public
boolean
containsProperty
(
IClientConfigKey
key
);
boolean
containsProperty
(
IClientConfigKey
key
);
/**
* Returns the applicable virtual addresses ("vip") used by this client configuration.
*/
public
String
resolveDeploymentContextbasedVipAddresses
();
String
resolveDeploymentContextbasedVipAddresses
();
public
int
getPropertyAsInteger
(
IClientConfigKey
key
,
int
defaultValue
);
int
getPropertyAsInteger
(
IClientConfigKey
key
,
int
defaultValue
);
public
String
getPropertyAsString
(
IClientConfigKey
key
,
String
defaultValue
);
String
getPropertyAsString
(
IClientConfigKey
key
,
String
defaultValue
);
public
boolean
getPropertyAsBoolean
(
IClientConfigKey
key
,
boolean
defaultValue
);
boolean
getPropertyAsBoolean
(
IClientConfigKey
key
,
boolean
defaultValue
);
/**
* Returns a typed property. If the property of IClientConfigKey is not set, it returns null.
* <p>
* For {@link DefaultClientConfigImpl}, if the value of the property is String,
* it will do basic type conversion from String to the following type:
* <ul>
* <li>Integer</li>
* <li>Boolean</li>
...
...
@@ -91,20 +90,37 @@ public interface IClientConfig {
* </ul>
* <br><br>
*/
public
<
T
>
T
get
(
IClientConfigKey
<
T
>
key
);
<
T
>
T
get
(
IClientConfigKey
<
T
>
key
);
/**
* Returns a typed property. If the property of IClientConfigKey is not set, it returns the default value, which
* could be null.
* <p>
* <ul>
* <li>Integer</li>
* <li>Boolean</li>
* <li>Float</li>
* <li>Long</li>
* <li>Double</li>
* </ul>
* <br><br>
*/
default
<
T
>
T
getOrDefault
(
IClientConfigKey
<
T
>
key
)
{
return
get
(
key
,
key
.
getDefaultValue
());
}
/**
* Returns a typed property. If the property of IClientConfigKey is not set,
* it returns the default value passed in as the parameter.
*/
public
<
T
>
T
get
(
IClientConfigKey
<
T
>
key
,
T
defaultValue
);
<
T
>
T
get
(
IClientConfigKey
<
T
>
key
,
T
defaultValue
);
/**
* Set the typed property with the given value.
*/
public
<
T
>
IClientConfig
set
(
IClientConfigKey
<
T
>
key
,
T
value
);
<
T
>
IClientConfig
set
(
IClientConfigKey
<
T
>
key
,
T
value
);
public
static
class
Builder
{
class
Builder
{
private
IClientConfig
config
;
...
...
@@ -112,12 +128,11 @@ public interface IClientConfig {
}
/**
* Create a builder with no initial property and value for the configuration to be built. The configuration object
* that will be built is an instance of {@link DefaultClientConfigImpl}
* Create a builder with no initial property and value for the configuration to be built.
*/
public
static
Builder
newBuilder
()
{
Builder
builder
=
new
Builder
();
builder
.
config
=
new
DefaultClientConfigImpl
();
builder
.
config
=
ClientConfigFactory
.
findDefaultConfigFactory
().
newConfig
();
return
builder
;
}
...
...
@@ -130,7 +145,7 @@ public interface IClientConfig {
*/
public
static
Builder
newBuilder
(
String
clientName
)
{
Builder
builder
=
new
Builder
();
builder
.
config
=
new
DefaultClientConfigImpl
();
builder
.
config
=
ClientConfigFactory
.
findDefaultConfigFactory
().
newConfig
();
builder
.
config
.
loadProperties
(
clientName
);
return
builder
;
}
...
...
@@ -144,7 +159,8 @@ public interface IClientConfig {
*/
public
static
Builder
newBuilder
(
String
clientName
,
String
propertyNameSpace
)
{
Builder
builder
=
new
Builder
();
builder
.
config
=
new
DefaultClientConfigImpl
(
propertyNameSpace
);
builder
.
config
=
ClientConfigFactory
.
findDefaultConfigFactory
().
newConfig
();
builder
.
config
.
setNameSpace
(
propertyNameSpace
);
builder
.
config
.
loadProperties
(
clientName
);
return
builder
;
}
...
...
ribbon-core/src/main/java/com/netflix/client/config/IClientConfigKey.java
浏览文件 @
48784572
...
...
@@ -27,7 +27,7 @@ package com.netflix.client.config;
public
interface
IClientConfigKey
<
T
>
{
@SuppressWarnings
(
"rawtypes"
)
public
static
final
class
Keys
extends
CommonClientConfigKey
{
final
class
Keys
extends
CommonClientConfigKey
{
private
Keys
(
String
configKey
)
{
super
(
configKey
);
}
...
...
@@ -36,10 +36,12 @@ public interface IClientConfigKey<T> {
/**
* @return string representation of the key used for hash purpose.
*/
public
String
key
();
String
key
();
/**
* @return Data type for the key. For example, Integer.class.
*/
public
Class
<
T
>
type
();
Class
<
T
>
type
();
default
T
getDefaultValue
()
{
return
null
;
}
}
ribbon-core/src/resources/META-INF/services/com.netflix.client.config.ClientConfigFactory
0 → 100644
浏览文件 @
48784572
ribbon-core/src/test/java/com/netflix/client/config/ClientConfigTest.java
浏览文件 @
48784572
...
...
@@ -19,7 +19,6 @@ package com.netflix.client.config;
import
static
org
.
junit
.
Assert
.*;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.config.ConfigurationManager
;
...
...
@@ -37,10 +36,6 @@ import java.util.Properties;
*
*/
public
class
ClientConfigTest
{
@BeforeClass
public
static
void
setUp
()
throws
Exception
{
}
...
...
ribbon-eureka/build.gradle
浏览文件 @
48784572
...
...
@@ -6,6 +6,7 @@ dependencies {
compile
'org.slf4j:slf4j-api:1.6.4'
compile
"com.netflix.archaius:archaius-core:${archaius_version}"
testCompile
project
(
":ribbon-archaius"
)
testCompile
"junit:junit:${junit_version}"
testCompile
"org.powermock:powermock-easymock-release-full:${powermock_version}"
testCompile
"org.powermock:powermock-mockito-release-full:${powermock_version}"
...
...
ribbon-eureka/src/main/java/com/netflix/niws/loadbalancer/DiscoveryEnabledNIWSServerList.java
浏览文件 @
48784572
...
...
@@ -22,8 +22,8 @@ import java.util.List;
import
com.netflix.appinfo.InstanceInfo
;
import
com.netflix.appinfo.InstanceInfo.InstanceStatus
;
import
com.netflix.client.config.ClientConfigFactory
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.client.config.IClientConfigKey.Keys
;
import
com.netflix.config.ConfigurationManager
;
...
...
@@ -56,7 +56,7 @@ public class DiscoveryEnabledNIWSServerList extends AbstractServerList<Discovery
String
datacenter
;
String
targetRegion
;
int
overridePort
=
DefaultClientConfigImpl
.
DEFAULT_PORT
;
int
overridePort
=
CommonClientConfigKey
.
Port
.
getDefaultValue
()
;
boolean
shouldUseOverridePort
=
false
;
boolean
shouldUseIpAddr
=
false
;
...
...
@@ -113,29 +113,23 @@ public class DiscoveryEnabledNIWSServerList extends AbstractServerList<Discovery
datacenter
=
ConfigurationManager
.
getDeploymentContext
().
getDeploymentDatacenter
();
targetRegion
=
(
String
)
clientConfig
.
getProperty
(
CommonClientConfigKey
.
TargetRegion
);
shouldUseIpAddr
=
clientConfig
.
get
PropertyAsBoolean
(
CommonClientConfigKey
.
UseIPAddrForServer
,
DefaultClientConfigImpl
.
DEFAULT_USEIPADDRESS_FOR_SERVER
);
shouldUseIpAddr
=
clientConfig
.
get
OrDefault
(
CommonClientConfigKey
.
UseIPAddrForServer
);
// override client configuration and use client-defined port
if
(
clientConfig
.
getPropertyAsBoolean
(
CommonClientConfigKey
.
ForceClientPortConfiguration
,
false
)){
if
(
isSecure
){
if
(
clientConfig
.
containsProperty
(
CommonClientConfigKey
.
SecurePort
)){
overridePort
=
clientConfig
.
getPropertyAsInteger
(
CommonClientConfigKey
.
SecurePort
,
DefaultClientConfigImpl
.
DEFAULT_PORT
);
if
(
clientConfig
.
getPropertyAsBoolean
(
CommonClientConfigKey
.
ForceClientPortConfiguration
,
false
)){
if
(
isSecure
)
{
if
(
clientConfig
.
containsProperty
(
CommonClientConfigKey
.
SecurePort
))
{
overridePort
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
SecurePort
);
shouldUseOverridePort
=
true
;
}
else
{
}
else
{
logger
.
warn
(
clientName
+
" set to force client port but no secure port is set, so ignoring"
);
}
}
else
{
}
else
{
if
(
clientConfig
.
containsProperty
(
CommonClientConfigKey
.
Port
)){
overridePort
=
clientConfig
.
getPropertyAsInteger
(
CommonClientConfigKey
.
Port
,
DefaultClientConfigImpl
.
DEFAULT_PORT
);
overridePort
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
Port
);
shouldUseOverridePort
=
true
;
}
else
{
}
else
{
logger
.
warn
(
clientName
+
" set to force client port but no port is set, so ignoring"
);
}
}
...
...
@@ -228,7 +222,7 @@ public class DiscoveryEnabledNIWSServerList extends AbstractServerList<Discovery
private
static
IClientConfig
createClientConfig
(
String
vipAddresses
)
{
IClientConfig
clientConfig
=
DefaultClientConfigImpl
.
getClientConfigWithDefaultValues
();
IClientConfig
clientConfig
=
ClientConfigFactory
.
DEFAULT
.
newConfig
();
clientConfig
.
set
(
Keys
.
DeploymentContextBasedVipAddresses
,
vipAddresses
);
return
clientConfig
;
}
...
...
ribbon-guice/src/main/java/com/netflix/ribbon/guice/RibbonModule.java
浏览文件 @
48784572
...
...
@@ -18,7 +18,6 @@ package com.netflix.ribbon.guice;
import
com.google.inject.AbstractModule
;
import
com.google.inject.Scopes
;
import
com.netflix.client.config.ClientConfigFactory
;
import
com.netflix.client.config.ClientConfigFactory.DefaultClientConfigFactory
;
import
com.netflix.ribbon.DefaultResourceFactory
;
import
com.netflix.ribbon.RibbonResourceFactory
;
import
com.netflix.ribbon.RibbonTransportFactory
;
...
...
@@ -35,7 +34,7 @@ import com.netflix.ribbon.proxy.processor.AnnotationProcessorsProvider.DefaultAn
public
class
RibbonModule
extends
AbstractModule
{
@Override
protected
void
configure
()
{
bind
(
ClientConfigFactory
.
class
).
to
(
DefaultClientConfigFactory
.
class
).
in
(
Scopes
.
SINGLETON
);
bind
(
ClientConfigFactory
.
class
).
to
Instance
(
ClientConfigFactory
.
DEFAULT
);
bind
(
RibbonTransportFactory
.
class
).
to
(
DefaultRibbonTransportFactory
.
class
).
in
(
Scopes
.
SINGLETON
);
bind
(
AnnotationProcessorsProvider
.
class
).
to
(
DefaultAnnotationProcessorsProvider
.
class
).
in
(
Scopes
.
SINGLETON
);
bind
(
RibbonResourceFactory
.
class
).
to
(
DefaultResourceFactory
.
class
).
in
(
Scopes
.
SINGLETON
);
...
...
ribbon-guice/src/test/java/com/netflix/ribbon/examples/rx/RxMovieProxyExampleTest.java
浏览文件 @
48784572
...
...
@@ -20,7 +20,6 @@ import com.google.inject.Guice;
import
com.google.inject.Injector
;
import
com.google.inject.Scopes
;
import
com.netflix.client.config.ClientConfigFactory
;
import
com.netflix.client.config.ClientConfigFactory.DefaultClientConfigFactory
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.ribbon.transport.netty.http.LoadBalancingHttpClient
;
...
...
@@ -44,7 +43,7 @@ import static org.junit.Assert.assertTrue;
public
class
RxMovieProxyExampleTest
extends
RxMovieClientTestBase
{
static
class
MyClientConfigFactory
extends
Default
ClientConfigFactory
{
static
class
MyClientConfigFactory
implements
ClientConfigFactory
{
@Override
public
IClientConfig
newConfig
()
{
return
new
DefaultClientConfigImpl
()
{
...
...
ribbon-httpclient/build.gradle
浏览文件 @
48784572
dependencies
{
compile
project
(
':ribbon-core'
)
compile
project
(
':ribbon-archaius'
)
compile
project
(
':ribbon-loadbalancer'
)
compile
'commons-collections:commons-collections:3.2.2'
compile
'org.apache.httpcomponents:httpclient:4.2.1'
...
...
ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClient.java
浏览文件 @
48784572
...
...
@@ -21,6 +21,7 @@ import java.io.IOException;
import
java.net.URI
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.ThreadFactory
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -72,9 +73,7 @@ public class NFHttpClient extends DefaultHttpClient {
protected
static
final
String
EXECUTE_TRACER
=
"HttpClient-ExecuteTimer"
;
private
static
final
DynamicIntProperty
CORE_SIZE
=
new
DynamicIntProperty
(
"NFHttpClient.connectionPoolCleanerNumberCoreThreads"
,
2
);
private
static
ScheduledExecutorService
connectionPoolCleanUpScheduler
;
private
static
ScheduledExecutorService
connectionPoolCleanUpScheduler
;
private
HttpHost
httpHost
=
null
;
private
HttpRoute
httpRoute
=
null
;
...
...
@@ -99,9 +98,9 @@ public class NFHttpClient extends DefaultHttpClient {
ThreadFactory
factory
=
(
new
ThreadFactoryBuilder
()).
setDaemon
(
true
)
.
setNameFormat
(
"Connection pool clean up thread"
)
.
build
();
connectionPoolCleanUpScheduler
=
new
ScheduledThreadPoolExectuorWithDynamicSize
(
CORE_SIZE
,
factory
);
connectionPoolCleanUpScheduler
=
Executors
.
newScheduledThreadPool
(
2
,
factory
);
}
protected
NFHttpClient
(
String
host
,
int
port
){
super
(
new
ThreadSafeClientConnManager
());
this
.
name
=
"UNNAMED_"
+
numNonNamedHttpClients
.
incrementAndGet
();
...
...
ribbon-loadbalancer/build.gradle
浏览文件 @
48784572
...
...
@@ -7,6 +7,8 @@ dependencies {
compile
"com.google.guava:guava:${guava_version}"
compile
"com.netflix.archaius:archaius-core:${archaius_version}"
compile
'com.netflix.netflix-commons:netflix-commons-util:0.1.1'
testCompile
project
(
":ribbon-archaius"
)
testCompile
'junit:junit:4.11'
testCompile
'org.mockito:mockito-core:2.13.0'
testCompile
'org.awaitility:awaitility:3.0.0'
...
...
ribbon-loadbalancer/src/main/java/com/netflix/client/ClientFactory.java
浏览文件 @
48784572
...
...
@@ -17,8 +17,8 @@
*/
package
com.netflix.client
;
import
com.netflix.client.config.ClientConfigFactory
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.loadbalancer.ILoadBalancer
;
import
com.netflix.servo.monitor.Monitors
;
...
...
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.function.Supplier
;
/**
* A factory that creates client, load balancer and client configuration instances from properties. It also keeps mappings of client names to
...
...
@@ -62,12 +63,11 @@ public class ClientFactory {
"A Rest Client with this name is already registered. Please use a different name"
);
}
try
{
String
clientClassName
=
(
String
)
clientConfig
.
getProperty
(
CommonClientConfigKey
.
ClientClassName
);
String
clientClassName
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
ClientClassName
);
client
=
(
IClient
<?,
?>)
instantiateInstanceWithClientConfig
(
clientClassName
,
clientConfig
);
boolean
initializeNFLoadBalancer
=
Boolean
.
parseBoolean
(
clientConfig
.
getProperty
(
CommonClientConfigKey
.
InitializeNFLoadBalancer
,
DefaultClientConfigImpl
.
DEFAULT_ENABLE_LOADBALANCER
).
toString
());
boolean
initializeNFLoadBalancer
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
InitializeNFLoadBalancer
);
if
(
initializeNFLoadBalancer
)
{
loadBalancer
=
registerNamedLoadBalancerFromclientConfig
(
restClientName
,
clientConfig
);
loadBalancer
=
registerNamedLoadBalancerFromclientConfig
(
restClientName
,
clientConfig
);
}
if
(
client
instanceof
AbstractLoadBalancerAwareClient
)
{
((
AbstractLoadBalancerAwareClient
)
client
).
setLoadBalancer
(
loadBalancer
);
...
...
@@ -93,7 +93,14 @@ public class ClientFactory {
* @throws RuntimeException if an error occurs in creating the client.
*/
public
static
synchronized
IClient
getNamedClient
(
String
name
)
{
return
getNamedClient
(
name
,
DefaultClientConfigImpl
.
class
);
if
(
simpleClientMap
.
get
(
name
)
!=
null
)
{
return
simpleClientMap
.
get
(
name
);
}
try
{
return
registerClientFromProperties
(
name
,
getNamedConfig
(
name
));
}
catch
(
ClientException
e
)
{
throw
new
RuntimeException
(
"Unable to create client"
,
e
);
}
}
/**
...
...
@@ -111,7 +118,7 @@ public class ClientFactory {
throw
new
RuntimeException
(
"Unable to create client"
,
e
);
}
}
/**
* Creates a named client using a IClientConfig instance created off the configClass class object passed in as the parameter.
*
...
...
@@ -123,12 +130,23 @@ public class ClientFactory {
}
/**
* Get the load balancer associated with the name, or create one with
an instance {@link DefaultClientConfigImpl
} if does not exist
* Get the load balancer associated with the name, or create one with
the default {@link ClientConfigFactory
} if does not exist
*
* @throws RuntimeException if any error occurs
*/
public
static
synchronized
ILoadBalancer
getNamedLoadBalancer
(
String
name
)
{
return
getNamedLoadBalancer
(
name
,
DefaultClientConfigImpl
.
class
);
ILoadBalancer
lb
=
namedLBMap
.
get
(
name
);
if
(
lb
!=
null
)
{
return
lb
;
}
else
{
try
{
lb
=
registerNamedLoadBalancerFromclientConfig
(
name
,
getNamedConfig
(
name
));
}
catch
(
ClientException
e
)
{
throw
new
RuntimeException
(
"Unable to create load balancer"
,
e
);
}
namedLBMap
.
put
(
name
,
lb
);
return
lb
;
}
}
/**
...
...
@@ -163,7 +181,7 @@ public class ClientFactory {
}
ILoadBalancer
lb
=
null
;
try
{
String
loadBalancerClassName
=
(
String
)
clientConfig
.
getProperty
(
CommonClientConfigKey
.
NFLoadBalancerClassName
);
String
loadBalancerClassName
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
NFLoadBalancerClassName
);
lb
=
(
ILoadBalancer
)
ClientFactory
.
instantiateInstanceWithClientConfig
(
loadBalancerClassName
,
clientConfig
);
namedLBMap
.
put
(
name
,
lb
);
logger
.
info
(
"Client: {} instantiated a LoadBalancer: {}"
,
name
,
lb
);
...
...
@@ -220,12 +238,12 @@ public class ClientFactory {
}
/**
* Get the client configuration given the name or create one with
{@link DefaultClientConfigImpl
} if it does not exist.
* Get the client configuration given the name or create one with
the resolved {@link ClientConfigFactory
} if it does not exist.
*
* @see #getNamedConfig(String, Class)
*/
public
static
IClientConfig
getNamedConfig
(
String
name
)
{
return
getNamedConfig
(
name
,
DefaultClientConfigImpl
.
class
);
return
getNamedConfig
(
name
,
ClientConfigFactory
.
DEFAULT
::
newConfig
);
}
/**
...
...
@@ -233,24 +251,29 @@ public class ClientFactory {
* is created and {@link IClientConfig#loadProperties(String)} will be called.
*/
public
static
IClientConfig
getNamedConfig
(
String
name
,
Class
<?
extends
IClientConfig
>
clientConfigClass
)
{
IClientConfig
config
=
namedConfig
.
get
(
name
);
if
(
config
!=
null
)
{
return
config
;
}
else
{
return
getNamedConfig
(
name
,
factoryFromConfigType
(
clientConfigClass
));
}
public
static
IClientConfig
getNamedConfig
(
String
name
,
Supplier
<
IClientConfig
>
factory
)
{
return
namedConfig
.
computeIfAbsent
(
name
,
ignore
->
{
try
{
config
=
(
IClientConfig
)
clientConfigClass
.
newInstance
();
IClientConfig
config
=
factory
.
get
();
config
.
loadProperties
(
name
);
}
catch
(
InstantiationException
|
IllegalAccessException
e
)
{
logger
.
error
(
"Unable to create named client config '{}' instance for config class {}"
,
name
,
clientConfigClass
,
e
);
return
config
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"Unable to create named client config '{}' instance for config factory {}"
,
name
,
factory
,
e
);
return
null
;
}
config
.
loadProperties
(
name
);
IClientConfig
old
=
namedConfig
.
putIfAbsent
(
name
,
config
);
if
(
old
!=
null
)
{
config
=
old
;
}
return
config
;
}
});
}
private
static
Supplier
<
IClientConfig
>
factoryFromConfigType
(
Class
<?
extends
IClientConfig
>
clientConfigClass
)
{
return
()
->
{
try
{
return
(
IClientConfig
)
clientConfigClass
.
newInstance
();
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
String
.
format
(
"Failed to create config for class '%s'"
,
clientConfigClass
));
}
};
}
}
ribbon-loadbalancer/src/main/java/com/netflix/client/PrimeConnections.java
浏览文件 @
48784572
...
...
@@ -35,7 +35,6 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.loadbalancer.Server
;
import
com.netflix.servo.monitor.Counter
;
...
...
@@ -126,26 +125,21 @@ public class PrimeConnections {
}
public
PrimeConnections
(
String
name
,
IClientConfig
niwsClientConfig
)
{
int
maxRetriesPerServerPrimeConnection
=
Integer
.
valueOf
(
DefaultClientConfigImpl
.
DEFAULT_MAX_RETRIES_PER_SERVER_PRIME_CONNECTION
);
long
maxTotalTimeToPrimeConnections
=
Long
.
valueOf
(
DefaultClientConfigImpl
.
DEFAULT_MAX_TOTAL_TIME_TO_PRIME_CONNECTIONS
);
String
primeConnectionsURI
=
DefaultClientConfigImpl
.
DEFAULT_PRIME_CONNECTIONS_URI
;
String
className
=
DefaultClientConfigImpl
.
DEFAULT_PRIME_CONNECTIONS_CLASS
;
int
maxRetriesPerServerPrimeConnection
=
CommonClientConfigKey
.
MaxRetriesPerServerPrimeConnection
.
getDefaultValue
();
int
maxTotalTimeToPrimeConnections
=
CommonClientConfigKey
.
MaxTotalTimeToPrimeConnections
.
getDefaultValue
();
try
{
maxRetriesPerServerPrimeConnection
=
Integer
.
parseInt
(
String
.
valueOf
(
niwsClientConfig
.
getProperty
(
CommonClientConfigKey
.
MaxRetriesPerServerPrimeConnection
,
maxRetriesPerServerPrimeConnection
)));
maxRetriesPerServerPrimeConnection
=
niwsClientConfig
.
getOrDefault
(
CommonClientConfigKey
.
MaxRetriesPerServerPrimeConnection
);
}
catch
(
Exception
e
)
{
logger
.
warn
(
"Invalid maxRetriesPerServerPrimeConnection"
);
}
try
{
maxTotalTimeToPrimeConnections
=
Long
.
parseLong
(
String
.
valueOf
(
niwsClientConfig
.
getProperty
(
CommonClientConfigKey
.
MaxTotalTimeToPrimeConnections
,
maxTotalTimeToPrimeConnections
)));
maxTotalTimeToPrimeConnections
=
niwsClientConfig
.
getOrDefault
(
CommonClientConfigKey
.
MaxTotalTimeToPrimeConnections
);
}
catch
(
Exception
e
)
{
logger
.
warn
(
"Invalid maxTotalTimeToPrimeConnections"
);
}
primeConnectionsURI
=
String
.
valueOf
(
niwsClientConfig
.
getProperty
(
CommonClientConfigKey
.
PrimeConnectionsURI
,
primeConnectionsURI
));
float
primeRatio
=
Float
.
parseFloat
(
String
.
valueOf
(
niwsClientConfig
.
getProperty
(
CommonClientConfigKey
.
MinPrimeConnectionsRatio
)));
className
=
niwsClientConfig
.
getPropertyAsString
(
CommonClientConfigKey
.
PrimeConnectionsClassName
,
DefaultClientConfigImpl
.
DEFAULT_PRIME_CONNECTIONS_CLASS
);
final
String
primeConnectionsURI
=
niwsClientConfig
.
getOrDefault
(
CommonClientConfigKey
.
PrimeConnectionsURI
);
float
primeRatio
=
niwsClientConfig
.
getOrDefault
(
CommonClientConfigKey
.
MinPrimeConnectionsRatio
);
final
String
className
=
niwsClientConfig
.
getOrDefault
(
CommonClientConfigKey
.
PrimeConnectionsClassName
);
try
{
connector
=
(
IPrimeConnection
)
Class
.
forName
(
className
).
newInstance
();
connector
.
initWithNiwsConfig
(
niwsClientConfig
);
...
...
@@ -158,7 +152,7 @@ public class PrimeConnections {
public
PrimeConnections
(
String
name
,
int
maxRetries
,
long
maxTotalTimeToPrimeConnections
,
String
primeConnectionsURI
)
{
setUp
(
name
,
maxRetries
,
maxTotalTimeToPrimeConnections
,
primeConnectionsURI
,
DefaultClientConfigImpl
.
DEFAULT_MIN_PRIME_CONNECTIONS_RATIO
);
setUp
(
name
,
maxRetries
,
maxTotalTimeToPrimeConnections
,
primeConnectionsURI
,
CommonClientConfigKey
.
MinPrimeConnectionsRatio
.
getDefaultValue
()
);
}
public
PrimeConnections
(
String
name
,
int
maxRetries
,
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java
浏览文件 @
48784572
...
...
@@ -24,7 +24,6 @@ import com.netflix.client.ClientFactory;
import
com.netflix.client.IClientConfigAware
;
import
com.netflix.client.PrimeConnections
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.servo.annotations.DataSourceType
;
import
com.netflix.servo.annotations.Monitor
;
...
...
@@ -195,8 +194,7 @@ public class BaseLoadBalancer extends AbstractLoadBalancer implements
((
AbstractLoadBalancerPing
)
ping
).
setLoadBalancer
(
this
);
}
logger
.
info
(
"Client: {} instantiated a LoadBalancer: {}"
,
name
,
this
);
boolean
enablePrimeConnections
=
clientConfig
.
get
(
CommonClientConfigKey
.
EnablePrimeConnections
,
DefaultClientConfigImpl
.
DEFAULT_ENABLE_PRIME_CONNECTIONS
);
boolean
enablePrimeConnections
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
EnablePrimeConnections
);
if
(
enablePrimeConnections
)
{
this
.
setEnablePrimingConnections
(
true
);
...
...
@@ -210,10 +208,8 @@ public class BaseLoadBalancer extends AbstractLoadBalancer implements
@Override
public
void
initWithNiwsConfig
(
IClientConfig
clientConfig
)
{
String
ruleClassName
=
(
String
)
clientConfig
.
getProperty
(
CommonClientConfigKey
.
NFLoadBalancerRuleClassName
);
String
pingClassName
=
(
String
)
clientConfig
.
getProperty
(
CommonClientConfigKey
.
NFLoadBalancerPingClassName
);
String
ruleClassName
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
NFLoadBalancerRuleClassName
);
String
pingClassName
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
NFLoadBalancerPingClassName
);
IRule
rule
;
IPing
ping
;
LoadBalancerStats
stats
;
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ConfigurationBasedServerList.java
浏览文件 @
48784572
...
...
@@ -17,17 +17,12 @@
*/
package
com.netflix.loadbalancer
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.config.DynamicPropertyFactory
;
import
com.netflix.config.DynamicStringProperty
;
/**
* Utility class that can load the List of Servers from a Configuration (i.e
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java
浏览文件 @
48784572
...
...
@@ -20,7 +20,6 @@ package com.netflix.loadbalancer;
import
com.google.common.annotations.VisibleForTesting
;
import
com.netflix.client.ClientFactory
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.servo.annotations.DataSourceType
;
import
com.netflix.servo.annotations.Monitor
;
...
...
@@ -103,9 +102,7 @@ public class DynamicServerListLoadBalancer<T extends Server> extends BaseLoadBal
public
void
initWithNiwsConfig
(
IClientConfig
clientConfig
)
{
try
{
super
.
initWithNiwsConfig
(
clientConfig
);
String
niwsServerListClassName
=
clientConfig
.
getPropertyAsString
(
CommonClientConfigKey
.
NIWSServerListClassName
,
DefaultClientConfigImpl
.
DEFAULT_SEVER_LIST_CLASS
);
String
niwsServerListClassName
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
NIWSServerListClassName
);
ServerList
<
T
>
niwsServerListImpl
=
(
ServerList
<
T
>)
ClientFactory
.
instantiateInstanceWithClientConfig
(
niwsServerListClassName
,
clientConfig
);
...
...
@@ -118,10 +115,8 @@ public class DynamicServerListLoadBalancer<T extends Server> extends BaseLoadBal
this
.
filter
=
niwsFilter
;
}
String
serverListUpdaterClassName
=
clientConfig
.
getPropertyAsString
(
CommonClientConfigKey
.
ServerListUpdaterClassName
,
DefaultClientConfigImpl
.
DEFAULT_SERVER_LIST_UPDATER_CLASS
);
String
serverListUpdaterClassName
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
ServerListUpdaterClassName
);
this
.
serverListUpdater
=
(
ServerListUpdater
)
ClientFactory
.
instantiateInstanceWithClientConfig
(
serverListUpdaterClassName
,
clientConfig
);
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerBuilder.java
浏览文件 @
48784572
package
com.netflix.loadbalancer
;
import
com.netflix.client.ClientFactory
;
import
com.netflix.client.config.ClientConfigFactory
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.client.config.IClientConfigKey
;
...
...
@@ -10,7 +10,7 @@ import java.util.List;
public
class
LoadBalancerBuilder
<
T
extends
Server
>
{
private
IClientConfig
config
=
DefaultClientConfigImpl
.
getClientConfigWithDefaultValues
();
private
IClientConfig
config
=
ClientConfigFactory
.
findDefaultConfigFactory
().
newConfig
();
private
ServerListFilter
serverListFilter
;
private
IRule
rule
;
private
IPing
ping
=
new
DummyPing
();
...
...
@@ -65,7 +65,7 @@ public class LoadBalancerBuilder<T extends Server> {
}
private
static
IRule
createRuleFromConfig
(
IClientConfig
config
)
{
String
ruleClassName
=
config
.
get
(
IClientConfigKey
.
Keys
.
NFLoadBalancerRuleClassName
);
String
ruleClassName
=
config
.
get
OrDefault
(
IClientConfigKey
.
Keys
.
NFLoadBalancerRuleClassName
);
if
(
ruleClassName
==
null
)
{
throw
new
IllegalArgumentException
(
"NFLoadBalancerRuleClassName is not specified in the config"
);
}
...
...
@@ -79,7 +79,7 @@ public class LoadBalancerBuilder<T extends Server> {
}
private
static
ServerListUpdater
createServerListUpdaterFromConfig
(
IClientConfig
config
)
{
String
serverListUpdaterClassName
=
config
.
get
(
IClientConfigKey
.
Keys
.
ServerListUpdaterClassName
);
String
serverListUpdaterClassName
=
config
.
get
OrDefault
(
IClientConfigKey
.
Keys
.
ServerListUpdaterClassName
);
if
(
serverListUpdaterClassName
==
null
)
{
throw
new
IllegalArgumentException
(
"NIWSServerListClassName is not specified in the config"
);
}
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerContext.java
浏览文件 @
48784572
...
...
@@ -24,7 +24,6 @@ import com.netflix.client.DefaultLoadBalancerRetryHandler;
import
com.netflix.client.IClientConfigAware
;
import
com.netflix.client.RetryHandler
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.servo.monitor.Monitors
;
import
com.netflix.servo.monitor.Timer
;
...
...
@@ -49,13 +48,13 @@ public class LoadBalancerContext implements IClientConfigAware {
protected
String
vipAddresses
;
protected
int
maxAutoRetriesNextServer
=
DefaultClientConfigImpl
.
DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER
;
protected
int
maxAutoRetries
=
DefaultClientConfigImpl
.
DEFAULT_MAX_AUTO_RETRIES
;
protected
int
maxAutoRetriesNextServer
=
CommonClientConfigKey
.
MaxAutoRetriesNextServer
.
getDefaultValue
()
;
protected
int
maxAutoRetries
=
CommonClientConfigKey
.
MaxAutoRetries
.
getDefaultValue
()
;
protected
RetryHandler
defaultRetryHandler
=
new
DefaultLoadBalancerRetryHandler
();
protected
boolean
okToRetryOnAllOperations
=
DefaultClientConfigImpl
.
DEFAULT_OK_TO_RETRY_ON_ALL_OPERATIONS
.
boolean
Value
();
protected
boolean
okToRetryOnAllOperations
=
CommonClientConfigKey
.
OkToRetryOnAllOperations
.
getDefault
Value
();
private
ILoadBalancer
lb
;
...
...
@@ -92,10 +91,9 @@ public class LoadBalancerContext implements IClientConfigAware {
clientName
=
"default"
;
}
vipAddresses
=
clientConfig
.
resolveDeploymentContextbasedVipAddresses
();
maxAutoRetries
=
clientConfig
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxAutoRetries
,
DefaultClientConfigImpl
.
DEFAULT_MAX_AUTO_RETRIES
);
maxAutoRetriesNextServer
=
clientConfig
.
getPropertyAsInteger
(
CommonClientConfigKey
.
MaxAutoRetriesNextServer
,
maxAutoRetriesNextServer
);
okToRetryOnAllOperations
=
clientConfig
.
getPropertyAsBoolean
(
CommonClientConfigKey
.
OkToRetryOnAllOperations
,
okToRetryOnAllOperations
);
maxAutoRetries
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
MaxAutoRetries
);
maxAutoRetriesNextServer
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
MaxAutoRetriesNextServer
);
okToRetryOnAllOperations
=
clientConfig
.
getOrDefault
(
CommonClientConfigKey
.
OkToRetryOnAllOperations
);
defaultRetryHandler
=
new
DefaultLoadBalancerRetryHandler
(
clientConfig
);
tracer
=
getExecuteTracer
();
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ServerListSubsetFilter.java
浏览文件 @
48784572
...
...
@@ -24,7 +24,7 @@ import java.util.Set;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Sets
;
import
com.netflix.client.IClientConfigAware
;
import
com.netflix.client.config.
DefaultClientConfigImpl
;
import
com.netflix.client.config.
CommonClientConfigKey
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.config.DynamicFloatProperty
;
import
com.netflix.config.DynamicIntProperty
;
...
...
@@ -43,13 +43,13 @@ public class ServerListSubsetFilter<T extends Server> extends ZoneAffinityServer
private
Random
random
=
new
Random
();
private
volatile
Set
<
T
>
currentSubset
=
Sets
.
newHashSet
();
private
DynamicIntProperty
sizeProp
=
new
DynamicIntProperty
(
DefaultClientConfigImpl
.
DEFAULT_PROPERTY
_NAME_SPACE
+
".ServerListSubsetFilter.size"
,
20
);
private
DynamicIntProperty
sizeProp
=
new
DynamicIntProperty
(
CommonClientConfigKey
.
DEFAULT
_NAME_SPACE
+
".ServerListSubsetFilter.size"
,
20
);
private
DynamicFloatProperty
eliminationPercent
=
new
DynamicFloatProperty
(
DefaultClientConfigImpl
.
DEFAULT_PROPERTY
_NAME_SPACE
+
".ServerListSubsetFilter.forceEliminatePercent"
,
0.1f
);
new
DynamicFloatProperty
(
CommonClientConfigKey
.
DEFAULT
_NAME_SPACE
+
".ServerListSubsetFilter.forceEliminatePercent"
,
0.1f
);
private
DynamicIntProperty
eliminationFailureCountThreshold
=
new
DynamicIntProperty
(
DefaultClientConfigImpl
.
DEFAULT_PROPERTY
_NAME_SPACE
+
".ServerListSubsetFilter.eliminationFailureThresold"
,
0
);
new
DynamicIntProperty
(
CommonClientConfigKey
.
DEFAULT
_NAME_SPACE
+
".ServerListSubsetFilter.eliminationFailureThresold"
,
0
);
private
DynamicIntProperty
eliminationConnectionCountThreshold
=
new
DynamicIntProperty
(
DefaultClientConfigImpl
.
DEFAULT_PROPERTY
_NAME_SPACE
+
".ServerListSubsetFilter.eliminationConnectionThresold"
,
0
);
new
DynamicIntProperty
(
CommonClientConfigKey
.
DEFAULT
_NAME_SPACE
+
".ServerListSubsetFilter.eliminationConnectionThresold"
,
0
);
@Override
public
void
initWithNiwsConfig
(
IClientConfig
clientConfig
)
{
...
...
ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneAffinityServerListFilter.java
浏览文件 @
48784572
...
...
@@ -27,18 +27,12 @@ import com.google.common.collect.Iterables;
import
com.google.common.collect.Lists
;
import
com.netflix.client.IClientConfigAware
;
import
com.netflix.client.config.CommonClientConfigKey
;
import
com.netflix.client.config.DefaultClientConfigImpl
;
import
com.netflix.client.config.IClientConfig
;
import
com.netflix.config.ConfigurationManager
;
import
com.netflix.config.DeploymentContext.ContextKey
;
import
com.netflix.config.DynamicDoubleProperty
;
import
com.netflix.config.DynamicIntProperty
;
import
com.netflix.config.DynamicPropertyFactory
;
import
com.netflix.loadbalancer.AbstractServerListFilter
;
import
com.netflix.loadbalancer.LoadBalancerStats
;
import
com.netflix.loadbalancer.Server
;
import
com.netflix.loadbalancer.ZoneAffinityPredicate
;
import
com.netflix.loadbalancer.ZoneSnapshot
;
import
com.netflix.servo.monitor.Counter
;
import
com.netflix.servo.monitor.Monitors
;
...
...
@@ -56,8 +50,8 @@ import com.netflix.servo.monitor.Monitors;
public
class
ZoneAffinityServerListFilter
<
T
extends
Server
>
extends
AbstractServerListFilter
<
T
>
implements
IClientConfigAware
{
private
volatile
boolean
zoneAffinity
=
DefaultClientConfigImpl
.
DEFAULT_ENABLE_ZONE_AFFINITY
;
private
volatile
boolean
zoneExclusive
=
DefaultClientConfigImpl
.
DEFAULT_ENABLE_ZONE_EXCLUSIVITY
;
private
volatile
boolean
zoneAffinity
=
CommonClientConfigKey
.
EnableZoneAffinity
.
getDefaultValue
()
;
private
volatile
boolean
zoneExclusive
=
CommonClientConfigKey
.
EnableZoneExclusivity
.
getDefaultValue
()
;
private
DynamicDoubleProperty
activeReqeustsPerServerThreshold
;
private
DynamicDoubleProperty
blackOutServerPercentageThreshold
;
private
DynamicIntProperty
availableServersThreshold
;
...
...
ribbon-transport/build.gradle
浏览文件 @
48784572
dependencies
{
compile
project
(
':ribbon-core'
)
compile
project
(
':ribbon-archaius'
)
compile
project
(
':ribbon-loadbalancer'
)
compile
"io.reactivex:rxjava:${rx_java_version}"
compile
"io.reactivex:rxnetty:${rx_netty_version}"
...
...
ribbon-transport/src/main/java/com/netflix/ribbon/transport/netty/http/LoadBalancingHttpClient.java
浏览文件 @
48784572
...
...
@@ -22,7 +22,6 @@ import io.netty.buffer.ByteBufAllocator;
import
io.netty.channel.ChannelOption
;
import
io.netty.handler.codec.http.HttpHeaders
;
import
io.netty.handler.codec.http.HttpMethod
;
import
io.netty.handler.codec.http.HttpResponseStatus
;
import
io.reactivex.netty.client.ClientMetricsEvent
;
import
io.reactivex.netty.client.CompositePoolLimitDeterminationStrategy
;
import
io.reactivex.netty.client.RxClient
;
...
...
@@ -56,7 +55,6 @@ import rx.functions.Func2;
import
com.google.common.annotations.VisibleForTesting
;
import
com.google.common.base.Preconditions
;
import
com.netflix.client.ClientException
;
import
com.netflix.client.RequestSpecificRetryHandler
;
import
com.netflix.client.RetryHandler
;
import
com.netflix.client.config.CommonClientConfigKey
;
...
...
settings.gradle
浏览文件 @
48784572
rootProject
.
name
=
'ribbon'
include
'ribbon-core'
,
'ribbon-loadbalancer'
,
'ribbon-httpclient'
,
'ribbon-eureka'
,
'ribbon-transport'
,
'ribbon-examples'
,
'ribbon-test'
,
'ribbon-guice'
,
'ribbon'
,
'ribbon-evcache'
include
'ribbon-core'
include
'ribbon-archaius'
include
'ribbon-loadbalancer'
include
'ribbon-httpclient'
include
'ribbon-eureka'
include
'ribbon-transport'
include
'ribbon-examples'
include
'ribbon-test'
include
'ribbon-guice'
include
'ribbon'
include
'ribbon-evcache'
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录