Skip to content

Commit

Permalink
optimize ConfigService.getConfig performance
Browse files Browse the repository at this point in the history
  • Loading branch information
nobodyiam committed Jan 22, 2017
1 parent 7e2e1d0 commit 998bcf7
Show file tree
Hide file tree
Showing 13 changed files with 63 additions and 38 deletions.
2 changes: 1 addition & 1 deletion apollo-adminservice/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion apollo-assembly/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion apollo-biz/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>apollo</artifactId>
<groupId>com.ctrip.framework.apollo</groupId>
<version>0.4.0</version>
<version>0.4.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apollo-biz</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion apollo-buildtools/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion apollo-client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ If you need this functionality, you could specify the cluster as follows:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
</dependency>

## III. Client Usage
Expand Down
2 changes: 1 addition & 1 deletion apollo-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,59 @@

/**
* Entry point for client config use
*
* @author Jason Song([email protected])
*/
public class ConfigService {
private static final ConfigService s_instance = new ConfigService();

private PlexusContainer m_container;
private ConfigManager m_configManager;
private ConfigRegistry m_configRegistry;

private ConfigService() {
m_container = ContainerLoader.getDefaultContainer();
}

private ConfigManager getManager() {
if (m_configManager == null) {
synchronized (this) {
if (m_configManager == null) {
try {
m_configManager = m_container.lookup(ConfigManager.class);
} catch (ComponentLookupException ex) {
ApolloConfigException exception = new ApolloConfigException("Unable to load ConfigManager!", ex);
Tracer.logError(exception);
throw exception;
}
}
}
}

return m_configManager;
}

private ConfigRegistry getRegistry() {
if (m_configRegistry == null) {
synchronized (this) {
if (m_configRegistry == null) {
try {
m_configRegistry = m_container.lookup(ConfigRegistry.class);
} catch (ComponentLookupException ex) {
ApolloConfigException exception = new ApolloConfigException("Unable to load ConfigRegistry!", ex);
Tracer.logError(exception);
throw exception;
}
}
}
}

return m_configRegistry;
}

/**
* Get Application's config instance.
*
* @return config instance
*/
public static Config getAppConfig() {
Expand All @@ -35,35 +75,16 @@ public static Config getAppConfig() {

/**
* Get the config instance for the namespace.
*
* @param namespace the namespace of the config
* @return config instance
*/
public static Config getConfig(String namespace) {
return getManager().getConfig(namespace);
return s_instance.getManager().getConfig(namespace);
}

public static ConfigFile getConfigFile(String namespace, ConfigFileFormat configFileFormat) {
return getManager().getConfigFile(namespace, configFileFormat);
}

private static ConfigManager getManager() {
try {
return s_instance.m_container.lookup(ConfigManager.class);
} catch (ComponentLookupException ex) {
ApolloConfigException exception = new ApolloConfigException("Unable to load ConfigManager!", ex);
Tracer.logError(exception);
throw exception;
}
}

private static ConfigRegistry getRegistry() {
try {
return s_instance.m_container.lookup(ConfigRegistry.class);
} catch (ComponentLookupException ex) {
ApolloConfigException exception = new ApolloConfigException("Unable to load ConfigRegistry!", ex);
Tracer.logError(exception);
throw exception;
}
return s_instance.getManager().getConfigFile(namespace, configFileFormat);
}

static void setConfig(Config config) {
Expand All @@ -72,11 +93,12 @@ static void setConfig(Config config) {

/**
* Manually set the config for the namespace specified, use with caution.
*
* @param namespace the namespace
* @param config the config instance
* @param config the config instance
*/
static void setConfig(String namespace, final Config config) {
getRegistry().register(namespace, new ConfigFactory() {
s_instance.getRegistry().register(namespace, new ConfigFactory() {
@Override
public Config create(String namespace) {
return config;
Expand All @@ -96,15 +118,18 @@ static void setConfigFactory(ConfigFactory factory) {

/**
* Manually set the config factory for the namespace specified, use with caution.
*
* @param namespace the namespace
* @param factory the factory instance
* @param factory the factory instance
*/
static void setConfigFactory(String namespace, ConfigFactory factory) {
getRegistry().register(namespace, factory);
s_instance.getRegistry().register(namespace, factory);
}

// for test only
static void setContainer(PlexusContainer m_container) {
s_instance.m_container = m_container;
s_instance.m_configManager = null;
s_instance.m_configRegistry = null;
}
}
2 changes: 1 addition & 1 deletion apollo-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion apollo-configservice/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion apollo-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion apollo-demo/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>apollo</artifactId>
<groupId>com.ctrip.framework.apollo</groupId>
<version>0.4.0</version>
<version>0.4.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apollo-demo</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion apollo-portal/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<name>Apollo</name>
<packaging>pom</packaging>
<description>Ctrip Configuration Center</description>
Expand Down

0 comments on commit 998bcf7

Please sign in to comment.