Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: support group configuration in nacos registry #2620

Merged
merged 38 commits into from
Jun 29, 2020
Merged
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
d038b85
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
17e9479
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
a8765cd
Merge branch 'develop' into group
hsoftxl Apr 27, 2020
45f6cf9
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
ad76b39
fix unable to register nacos (#2598)
funky-eyes Apr 27, 2020
f113802
bugfix: nacos-script adapt to nacos 1.2 on permission control. (#2610)
objcoding Apr 27, 2020
d2d74f3
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
98ffc60
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
ebc6b0e
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
392e7ce
发现TC服务支持 配置Group
hsoftxl Apr 27, 2020
eb6a263
Merge branch 'develop' into group
zjinlei Apr 27, 2020
46eee1a
Merge branch 'develop' into group
jsbxyyx Apr 27, 2020
667ec70
发现TC服务支持 配置Group
hsoftxl Apr 28, 2020
b007f3e
发现TC服务支持 配置Group
hsoftxl Apr 28, 2020
2d56b5b
Merge branch 'develop' into group
hsoftxl Apr 30, 2020
f747719
发现TC服务支持 配置Group
hsoftxl Apr 30, 2020
c5873bd
Merge branch 'develop' into group
zjinlei May 2, 2020
8acd2b6
Merge branch 'develop' into group
hsoftxl May 6, 2020
96dd4bd
Merge branch 'develop' into group
hsoftxl May 9, 2020
745ebcb
发现TC服务支持 配置Group
hsoftxl May 9, 2020
bec09c2
发现TC服务支持 配置Group
hsoftxl May 9, 2020
a747fff
change default group value
hsoftxl May 11, 2020
95eec9d
Merge branch 'develop' into group
hsoftxl May 11, 2020
54df904
change default group value
hsoftxl May 11, 2020
a9893de
change default group value
hsoftxl May 11, 2020
f64ecfa
Merge branch 'develop' into group
zjinlei May 12, 2020
ed99f6b
Merge branch 'develop' into group
hsoftxl May 20, 2020
72e039d
Merge branch 'develop' into group
hsoftxl May 25, 2020
a536200
registry group value
hsoftxl May 25, 2020
d69f320
Merge branch 'develop' into group
l81893521 May 27, 2020
867b515
Merge branch 'develop' into group
hsoftxl May 29, 2020
471b7ae
registry group value
hsoftxl May 29, 2020
9b6a515
Merge branch 'develop' into group
xingfudeshi Jun 5, 2020
43845bd
Merge branch 'develop' into group
jsbxyyx Jun 5, 2020
4ac0ec1
Merge branch 'develop' into group
slievrly Jun 15, 2020
95a7a4c
Merge branch 'develop' into group
funky-eyes Jun 23, 2020
687fc75
Merge branch 'develop' into group
hsoftxl Jun 28, 2020
04e95a9
compatible lower version
hsoftxl Jun 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,26 @@
*/
package io.seata.discovery.registry.nacos;

import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;

import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.listener.EventListener;
import com.alibaba.nacos.api.naming.listener.NamingEvent;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;

import io.seata.common.util.StringUtils;
import io.seata.config.Configuration;
import io.seata.config.ConfigurationFactory;
import io.seata.config.ConfigurationKeys;
import io.seata.discovery.registry.RegistryService;

import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;

/**
* The type Nacos registry service.
*
Expand All @@ -44,12 +43,14 @@
public class NacosRegistryServiceImpl implements RegistryService<EventListener> {
private static final String DEFAULT_NAMESPACE = "";
private static final String DEFAULT_CLUSTER = "default";
private static final String DEFAULT_GROUP = "SEATA_GROUP";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DEFAULT_GROUP

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high and low version compatibility needs to be considered

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

set default value is DEFAULT_GROUP?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

set default value is DEFAULT_GROUP?

yes,backward compatible

private static final String DEFAULT_APPLICATION = "seata-server";
private static final String PRO_SERVER_ADDR_KEY = "serverAddr";
private static final String PRO_NAMESPACE_KEY = "namespace";
private static final String REGISTRY_TYPE = "nacos";
private static final String REGISTRY_CLUSTER = "cluster";
private static final String PRO_APPLICATION_KEY = "application";
private static final String PRO_GROUP_KEY = "group";
private static final String USER_NAME = "username";
private static final String PASSWORD = "password";
private static final Configuration FILE_CONFIG = ConfigurationFactory.CURRENT_FILE_INSTANCE;
Expand Down Expand Up @@ -81,13 +82,13 @@ static NacosRegistryServiceImpl getInstance() {
@Override
public void register(InetSocketAddress address) throws Exception {
validAddress(address);
getNamingInstance().registerInstance(getServiceName(), address.getAddress().getHostAddress(), address.getPort(), getClusterName());
getNamingInstance().registerInstance(getServiceName(), getServiceGroup(), address.getAddress().getHostAddress(), address.getPort(), getClusterName());
}

@Override
public void unregister(InetSocketAddress address) throws Exception {
validAddress(address);
getNamingInstance().deregisterInstance(getServiceName(), address.getAddress().getHostAddress(), address.getPort(), getClusterName());
getNamingInstance().deregisterInstance(getServiceName(), getServiceGroup(), address.getAddress().getHostAddress(), address.getPort(), getClusterName());
}

@Override
Expand All @@ -96,7 +97,7 @@ public void subscribe(String cluster, EventListener listener) throws Exception {
clusters.add(cluster);
LISTENER_SERVICE_MAP.putIfAbsent(cluster, new ArrayList<>());
LISTENER_SERVICE_MAP.get(cluster).add(listener);
getNamingInstance().subscribe(getServiceName(), clusters, listener);
getNamingInstance().subscribe(getServiceName(), getServiceGroup(), clusters, listener);
}

@Override
Expand All @@ -110,7 +111,7 @@ public void unsubscribe(String cluster, EventListener listener) throws Exception
.collect(Collectors.toList());
LISTENER_SERVICE_MAP.put(cluster, newSubscribeList);
}
getNamingInstance().unsubscribe(getServiceName(), clusters, listener);
getNamingInstance().unsubscribe(getServiceName(), getServiceGroup(), clusters, listener);
}

@Override
Expand All @@ -124,7 +125,7 @@ public List<InetSocketAddress> lookup(String key) throws Exception {
if (!LISTENER_SERVICE_MAP.containsKey(clusterName)) {
List<String> clusters = new ArrayList<>();
clusters.add(clusterName);
List<Instance> firstAllInstances = getNamingInstance().getAllInstances(getServiceName(), clusters);
List<Instance> firstAllInstances = getNamingInstance().getAllInstances(getServiceName(), getServiceGroup(), clusters);
if (null != firstAllInstances) {
List<InetSocketAddress> newAddressList = firstAllInstances.stream()
.filter(instance -> instance.isEnabled() && instance.isHealthy())
Expand All @@ -133,7 +134,7 @@ public List<InetSocketAddress> lookup(String key) throws Exception {
CLUSTER_ADDRESS_MAP.put(clusterName, newAddressList);
}
subscribe(clusterName, event -> {
List<Instance> instances = ((NamingEvent)event).getInstances();
List<Instance> instances = ((NamingEvent) event).getInstances();
if (null == instances && null != CLUSTER_ADDRESS_MAP.get(clusterName)) {
CLUSTER_ADDRESS_MAP.remove(clusterName);
} else if (!CollectionUtils.isEmpty(instances)) {
Expand Down Expand Up @@ -198,10 +199,10 @@ private static Properties getNamingProperties() {
properties.setProperty(PRO_NAMESPACE_KEY, namespace);
}
String userName = StringUtils.isNotBlank(System.getProperty(USER_NAME)) ? System.getProperty(USER_NAME)
: FILE_CONFIG.getConfig(getNacosUserName());
: FILE_CONFIG.getConfig(getNacosUserName());
if (StringUtils.isNotBlank(userName)) {
String password = StringUtils.isNotBlank(System.getProperty(PASSWORD)) ? System.getProperty(PASSWORD)
: FILE_CONFIG.getConfig(getNacosPassword());
: FILE_CONFIG.getConfig(getNacosPassword());
if (StringUtils.isNotBlank(password)) {
properties.setProperty(USER_NAME, userName);
properties.setProperty(PASSWORD, password);
Expand All @@ -218,6 +219,10 @@ private static String getServiceName() {
return FILE_CONFIG.getConfig(getNacosApplicationFileKey(), DEFAULT_APPLICATION);
}

private static String getServiceGroup() {
return FILE_CONFIG.getConfig(getNacosApplicationGroupKey(), DEFAULT_GROUP);
}

private static String getNacosAddrFileKey() {
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE, PRO_SERVER_ADDR_KEY);
}
Expand All @@ -234,13 +239,15 @@ private static String getNacosApplicationFileKey() {
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE, PRO_APPLICATION_KEY);
}

private static String getNacosApplicationGroupKey() {
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE, PRO_GROUP_KEY);
}

private static String getNacosUserName() {
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE,
USER_NAME);
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE, USER_NAME);
}

private static String getNacosPassword() {
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE,
PASSWORD);
return String.join(ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR, ConfigurationKeys.FILE_ROOT_REGISTRY, REGISTRY_TYPE, PASSWORD);
}
}
1 change: 1 addition & 0 deletions script/client/conf/registry.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ registry {
nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP"
namespace = ""
username = ""
password = ""
Expand Down
1 change: 1 addition & 0 deletions script/client/spring/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ seata.registry.eureka.service-url=http://localhost:8761/eureka

seata.registry.nacos.application=seata-server
seata.registry.nacos.server-addr=127.0.0.1:8848
seata.registry.nacos.group=SEATA_GROUP
seata.registry.nacos.namespace=
seata.registry.nacos.username=
seata.registry.nacos.password=
Expand Down
5 changes: 3 additions & 2 deletions script/client/spring/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ seata:
namespace:
serverAddr: 127.0.0.1:8848
group: SEATA_GROUP
userName: ""
username: ""
password: ""
zk:
server-addr: 127.0.0.1:2181
Expand All @@ -89,8 +89,9 @@ seata:
nacos:
application: seata-server
server-addr: 127.0.0.1:8848
group : "SEATA_GROUP"
namespace:
userName: ""
username: ""
password: ""
redis:
server-addr: localhost:6379
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
public class RegistryNacosProperties {
private String serverAddr = "localhost";
private String namespace = "";
private String group = "SEATA_GROUP";
private String cluster = "default";
private String username = "";
private String password = "";
Expand All @@ -51,6 +52,14 @@ public RegistryNacosProperties setNamespace(String namespace) {
return this;
}

public String getGroup() {
return group;
}

public void setGroup(String group) {
this.group = group;
}

public String getCluster() {
return cluster;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ public void testRegistryEurekaProperties() {
public void testRegistryNacosProperties() {
assertEquals("localhost", context.getBean(RegistryNacosProperties.class).getServerAddr());
assertEquals("", context.getBean(RegistryNacosProperties.class).getNamespace());
assertEquals("SEATA_GROUP", context.getBean(RegistryNacosProperties.class).getGroup());
assertEquals("default", context.getBean(RegistryNacosProperties.class).getCluster());
assertEquals("", context.getBean(RegistryNacosProperties.class).getUsername());
assertEquals("", context.getBean(RegistryNacosProperties.class).getPassword());
Expand Down
1 change: 1 addition & 0 deletions server/src/main/resources/registry.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ registry {
nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP"
namespace = ""
cluster = "default"
username = ""
Expand Down