Skip to content

Commit f63b580

Browse files
committed
[fit] 增加注册中心连接模式,默认DIRECT模式,还可设置为PROXY模式
1 parent d37d787 commit f63b580

File tree

9 files changed

+111
-102
lines changed

9 files changed

+111
-102
lines changed

examples/fit-example/08-nacos-complicated-apps/app-assistant/src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ worker:
99

1010
matata:
1111
registry:
12-
mode: 'NACOS'
12+
mode: 'PROXY'
1313
host: '127.0.0.1'
1414
port: 8848
1515
environment: 'local'

examples/fit-example/08-nacos-complicated-apps/app-default-weather/src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ worker:
99

1010
matata:
1111
registry:
12-
mode: 'NACOS'
12+
mode: 'PROXY'
1313
host: '127.0.0.1'
1414
port: 8848
1515
environment: 'local'

framework/fit/java/fit-api/src/main/java/modelengine/fitframework/conf/runtime/MatataConfig.java

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ interface Registry {
3939
/**
4040
* 获取 {@code 'matata.registry.mode'} 的配置项。
4141
*
42-
* @return 表示 {@code 'matata.registry.mode'} 的配置项的 {@link RegistryCenterMode}。
42+
* @return 表示 {@code 'matata.registry.mode'} 的配置项的 {@link RegistryConnectMode}。
4343
*/
44-
RegistryCenterMode mode();
44+
RegistryConnectMode mode();
4545

4646
/**
4747
* 获取 {@code 'matata.registry.port'} 的配置项。
@@ -110,7 +110,12 @@ interface Registry {
110110
*/
111111
SecureAccess secureAccess();
112112

113-
Nacos nacos();
113+
/**
114+
* 获取 {@code 'matata.registry.proxy'} 的配置项。
115+
*
116+
* @return 表示 {@code 'matata.registry.proxy'} 的配置项的 {@link Proxy}。
117+
*/
118+
Proxy proxy();
114119

115120
/**
116121
* 表示 {@code 'matata.registry'} 中关于可用服务的配置项。
@@ -209,64 +214,64 @@ interface SecureAccess {
209214
}
210215

211216
/**
212-
* 表示 {@code 'matata.registry.nacos'} 前缀的配置项。
217+
* 表示 {@code 'matata.registry.proxy'} 前缀的配置项。
213218
*/
214-
interface Nacos {
219+
interface Proxy {
215220
/**
216-
* 获取 {@code 'matata.registry.nacos.username'} 的配置项。
221+
* 获取 {@code 'matata.registry.proxy.username'} 的配置项。
217222
*
218-
* @return 表示 {@code 'matata.registry.nacos.username'} 的配置项的 {@link String}。
223+
* @return 表示 {@code 'matata.registry.proxy.username'} 的配置项的 {@link String}。
219224
*/
220225
String username();
221226

222227
/**
223-
* 获取 {@code 'matata.registry.nacos.password'} 的配置项。
228+
* 获取 {@code 'matata.registry.proxy.password'} 的配置项。
224229
*
225-
* @return 表示 {@code 'matata.registry.nacos.password'} 的配置项的 {@link String}。
230+
* @return 表示 {@code 'matata.registry.proxy.password'} 的配置项的 {@link String}。
226231
*/
227232
String password();
228233

229234
/**
230-
* 获取 {@code 'matata.registry.nacos.access-key'} 的配置项。
235+
* 获取 {@code 'matata.registry.proxy.access-key'} 的配置项。
231236
*
232-
* @return 表示 {@code 'matata.registry.nacos.access-key'} 的配置项的 {@link String}。
237+
* @return 表示 {@code 'matata.registry.proxy.access-key'} 的配置项的 {@link String}。
233238
*/
234239
String accessKey();
235240

236241
/**
237-
* 获取 {@code 'matata.registry.nacos.secret-key'} 的配置项。
242+
* 获取 {@code 'matata.registry.proxy.secret-key'} 的配置项。
238243
*
239-
* @return 表示 {@code 'matata.registry.nacos.secret-key'} 的配置项的 {@link String}。
244+
* @return 表示 {@code 'matata.registry.proxy.secret-key'} 的配置项的 {@link String}。
240245
*/
241246
String secretKey();
242247

243248
/**
244-
* 获取 {@code 'matata.registry.nacos.is-ephemeral'} 的配置项。
249+
* 获取 {@code 'matata.registry.proxy.is-ephemeral'} 的配置项。
245250
*
246-
* @return 表示 {@code 'matata.registry.nacos.is-ephemeral'} 的配置项的 {@link Boolean}。
251+
* @return 表示 {@code 'matata.registry.proxy.is-ephemeral'} 的配置项的 {@link Boolean}。
247252
*/
248253
Boolean isEphemeral();
249254

250255
/**
251-
* 获取 {@code 'matata.registry.nacos.weight'} 的配置项。
256+
* 获取 {@code 'matata.registry.proxy.weight'} 的配置项。
252257
*
253-
* @return 表示 {@code 'matata.registry.nacos.weight'} 的配置项的 {@link Float}。
258+
* @return 表示 {@code 'matata.registry.proxy.weight'} 的配置项的 {@link Float}。
254259
*/
255260
Float weight();
256261

257262
/**
258-
* 获取 {@code 'matata.registry.nacos.heartbeat-interval'} 的配置项。
263+
* 获取 {@code 'matata.registry.proxy.heartbeat-interval'} 的配置项。
259264
*
260-
* @return 表示 {@code 'matata.registry.nacos.heartbeat-interval'} 的配置项的 {@link Long}。
265+
* @return 表示 {@code 'matata.registry.proxy.heartbeat-interval'} 的配置项的 {@link Long}。
261266
*/
262267
Long heartbeatInterval();
263268

264269
/**
265-
* 获取 {@code 'matata.registry.nacos.heartbeat-timeout'} 的配置项。
270+
* 获取 {@code 'matata.registry.proxy.heartbeat-timeout'} 的配置项。
266271
*
267-
* @return 表示 {@code 'matata.registry.nacos.heartbeat-timeout'} 的配置项的 {@link Long}。
272+
* @return 表示 {@code 'matata.registry.proxy.heartbeat-timeout'} 的配置项的 {@link Long}。
268273
*/
269274
Long heartbeatTimeout();
270275
}
271276
}
272-
}
277+
}

framework/fit/java/fit-api/src/main/java/modelengine/fitframework/conf/runtime/RegistryCenterMode.java

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package modelengine.fitframework.conf.runtime;
2+
3+
import static modelengine.fitframework.inspection.Validation.notBlank;
4+
5+
import modelengine.fitframework.util.StringUtils;
6+
7+
import java.util.Arrays;
8+
9+
/**
10+
* 注册中心连接模式枚举,用于标识客户端连接注册中心的方式。
11+
*
12+
* <p>支持的连接模式包括:</p>
13+
* <ul>
14+
* <li>{@code DIRECT}:直连注册中心,不经过代理。</li>
15+
* <li>{@code PROXY}:通过本地设置的代理连接注册中心。</li>
16+
* </ul>
17+
*
18+
* @author 董智豪
19+
* @since 2025-08-04
20+
*/
21+
public enum RegistryConnectMode {
22+
/** 直连注册中心模式(不经过代理)。 */
23+
DIRECT("DIRECT"),
24+
25+
/** 通过代理连接注册中心(例如本地 Socks/HTTP 代理)。 */
26+
PROXY("PROXY");
27+
28+
/** 模式标识符字符串(如:DIRECT、PROXY)。 */
29+
private final String mode;
30+
31+
/**
32+
* 构造函数,初始化连接模式标识符。
33+
*
34+
* @param mode 注册中心连接模式的标识符(不能为空)
35+
*/
36+
RegistryConnectMode(String mode) {
37+
this.mode = notBlank(mode, "The registry connect mode cannot be blank.");
38+
}
39+
40+
/**
41+
* 根据字符串标识获取对应的枚举值。
42+
*
43+
* @param mode 字符串标识(如 "DIRECT"、"PROXY")
44+
* @return 匹配的 {@link RegistryConnectMode} 枚举值;如果无匹配项则返回 {@code null}
45+
*/
46+
public static RegistryConnectMode fromMode(String mode) {
47+
return Arrays.stream(RegistryConnectMode.values())
48+
.filter(registryConnectMode -> StringUtils.equals(registryConnectMode.mode, mode))
49+
.findFirst()
50+
.orElse(null);
51+
}
52+
}

framework/fit/java/fit-builtin/plugins/fit-service-coordination-locator/src/main/java/modelengine/fit/service/locator/AddressRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import modelengine.fitframework.broker.Target;
1717
import modelengine.fitframework.conf.runtime.CommunicationProtocol;
1818
import modelengine.fitframework.conf.runtime.MatataConfig;
19-
import modelengine.fitframework.conf.runtime.RegistryCenterMode;
19+
import modelengine.fitframework.conf.runtime.RegistryConnectMode;
2020
import modelengine.fitframework.conf.runtime.WorkerConfig;
2121
import modelengine.fitframework.log.Logger;
2222
import modelengine.fitframework.util.ObjectUtils;
@@ -56,7 +56,7 @@ public AddressRepository(List<FitServer> servers, WorkerConfig worker, MatataCon
5656
CommunicationProtocol protocol = matata.registry().protocol();
5757
String host = matata.registry().host();
5858

59-
if(matata.registry().mode() != null && RegistryCenterMode.NACOS.equals(matata.registry().mode())) {
59+
if(matata.registry().mode() != null && RegistryConnectMode.PROXY.equals(matata.registry().mode())) {
6060
log.debug("The registry mode is Nacos, using the local proxy registry center.");
6161
int size = fitServer.endpoints().size();
6262
greaterThan(size, 0, "The fit server must have at least one endpoint.");

framework/fit/java/fit-builtin/plugins/fit-service-coordination-nacos/src/main/java/modelengine/fit/service/server/NacosRegistryServer.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.alibaba.nacos.api.naming.NamingFactory;
1616
import com.alibaba.nacos.api.naming.NamingService;
1717
import com.alibaba.nacos.api.naming.listener.EventListener;
18+
import com.alibaba.nacos.api.naming.listener.NamingEvent;
1819
import com.alibaba.nacos.api.naming.pojo.Instance;
1920
import com.alibaba.nacos.api.naming.pojo.ListView;
2021
import com.alibaba.nacos.client.naming.listener.NamingChangeEvent;
@@ -56,8 +57,6 @@
5657
import java.util.regex.Matcher;
5758
import java.util.regex.Pattern;
5859

59-
import javax.naming.event.NamingEvent;
60-
6160
/**
6261
* Service for providing Nacos registry center functionality.
6362
*
@@ -96,11 +95,11 @@ private Properties getNacosProperties() {
9695
String serverAddr = this.matata.registry().host() + ":" + this.matata.registry().port();
9796
notBlank(serverAddr, "The Nacos server address cannot be blank.");
9897
properties.put("serverAddr", serverAddr);
99-
properties.put("username", ObjectUtils.nullIf(this.matata.registry().nacos().username(), StringUtils.EMPTY));
100-
properties.put("password", ObjectUtils.nullIf(this.matata.registry().nacos().password(), StringUtils.EMPTY));
98+
properties.put("username", ObjectUtils.nullIf(this.matata.registry().proxy().username(), StringUtils.EMPTY));
99+
properties.put("password", ObjectUtils.nullIf(this.matata.registry().proxy().password(), StringUtils.EMPTY));
101100
properties.put("namespace", ObjectUtils.nullIf(this.matata.registry().environment(), StringUtils.EMPTY));
102-
properties.put("accessKey", ObjectUtils.nullIf(this.matata.registry().nacos().accessKey(), StringUtils.EMPTY));
103-
properties.put("secretKey", ObjectUtils.nullIf(this.matata.registry().nacos().secretKey(), StringUtils.EMPTY));
101+
properties.put("accessKey", ObjectUtils.nullIf(this.matata.registry().proxy().accessKey(), StringUtils.EMPTY));
102+
properties.put("secretKey", ObjectUtils.nullIf(this.matata.registry().proxy().secretKey(), StringUtils.EMPTY));
104103
return properties;
105104
}
106105

@@ -180,11 +179,11 @@ private List<Instance> createInstance(Worker worker, Application application, Fi
180179
*/
181180
private HashMap<String, String> buildInstanceMetadata(Worker worker, Application application, FitableMeta meta) {
182181
HashMap<String, String> metadata = new HashMap<>();
183-
if (this.matata.registry().nacos().heartbeatInterval() != null) {
184-
metadata.put(HEART_BEAT_INTERVAL, String.valueOf(this.matata.registry().nacos().heartbeatInterval()));
182+
if (this.matata.registry().proxy().heartbeatInterval() != null) {
183+
metadata.put(HEART_BEAT_INTERVAL, String.valueOf(this.matata.registry().proxy().heartbeatInterval()));
185184
}
186-
if (this.matata.registry().nacos().heartbeatTimeout() != null) {
187-
metadata.put(HEART_BEAT_TIMEOUT, String.valueOf(this.matata.registry().nacos().heartbeatTimeout()));
185+
if (this.matata.registry().proxy().heartbeatTimeout() != null) {
186+
metadata.put(HEART_BEAT_TIMEOUT, String.valueOf(this.matata.registry().proxy().heartbeatTimeout()));
188187
}
189188
try {
190189
metadata.put(WORKER_KEY, this.objectMapper.writeValueAsString(worker));
@@ -202,11 +201,11 @@ private HashMap<String, String> buildInstanceMetadata(Worker worker, Application
202201
* @param instance The service instance object.
203202
*/
204203
private void setInstanceProperties(Instance instance) {
205-
if (!this.matata.registry().nacos().isEphemeral()) {
204+
if (!this.matata.registry().proxy().isEphemeral()) {
206205
instance.setEphemeral(false);
207206
}
208-
if (this.matata.registry().nacos().weight() != null) {
209-
instance.setWeight(this.matata.registry().nacos().weight());
207+
if (this.matata.registry().proxy().weight() != null) {
208+
instance.setWeight(this.matata.registry().proxy().weight());
210209
}
211210
}
212211

@@ -523,4 +522,4 @@ private List<FitableMetaInstance> buildFitableMetaInstances(Map<FitableMeta, Set
523522
}
524523
return results;
525524
}
526-
}
525+
}

framework/fit/java/fit-conf/fit-conf/src/main/java/modelengine/fitframework/conf/runtime/DefaultNacos.java renamed to framework/fit/java/fit-conf/fit-conf/src/main/java/modelengine/fitframework/conf/runtime/DefaultProxy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
import modelengine.fitframework.util.StringUtils;
1010

1111
/**
12-
* Represents the default implementation of {@link MatataConfig.Registry.Nacos}.
12+
* Represents the default implementation of {@link MatataConfig.Registry.Proxy}.
1313
*
1414
* @author 董智豪
1515
* @since 2025-08-01
1616
*/
17-
public class DefaultNacos implements MatataConfig.Registry.Nacos {
17+
public class DefaultProxy implements MatataConfig.Registry.Proxy {
1818
private String username;
1919
private String password;
2020
private String accessKey;

0 commit comments

Comments
 (0)