Skip to content

Commit

Permalink
feat: support nacos namespace mapping (#1191)
Browse files Browse the repository at this point in the history
  • Loading branch information
wenxuan70 authored Oct 27, 2023
1 parent ecc2025 commit eba94e6
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@
- [fix:remove bcprov-jdk15on dependency.](https://github.com/Tencent/spring-cloud-tencent/pull/1178)
- [feat:support configuration encryption.](https://github.com/Tencent/spring-cloud-tencent/pull/1182)
- [feat:optimize examples.](https://github.com/Tencent/spring-cloud-tencent/pull/1186)
- [feat: support nacos namespace mapping](https://github.com/Tencent/spring-cloud-tencent/pull/1191)
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ public class NacosConfigModifier implements PolarisConfigModifier {
* nacos contextPath.
*/
public static final String CONTEXT_PATH = "contextPath";
/**
* nacos namespace.
*/
public static final String NAMESPACE = "namespace";
/**
* nacos group.
*/
public static final String GROUP = "group";
private static final Logger LOGGER = LoggerFactory.getLogger(NacosConfigModifier.class);
private static final String ID = "nacos";
private final NacosContextProperties nacosContextProperties;
Expand Down Expand Up @@ -114,6 +122,14 @@ public void modify(ConfigurationImpl configuration) {
metadata.put(CONTEXT_PATH, nacosContextProperties.getContextPath());
}

if (StringUtils.isNotBlank(nacosContextProperties.getNamespace())) {
metadata.put(NAMESPACE, nacosContextProperties.getNamespace());
}

if (StringUtils.isNotBlank(nacosContextProperties.getGroup())) {
metadata.put(GROUP, nacosContextProperties.getGroup());
}

configuration.getGlobal().getServerConnectors().add(serverConnectorConfig);
DiscoveryConfigImpl discoveryConfig = new DiscoveryConfigImpl();
discoveryConfig.setServerConnectorId(ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ public class NacosContextProperties {
*/
public static final String DEFAULT_CLUSTER = "DEFAULT";

/**
* Nacos default namespace name.
*/
public static final String DEFAULT_NAMESPACE = "public";

private boolean enabled = false;

@Value("${spring.cloud.nacos.discovery.enabled:#{'true'}}")
Expand Down Expand Up @@ -80,6 +85,9 @@ public class NacosContextProperties {
@Value("${spring.cloud.nacos.discovery.group:DEFAULT_GROUP}")
private String group = DEFAULT_GROUP;

@Value("${spring.cloud.nacos.discovery.namespace:public}")
private String namespace = DEFAULT_NAMESPACE;

private String contextPath;

public boolean isEnabled() {
Expand Down Expand Up @@ -154,6 +162,14 @@ public void setContextPath(String contextPath) {
this.contextPath = contextPath;
}

public String getNamespace() {
return namespace;
}

public void setNamespace(String namespace) {
this.namespace = namespace;
}

@Override
public String toString() {
return "NacosContextProperties{" +
Expand All @@ -166,6 +182,7 @@ public String toString() {
", clusterName='" + clusterName + '\'' +
", group='" + group + '\'' +
", contextPath='" + contextPath + '\'' +
", namespace='" + namespace + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,13 @@
"sourceType": "com.tencent.cloud.polaris.extend.nacos.NacosContextProperties",
"defaultValue": "DEFAULT_GROUP"
},
{
"name": "spring.cloud.nacos.discovery.namespace",
"type": "java.lang.String",
"description": "namespace id for nacos.",
"sourceType": "com.tencent.cloud.polaris.extend.nacos.NacosContextProperties",
"defaultValue": "public"
},
{
"name": "spring.cloud.nacos.discovery.password",
"type": "java.lang.String",
Expand Down Expand Up @@ -110,5 +117,28 @@
"description": "the nacos authentication cluster-name.",
"sourceType": "com.tencent.cloud.polaris.extend.nacos.NacosContextProperties"
}
],
"hints": [
{
"name": "spring.cloud.polaris.loadbalancer.strategy",
"values": [
{
"value": "roundRobin",
"description": "round robin load balancer."
},
{
"value": "random",
"description": "random load balancer."
},
{
"value": "polarisWeightedRandom",
"description": "polaris weighted random load balancer."
},
{
"value": "polarisRingHash",
"description": "polaris ring hash load balancer."
}
]
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public void testDefaultInitialization() {
assertThat(nacosContextProperties.isDiscoveryEnabled()).isTrue();
assertThat(nacosContextProperties.getGroup()).isNotBlank();
assertThat(nacosContextProperties.getClusterName()).isNotBlank();
assertThat(nacosContextProperties.getNamespace()).isNotBlank();
}

@Test
Expand All @@ -84,6 +85,8 @@ public void testModify() {
assertThat(metadata.get(NacosConfigModifier.USERNAME)).isEqualTo(nacosContextProperties.getUsername());
assertThat(metadata.get(NacosConfigModifier.PASSWORD)).isEqualTo(nacosContextProperties.getPassword());
assertThat(metadata.get(NacosConfigModifier.CONTEXT_PATH)).isEqualTo(nacosContextProperties.getContextPath());
assertThat(metadata.get(NacosConfigModifier.NAMESPACE)).isEqualTo(nacosContextProperties.getNamespace());
assertThat(metadata.get(NacosConfigModifier.GROUP)).isEqualTo(nacosContextProperties.getGroup());
}

@SpringBootApplication
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public class MetadataContext {
throw new RuntimeException("namespace should not be blank. please configure spring.cloud.polaris.namespace or "
+ "spring.cloud.polaris.discovery.namespace");
}

namespace = DiscoveryUtil.rewriteNamespace(namespace);
LOCAL_NAMESPACE = namespace;

String serviceName = ApplicationContextAwareUtils
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public final class DiscoveryUtil {

private static String NACOS_GROUP;

private static String NACOS_NAMESPACE;

private static final Object MUTEX = new Object();

private static boolean INITIALIZE = false;
Expand Down Expand Up @@ -62,6 +64,29 @@ public static String rewriteServiceId(String serviceId) {
return serviceId;
}

/**
* rewrite namespace when open double registry and discovery by nacos and polaris.
*
* @param namespace namespace
* @return new namespace
*/
public static String rewriteNamespace(String namespace) {
init();
if (Boolean.parseBoolean(ENABLE_NACOS)) {
boolean rewrite = false;
if (Boolean.parseBoolean(ENABLE_NACOS_REGISTRY) && Boolean.parseBoolean(ENABLE_POLARIS_DISCOVERY)) {
rewrite = true;
}
if (Boolean.parseBoolean(ENABLE_NACOS_DISCOVERY) || Boolean.parseBoolean(ENABLE_POLARIS_DISCOVERY)) {
rewrite = true;
}
if (rewrite) {
namespace = NACOS_NAMESPACE;
}
}
return namespace;
}

private static void init() {
if (INITIALIZE) {
return;
Expand All @@ -75,6 +100,7 @@ private static void init() {
ENABLE_NACOS_REGISTRY = ApplicationContextAwareUtils.getProperties("spring.cloud.nacos.discovery.register-enabled");
ENABLE_POLARIS_DISCOVERY = ApplicationContextAwareUtils.getProperties("spring.cloud.polaris.discovery.enabled");
NACOS_GROUP = ApplicationContextAwareUtils.getProperties("spring.cloud.nacos.discovery.group", "DEFAULT_GROUP");
NACOS_NAMESPACE = ApplicationContextAwareUtils.getProperties("spring.cloud.nacos.discovery.namespace", "public");
INITIALIZE = true;
}
}
Expand Down

0 comments on commit eba94e6

Please sign in to comment.