Skip to content

Commit a206dde

Browse files
ralf0131beiwei30
authored andcommitted
[Dubbo-3653] Enable etcd to support metadata center (#3943)
* Support etcd as metadata center * Fix key format error for consul/redis and UT failure * Fix UT failure * Fix UT failure * Fix UT failure
1 parent 74a491b commit a206dde

File tree

21 files changed

+452
-48
lines changed

21 files changed

+452
-48
lines changed

dubbo-all/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,13 @@
450450
<scope>compile</scope>
451451
<optional>true</optional>
452452
</dependency>
453+
<dependency>
454+
<groupId>org.apache.dubbo</groupId>
455+
<artifactId>dubbo-metadata-report-etcd</artifactId>
456+
<version>${project.version}</version>
457+
<scope>compile</scope>
458+
<optional>true</optional>
459+
</dependency>
453460

454461
<!-- Transitive dependencies -->
455462
<dependency>

dubbo-bom/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,11 @@
357357
<artifactId>dubbo-metadata-report-consul</artifactId>
358358
<version>${project.version}</version>
359359
</dependency>
360+
<dependency>
361+
<groupId>org.apache.dubbo</groupId>
362+
<artifactId>dubbo-metadata-report-etcd</artifactId>
363+
<version>${project.version}</version>
364+
</dependency>
360365
<dependency>
361366
<groupId>org.apache.dubbo</groupId>
362367
<artifactId>dubbo-configcenter-api</artifactId>

dubbo-configcenter/dubbo-configcenter-etcd/src/test/java/org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ public String getValue() {
120120

121121
private void put(String key, String value) {
122122
try {
123-
124123
client.getKVClient().put(ByteSequence.from(key, UTF_8), ByteSequence.from(value, UTF_8)).get();
125124
} catch (Exception e) {
126125
System.out.println("Error put value to etcd.");

dubbo-distribution/pom.xml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,56 @@
185185
<artifactId>dubbo-registry-sofa</artifactId>
186186
<version>${project.version}</version>
187187
</dependency>
188+
<dependency>
189+
<groupId>org.apache.dubbo</groupId>
190+
<artifactId>dubbo-configcenter-api</artifactId>
191+
<version>${project.version}</version>
192+
</dependency>
193+
<dependency>
194+
<groupId>org.apache.dubbo</groupId>
195+
<artifactId>dubbo-configcenter-zookeeper</artifactId>
196+
<version>${project.version}</version>
197+
</dependency>
198+
<dependency>
199+
<groupId>org.apache.dubbo</groupId>
200+
<artifactId>dubbo-configcenter-apollo</artifactId>
201+
<version>${project.version}</version>
202+
</dependency>
203+
<dependency>
204+
<groupId>org.apache.dubbo</groupId>
205+
<artifactId>dubbo-configcenter-consul</artifactId>
206+
<version>${project.version}</version>
207+
</dependency>
208+
<dependency>
209+
<groupId>org.apache.dubbo</groupId>
210+
<artifactId>dubbo-configcenter-etcd</artifactId>
211+
<version>${project.version}</version>
212+
</dependency>
213+
<dependency>
214+
<groupId>org.apache.dubbo</groupId>
215+
<artifactId>dubbo-metadata-report-api</artifactId>
216+
<version>${project.version}</version>
217+
</dependency>
218+
<dependency>
219+
<groupId>org.apache.dubbo</groupId>
220+
<artifactId>dubbo-metadata-report-zookeeper</artifactId>
221+
<version>${project.version}</version>
222+
</dependency>
223+
<dependency>
224+
<groupId>org.apache.dubbo</groupId>
225+
<artifactId>dubbo-metadata-report-redis</artifactId>
226+
<version>${project.version}</version>
227+
</dependency>
228+
<dependency>
229+
<groupId>org.apache.dubbo</groupId>
230+
<artifactId>dubbo-metadata-report-consul</artifactId>
231+
<version>${project.version}</version>
232+
</dependency>
233+
<dependency>
234+
<groupId>org.apache.dubbo</groupId>
235+
<artifactId>dubbo-metadata-report-etcd</artifactId>
236+
<version>${project.version}</version>
237+
</dependency>
188238
<dependency>
189239
<groupId>org.apache.dubbo</groupId>
190240
<artifactId>dubbo-monitor-api</artifactId>

dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
* 2018/10/25
2424
*/
2525
public class MetadataIdentifier {
26+
2627
public static final String SEPARATOR = ":";
2728
final static String DEFAULT_PATH_TAG = "metadata";
29+
final static String META_DATA_STORE_TAG = ".metaData";
2830

2931
private String serviceInterface;
3032
private String version;
@@ -53,9 +55,9 @@ public MetadataIdentifier(URL url) {
5355

5456
public String getUniqueKey(KeyTypeEnum keyType) {
5557
if (keyType == KeyTypeEnum.PATH) {
56-
return getFilePathKey();
58+
return getFilePathKey() + Constants.PATH_SEPARATOR + DEFAULT_PATH_TAG;
5759
}
58-
return getIdentifierKey();
60+
return getIdentifierKey() + META_DATA_STORE_TAG;
5961
}
6062

6163
public String getIdentifierKey() {

dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@
2626
*/
2727
public interface MetadataReport {
2828

29-
public static final String META_DATA_STORE_TAG = ".metaData";
30-
31-
3229
void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, FullServiceDefinition serviceDefinition);
3330

3431
void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap);

dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
*/
5757
public abstract class AbstractMetadataReport implements MetadataReport {
5858

59+
protected final static String DEFAULT_ROOT = "dubbo";
5960

6061
private static final int ONE_DAY_IN_MIll = 60 * 24 * 60 * 1000;
6162
private static final int FOUR_HOURS_IN_MIll = 60 * 4 * 60 * 1000;
@@ -216,12 +217,7 @@ public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier,
216217
if (syncReport) {
217218
storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition);
218219
} else {
219-
reportCacheExecutor.execute(new Runnable() {
220-
@Override
221-
public void run() {
222-
storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition);
223-
}
224-
});
220+
reportCacheExecutor.execute(() -> storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition));
225221
}
226222
}
227223

@@ -249,12 +245,7 @@ public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier,
249245
if (syncReport) {
250246
storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap);
251247
} else {
252-
reportCacheExecutor.execute(new Runnable() {
253-
@Override
254-
public void run() {
255-
storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap);
256-
}
257-
});
248+
reportCacheExecutor.execute(() -> storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap));
258249
}
259250
}
260251

dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/identifier/MetadataIdentifierTest.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import org.junit.jupiter.api.Assertions;
2222
import org.junit.jupiter.api.Test;
2323

24+
import static org.apache.dubbo.metadata.identifier.MetadataIdentifier.META_DATA_STORE_TAG;
25+
2426
/**
2527
* 2019/1/7
2628
*/
@@ -34,10 +36,16 @@ public void testGetUniqueKey() {
3436
String application = "vic.zk.md";
3537
MetadataIdentifier providerMetadataIdentifier = new MetadataIdentifier(interfaceName, version, group, Constants.PROVIDER_SIDE, application);
3638
System.out.println(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.PATH));
37-
Assertions.assertEquals(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.PATH), "metadata" + Constants.PATH_SEPARATOR + interfaceName + Constants.PATH_SEPARATOR + (version == null ? "" : (version + Constants.PATH_SEPARATOR))
38-
+ (group == null ? "" : (group + Constants.PATH_SEPARATOR)) + Constants.PROVIDER_SIDE + Constants.PATH_SEPARATOR + application);
39+
Assertions.assertEquals(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.PATH),
40+
"metadata" + Constants.PATH_SEPARATOR + interfaceName + Constants.PATH_SEPARATOR +
41+
(version == null ? "" : (version + Constants.PATH_SEPARATOR))
42+
+ (group == null ? "" : (group + Constants.PATH_SEPARATOR)) + Constants.PROVIDER_SIDE
43+
+ Constants.PATH_SEPARATOR + application + Constants.PATH_SEPARATOR + "metadata");
3944
System.out.println(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY));
4045
Assertions.assertEquals(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY),
41-
interfaceName + MetadataIdentifier.SEPARATOR + (version == null ? "" : version + MetadataIdentifier.SEPARATOR) + (group == null ? "" : group + MetadataIdentifier.SEPARATOR) + Constants.PROVIDER_SIDE + MetadataIdentifier.SEPARATOR + application);
46+
interfaceName + MetadataIdentifier.SEPARATOR +
47+
(version == null ? "" : version + MetadataIdentifier.SEPARATOR)
48+
+ (group == null ? "" : group + MetadataIdentifier.SEPARATOR)
49+
+ Constants.PROVIDER_SIDE + MetadataIdentifier.SEPARATOR + application + META_DATA_STORE_TAG);
4250
}
4351
}

dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdenti
5454

5555
@Override
5656
protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String serviceParameterString) {
57-
store.put(consumerMetadataIdentifier.getIdentifierKey(), serviceParameterString);
57+
store.put(consumerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY), serviceParameterString);
5858
}
5959

6060
public static String getProviderKey(URL url) {

dubbo-metadata-report/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdenti
5555

5656
private void storeMetadata(MetadataIdentifier identifier, String v) {
5757
try {
58-
client.setKVValue(identifier.getIdentifierKey() + META_DATA_STORE_TAG, v);
58+
client.setKVValue(identifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY), v);
5959
} catch (Throwable t) {
6060
logger.error("Failed to put " + identifier + " to consul " + v + ", cause: " + t.getMessage(), t);
6161
throw new RpcException("Failed to put " + identifier + " to consul " + v + ", cause: " + t.getMessage(), t);

0 commit comments

Comments
 (0)