@dangao/bun-server 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/config/config-module.d.ts +17 -0
- package/dist/config/config-module.d.ts.map +1 -1
- package/dist/config/service.d.ts +18 -1
- package/dist/config/service.d.ts.map +1 -1
- package/dist/config/types.d.ts +25 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/controller/controller.d.ts +5 -0
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/core/application.d.ts +42 -1
- package/dist/core/application.d.ts.map +1 -1
- package/dist/core/context.d.ts +1 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/server.d.ts +33 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6510 -4164
- package/dist/microservice/config-center/config-center-module.d.ts +43 -0
- package/dist/microservice/config-center/config-center-module.d.ts.map +1 -0
- package/dist/microservice/config-center/decorators.d.ts +58 -0
- package/dist/microservice/config-center/decorators.d.ts.map +1 -0
- package/dist/microservice/config-center/index.d.ts +9 -0
- package/dist/microservice/config-center/index.d.ts.map +1 -0
- package/dist/microservice/config-center/nacos-config-center.d.ts +37 -0
- package/dist/microservice/config-center/nacos-config-center.d.ts.map +1 -0
- package/dist/microservice/config-center/nacos-decorators.d.ts +24 -0
- package/dist/microservice/config-center/nacos-decorators.d.ts.map +1 -0
- package/dist/microservice/config-center/types.d.ts +63 -0
- package/dist/microservice/config-center/types.d.ts.map +1 -0
- package/dist/microservice/governance/circuit-breaker.d.ts +54 -0
- package/dist/microservice/governance/circuit-breaker.d.ts.map +1 -0
- package/dist/microservice/governance/decorators.d.ts +51 -0
- package/dist/microservice/governance/decorators.d.ts.map +1 -0
- package/dist/microservice/governance/index.d.ts +9 -0
- package/dist/microservice/governance/index.d.ts.map +1 -0
- package/dist/microservice/governance/rate-limiter.d.ts +26 -0
- package/dist/microservice/governance/rate-limiter.d.ts.map +1 -0
- package/dist/microservice/governance/redis-rate-limiter.d.ts +76 -0
- package/dist/microservice/governance/redis-rate-limiter.d.ts.map +1 -0
- package/dist/microservice/governance/retry-strategy.d.ts +21 -0
- package/dist/microservice/governance/retry-strategy.d.ts.map +1 -0
- package/dist/microservice/governance/types.d.ts +212 -0
- package/dist/microservice/governance/types.d.ts.map +1 -0
- package/dist/microservice/index.d.ts +10 -0
- package/dist/microservice/index.d.ts.map +1 -0
- package/dist/microservice/monitoring/index.d.ts +4 -0
- package/dist/microservice/monitoring/index.d.ts.map +1 -0
- package/dist/microservice/monitoring/metrics-collector.d.ts +54 -0
- package/dist/microservice/monitoring/metrics-collector.d.ts.map +1 -0
- package/dist/microservice/monitoring/metrics-integration.d.ts +24 -0
- package/dist/microservice/monitoring/metrics-integration.d.ts.map +1 -0
- package/dist/microservice/monitoring/types.d.ts +99 -0
- package/dist/microservice/monitoring/types.d.ts.map +1 -0
- package/dist/microservice/service-client/call-decorators.d.ts +52 -0
- package/dist/microservice/service-client/call-decorators.d.ts.map +1 -0
- package/dist/microservice/service-client/decorators.d.ts +35 -0
- package/dist/microservice/service-client/decorators.d.ts.map +1 -0
- package/dist/microservice/service-client/index.d.ts +7 -0
- package/dist/microservice/service-client/index.d.ts.map +1 -0
- package/dist/microservice/service-client/interceptors.d.ts +96 -0
- package/dist/microservice/service-client/interceptors.d.ts.map +1 -0
- package/dist/microservice/service-client/load-balancer.d.ts +59 -0
- package/dist/microservice/service-client/load-balancer.d.ts.map +1 -0
- package/dist/microservice/service-client/service-client.d.ts +74 -0
- package/dist/microservice/service-client/service-client.d.ts.map +1 -0
- package/dist/microservice/service-client/types.d.ts +155 -0
- package/dist/microservice/service-client/types.d.ts.map +1 -0
- package/dist/microservice/service-registry/decorators.d.ts +84 -0
- package/dist/microservice/service-registry/decorators.d.ts.map +1 -0
- package/dist/microservice/service-registry/discovery-decorators.d.ts +58 -0
- package/dist/microservice/service-registry/discovery-decorators.d.ts.map +1 -0
- package/dist/microservice/service-registry/health-integration.d.ts +32 -0
- package/dist/microservice/service-registry/health-integration.d.ts.map +1 -0
- package/dist/microservice/service-registry/index.d.ts +10 -0
- package/dist/microservice/service-registry/index.d.ts.map +1 -0
- package/dist/microservice/service-registry/nacos-service-registry.d.ts +68 -0
- package/dist/microservice/service-registry/nacos-service-registry.d.ts.map +1 -0
- package/dist/microservice/service-registry/service-registry-module.d.ts +48 -0
- package/dist/microservice/service-registry/service-registry-module.d.ts.map +1 -0
- package/dist/microservice/service-registry/types.d.ts +121 -0
- package/dist/microservice/service-registry/types.d.ts.map +1 -0
- package/dist/microservice/tracing/collectors.d.ts +27 -0
- package/dist/microservice/tracing/collectors.d.ts.map +1 -0
- package/dist/microservice/tracing/index.d.ts +4 -0
- package/dist/microservice/tracing/index.d.ts.map +1 -0
- package/dist/microservice/tracing/tracer.d.ts +59 -0
- package/dist/microservice/tracing/tracer.d.ts.map +1 -0
- package/dist/microservice/tracing/types.d.ts +179 -0
- package/dist/microservice/tracing/types.d.ts.map +1 -0
- package/dist/request/request.d.ts +1 -0
- package/dist/request/request.d.ts.map +1 -1
- package/docs/microservice-config-center.md +258 -0
- package/docs/microservice-nacos.md +346 -0
- package/docs/microservice-service-registry.md +306 -0
- package/docs/microservice.md +680 -0
- package/docs/troubleshooting.md +41 -0
- package/docs/zh/troubleshooting.md +41 -0
- package/package.json +5 -4
- package/src/config/config-module.ts +210 -0
- package/src/config/service.ts +52 -1
- package/src/config/types.ts +31 -0
- package/src/controller/controller.ts +8 -0
- package/src/core/application.ts +189 -3
- package/src/core/context.ts +1 -0
- package/src/core/server.ts +128 -2
- package/src/index.ts +81 -0
- package/src/microservice/config-center/config-center-module.ts +98 -0
- package/src/microservice/config-center/decorators.ts +159 -0
- package/src/microservice/config-center/index.ts +13 -0
- package/src/microservice/config-center/nacos-config-center.ts +126 -0
- package/src/microservice/config-center/nacos-decorators.ts +34 -0
- package/src/microservice/config-center/types.ts +80 -0
- package/src/microservice/governance/circuit-breaker.ts +229 -0
- package/src/microservice/governance/decorators.ts +113 -0
- package/src/microservice/governance/index.ts +18 -0
- package/src/microservice/governance/rate-limiter.ts +72 -0
- package/src/microservice/governance/redis-rate-limiter.ts +154 -0
- package/src/microservice/governance/retry-strategy.ts +74 -0
- package/src/microservice/governance/types.ts +247 -0
- package/src/microservice/index.ts +12 -0
- package/src/microservice/monitoring/index.ts +8 -0
- package/src/microservice/monitoring/metrics-collector.ts +223 -0
- package/src/microservice/monitoring/metrics-integration.ts +154 -0
- package/src/microservice/monitoring/types.ts +118 -0
- package/src/microservice/service-client/call-decorators.ts +107 -0
- package/src/microservice/service-client/decorators.ts +87 -0
- package/src/microservice/service-client/index.ts +37 -0
- package/src/microservice/service-client/interceptors.ts +182 -0
- package/src/microservice/service-client/load-balancer.ts +205 -0
- package/src/microservice/service-client/service-client.ts +488 -0
- package/src/microservice/service-client/types.ts +186 -0
- package/src/microservice/service-registry/decorators.ts +238 -0
- package/src/microservice/service-registry/discovery-decorators.ts +156 -0
- package/src/microservice/service-registry/health-integration.ts +146 -0
- package/src/microservice/service-registry/index.ts +20 -0
- package/src/microservice/service-registry/nacos-service-registry.ts +259 -0
- package/src/microservice/service-registry/service-registry-module.ts +105 -0
- package/src/microservice/service-registry/types.ts +149 -0
- package/src/microservice/tracing/collectors.ts +50 -0
- package/src/microservice/tracing/index.ts +15 -0
- package/src/microservice/tracing/tracer.ts +293 -0
- package/src/microservice/tracing/types.ts +213 -0
- package/src/request/request.ts +1 -0
- package/tests/config/set-value-by-path.test.ts +53 -0
- package/tests/core/graceful-shutdown.test.ts +321 -0
- package/tests/microservice/config-center.test.ts +77 -0
- package/tests/microservice/governance.test.ts +157 -0
- package/tests/microservice/monitoring.test.ts +75 -0
- package/tests/microservice/service-client.test.ts +136 -0
- package/tests/microservice/service-registry.test.ts +80 -0
- package/tests/microservice/tracing.test.ts +143 -0
- package/tests/utils/test-port.ts +29 -19
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ServiceInstance } from '../service-registry/types';
|
|
2
|
+
import type { LoadBalancer, LoadBalanceStrategy } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 随机负载均衡器
|
|
5
|
+
*/
|
|
6
|
+
export declare class RandomLoadBalancer implements LoadBalancer {
|
|
7
|
+
select(instances: ServiceInstance[]): ServiceInstance | null;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 轮询负载均衡器
|
|
11
|
+
*/
|
|
12
|
+
export declare class RoundRobinLoadBalancer implements LoadBalancer {
|
|
13
|
+
private currentIndex;
|
|
14
|
+
select(instances: ServiceInstance[]): ServiceInstance | null;
|
|
15
|
+
/**
|
|
16
|
+
* 重置轮询索引
|
|
17
|
+
*/
|
|
18
|
+
reset(): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 加权轮询负载均衡器
|
|
22
|
+
*/
|
|
23
|
+
export declare class WeightedRoundRobinLoadBalancer implements LoadBalancer {
|
|
24
|
+
private currentIndex;
|
|
25
|
+
private currentWeight;
|
|
26
|
+
private maxWeight;
|
|
27
|
+
select(instances: ServiceInstance[]): ServiceInstance | null;
|
|
28
|
+
/**
|
|
29
|
+
* 重置轮询状态
|
|
30
|
+
*/
|
|
31
|
+
reset(): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 一致性哈希负载均衡器
|
|
35
|
+
*/
|
|
36
|
+
export declare class ConsistentHashLoadBalancer implements LoadBalancer {
|
|
37
|
+
private readonly virtualNodes;
|
|
38
|
+
select(instances: ServiceInstance[], key?: string): ServiceInstance | null;
|
|
39
|
+
/**
|
|
40
|
+
* 简单的字符串哈希函数(FNV-1a)
|
|
41
|
+
*/
|
|
42
|
+
private hash;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 最少连接负载均衡器(简化版:使用权重和健康状态)
|
|
46
|
+
*/
|
|
47
|
+
export declare class LeastActiveLoadBalancer implements LoadBalancer {
|
|
48
|
+
select(instances: ServiceInstance[]): ServiceInstance | null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 负载均衡器工厂
|
|
52
|
+
*/
|
|
53
|
+
export declare class LoadBalancerFactory {
|
|
54
|
+
/**
|
|
55
|
+
* 创建负载均衡器
|
|
56
|
+
*/
|
|
57
|
+
static create(strategy: LoadBalanceStrategy): LoadBalancer;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=load-balancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-balancer.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/load-balancer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEjE;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAC9C,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,IAAI;CAQpE;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IACzD,OAAO,CAAC,YAAY,CAAa;IAE1B,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,IAAI;IAUnE;;OAEG;IACI,KAAK,IAAI,IAAI;CAGrB;AAED;;GAEG;AACH,qBAAa,8BAA+B,YAAW,YAAY;IACjE,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,SAAS,CAAa;IAEvB,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,IAAI;IAiCnE;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB;AAED;;GAEG;AACH,qBAAa,0BAA2B,YAAW,YAAY;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAErC,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAwCjF;;OAEG;IACH,OAAO,CAAC,IAAI;CAQb;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IACnD,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,IAAI;CAuBpE;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;OAEG;WACW,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,YAAY;CAgBlE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ServiceRegistry } from '../service-registry/types';
|
|
2
|
+
import { type CircuitBreakerOptions, type RateLimiterOptions, type RetryStrategy } from '../governance';
|
|
3
|
+
import { Tracer } from '../tracing';
|
|
4
|
+
import { ServiceMetricsCollector } from '../monitoring';
|
|
5
|
+
import { type ServiceCallOptions, type ServiceCallResponse, type ServiceRequestInterceptor, type ServiceResponseInterceptor } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* 服务调用客户端
|
|
8
|
+
* 依赖 ServiceRegistry 抽象接口,不依赖具体实现
|
|
9
|
+
*/
|
|
10
|
+
export declare class ServiceClient {
|
|
11
|
+
private readonly serviceRegistry;
|
|
12
|
+
private readonly requestInterceptors;
|
|
13
|
+
private readonly responseInterceptors;
|
|
14
|
+
private readonly loadBalancers;
|
|
15
|
+
private readonly circuitBreakers;
|
|
16
|
+
private readonly rateLimiters;
|
|
17
|
+
private defaultCircuitBreakerOptions?;
|
|
18
|
+
private defaultRateLimiterOptions?;
|
|
19
|
+
private defaultRetryStrategy?;
|
|
20
|
+
private tracer?;
|
|
21
|
+
private metricsCollector?;
|
|
22
|
+
constructor(serviceRegistry: ServiceRegistry);
|
|
23
|
+
/**
|
|
24
|
+
* 设置默认熔断器配置
|
|
25
|
+
*/
|
|
26
|
+
setDefaultCircuitBreakerOptions(options: CircuitBreakerOptions): void;
|
|
27
|
+
/**
|
|
28
|
+
* 设置默认限流器配置
|
|
29
|
+
*/
|
|
30
|
+
setDefaultRateLimiterOptions(options: RateLimiterOptions): void;
|
|
31
|
+
/**
|
|
32
|
+
* 设置默认重试策略
|
|
33
|
+
*/
|
|
34
|
+
setDefaultRetryStrategy(strategy: RetryStrategy): void;
|
|
35
|
+
/**
|
|
36
|
+
* 设置追踪器
|
|
37
|
+
*/
|
|
38
|
+
setTracer(tracer: Tracer): void;
|
|
39
|
+
/**
|
|
40
|
+
* 设置监控指标收集器
|
|
41
|
+
*/
|
|
42
|
+
setMetricsCollector(collector: ServiceMetricsCollector): void;
|
|
43
|
+
/**
|
|
44
|
+
* 添加请求拦截器
|
|
45
|
+
*/
|
|
46
|
+
addRequestInterceptor(interceptor: ServiceRequestInterceptor): void;
|
|
47
|
+
/**
|
|
48
|
+
* 添加响应拦截器
|
|
49
|
+
*/
|
|
50
|
+
addResponseInterceptor(interceptor: ServiceResponseInterceptor): void;
|
|
51
|
+
/**
|
|
52
|
+
* 调用服务
|
|
53
|
+
*/
|
|
54
|
+
call<T = unknown>(options: ServiceCallOptions): Promise<ServiceCallResponse<T>>;
|
|
55
|
+
/**
|
|
56
|
+
* 流式调用服务(返回 ReadableStream)
|
|
57
|
+
* @param options - 服务调用选项
|
|
58
|
+
* @returns ReadableStream
|
|
59
|
+
*/
|
|
60
|
+
callStream(options: ServiceCallOptions): Promise<ReadableStream>;
|
|
61
|
+
/**
|
|
62
|
+
* 执行流式 HTTP 请求
|
|
63
|
+
*/
|
|
64
|
+
private executeStreamRequest;
|
|
65
|
+
/**
|
|
66
|
+
* 执行 HTTP 请求
|
|
67
|
+
*/
|
|
68
|
+
private executeRequest;
|
|
69
|
+
/**
|
|
70
|
+
* 休眠(用于重试延迟)
|
|
71
|
+
*/
|
|
72
|
+
private sleep;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=service-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/service-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,MAAM,EAKP,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EAExB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAEhC,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmC;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAoC;IACzE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;IACtE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,4BAA4B,CAAC,CAAwB;IAC7D,OAAO,CAAC,yBAAyB,CAAC,CAAqB;IACvD,OAAO,CAAC,oBAAoB,CAAC,CAAgB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAC,CAA0B;gBAEhC,eAAe,EAAE,eAAe;IAInD;;OAEG;IACI,+BAA+B,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAI5E;;OAEG;IACI,4BAA4B,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAItE;;OAEG;IACI,uBAAuB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI7D;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC;;OAEG;IACI,mBAAmB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IAIpE;;OAEG;IACI,qBAAqB,CAAC,WAAW,EAAE,yBAAyB,GAAG,IAAI;IAI1E;;OAEG;IACI,sBAAsB,CAAC,WAAW,EAAE,0BAA0B,GAAG,IAAI;IAI5E;;OAEG;IACU,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAmJ5F;;;;OAIG;IACU,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAqC7E;;OAEG;YACW,oBAAoB;IA0ElC;;OAEG;YACW,cAAc;IA4G5B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import type { ServiceInstance } from '../service-registry/types';
|
|
2
|
+
/**
|
|
3
|
+
* 负载均衡策略类型
|
|
4
|
+
*/
|
|
5
|
+
export type LoadBalanceStrategy = 'random' | 'roundRobin' | 'weightedRoundRobin' | 'consistentHash' | 'leastActive';
|
|
6
|
+
/**
|
|
7
|
+
* 负载均衡器接口
|
|
8
|
+
*/
|
|
9
|
+
export interface LoadBalancer {
|
|
10
|
+
/**
|
|
11
|
+
* 选择服务实例
|
|
12
|
+
* @param instances - 服务实例列表
|
|
13
|
+
* @param key - 用于一致性哈希的键(可选)
|
|
14
|
+
* @returns 选中的服务实例
|
|
15
|
+
*/
|
|
16
|
+
select(instances: ServiceInstance[], key?: string): ServiceInstance | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 服务调用选项
|
|
20
|
+
*/
|
|
21
|
+
export interface ServiceCallOptions {
|
|
22
|
+
/**
|
|
23
|
+
* 服务名
|
|
24
|
+
*/
|
|
25
|
+
serviceName: string;
|
|
26
|
+
/**
|
|
27
|
+
* HTTP 方法
|
|
28
|
+
*/
|
|
29
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
30
|
+
/**
|
|
31
|
+
* 请求路径
|
|
32
|
+
*/
|
|
33
|
+
path: string;
|
|
34
|
+
/**
|
|
35
|
+
* 请求头(可选)
|
|
36
|
+
*/
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
/**
|
|
39
|
+
* 请求体(可选)
|
|
40
|
+
*/
|
|
41
|
+
body?: string | object;
|
|
42
|
+
/**
|
|
43
|
+
* 查询参数(可选)
|
|
44
|
+
*/
|
|
45
|
+
query?: Record<string, string | number | boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* 超时时间(毫秒)
|
|
48
|
+
* @default 5000
|
|
49
|
+
*/
|
|
50
|
+
timeout?: number;
|
|
51
|
+
/**
|
|
52
|
+
* 重试次数
|
|
53
|
+
* @default 0
|
|
54
|
+
*/
|
|
55
|
+
retryCount?: number;
|
|
56
|
+
/**
|
|
57
|
+
* 重试延迟(毫秒)
|
|
58
|
+
* @default 1000
|
|
59
|
+
*/
|
|
60
|
+
retryDelay?: number;
|
|
61
|
+
/**
|
|
62
|
+
* 负载均衡策略
|
|
63
|
+
* @default 'roundRobin'
|
|
64
|
+
*/
|
|
65
|
+
loadBalanceStrategy?: LoadBalanceStrategy;
|
|
66
|
+
/**
|
|
67
|
+
* 用于一致性哈希的键(可选)
|
|
68
|
+
*/
|
|
69
|
+
consistentHashKey?: string;
|
|
70
|
+
/**
|
|
71
|
+
* 服务实例查询选项(可选)
|
|
72
|
+
*/
|
|
73
|
+
instanceOptions?: {
|
|
74
|
+
namespaceId?: string;
|
|
75
|
+
groupName?: string;
|
|
76
|
+
clusterName?: string;
|
|
77
|
+
healthyOnly?: boolean;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* 是否启用熔断器(可选)
|
|
81
|
+
* @default false
|
|
82
|
+
*/
|
|
83
|
+
enableCircuitBreaker?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* 熔断器降级处理函数(可选)
|
|
86
|
+
*/
|
|
87
|
+
fallback?: () => Promise<unknown> | unknown;
|
|
88
|
+
/**
|
|
89
|
+
* 是否启用限流(可选)
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
enableRateLimit?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* 限流键(可选,默认使用服务名)
|
|
95
|
+
*/
|
|
96
|
+
rateLimitKey?: string;
|
|
97
|
+
/**
|
|
98
|
+
* 是否流式响应(用于 Server-Sent Events 等)
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
stream?: boolean;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 服务调用响应
|
|
105
|
+
*/
|
|
106
|
+
export interface ServiceCallResponse<T = unknown> {
|
|
107
|
+
/**
|
|
108
|
+
* HTTP 状态码
|
|
109
|
+
*/
|
|
110
|
+
status: number;
|
|
111
|
+
/**
|
|
112
|
+
* 响应头
|
|
113
|
+
*/
|
|
114
|
+
headers: Record<string, string>;
|
|
115
|
+
/**
|
|
116
|
+
* 响应体
|
|
117
|
+
*/
|
|
118
|
+
data: T;
|
|
119
|
+
/**
|
|
120
|
+
* 使用的服务实例
|
|
121
|
+
*/
|
|
122
|
+
instance: ServiceInstance;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 服务请求拦截器接口
|
|
126
|
+
*/
|
|
127
|
+
export interface ServiceRequestInterceptor {
|
|
128
|
+
/**
|
|
129
|
+
* 拦截请求
|
|
130
|
+
* @param options - 服务调用选项
|
|
131
|
+
* @returns 修改后的选项或 Promise
|
|
132
|
+
*/
|
|
133
|
+
intercept(options: ServiceCallOptions): ServiceCallOptions | Promise<ServiceCallOptions>;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 服务响应拦截器接口
|
|
137
|
+
*/
|
|
138
|
+
export interface ServiceResponseInterceptor {
|
|
139
|
+
/**
|
|
140
|
+
* 拦截响应
|
|
141
|
+
* @param response - 服务调用响应
|
|
142
|
+
* @returns 修改后的响应或 Promise
|
|
143
|
+
*/
|
|
144
|
+
intercept<T>(response: ServiceCallResponse<T>): ServiceCallResponse<T> | Promise<ServiceCallResponse<T>>;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 服务调用错误
|
|
148
|
+
*/
|
|
149
|
+
export declare class ServiceCallError extends Error {
|
|
150
|
+
readonly status?: number | undefined;
|
|
151
|
+
readonly response?: unknown | undefined;
|
|
152
|
+
readonly instance?: ServiceInstance | undefined;
|
|
153
|
+
constructor(message: string, status?: number | undefined, response?: unknown | undefined, instance?: ServiceInstance | undefined);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { Constructor } from '../../core/types';
|
|
3
|
+
/**
|
|
4
|
+
* 服务注册元数据
|
|
5
|
+
*/
|
|
6
|
+
export interface ServiceRegistryMetadata {
|
|
7
|
+
/**
|
|
8
|
+
* 服务名
|
|
9
|
+
*/
|
|
10
|
+
serviceName: string;
|
|
11
|
+
/**
|
|
12
|
+
* 服务 IP(可选,默认从 Application 获取)
|
|
13
|
+
*/
|
|
14
|
+
ip?: string;
|
|
15
|
+
/**
|
|
16
|
+
* 服务端口(可选,默认从 Application 获取)
|
|
17
|
+
*/
|
|
18
|
+
port?: number;
|
|
19
|
+
/**
|
|
20
|
+
* 服务权重(可选)
|
|
21
|
+
*/
|
|
22
|
+
weight?: number;
|
|
23
|
+
/**
|
|
24
|
+
* 是否启用(可选)
|
|
25
|
+
*/
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* 元数据(可选)
|
|
29
|
+
*/
|
|
30
|
+
metadata?: Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* 集群名(可选)
|
|
33
|
+
*/
|
|
34
|
+
clusterName?: string;
|
|
35
|
+
/**
|
|
36
|
+
* 命名空间(可选)
|
|
37
|
+
*/
|
|
38
|
+
namespaceId?: string;
|
|
39
|
+
/**
|
|
40
|
+
* 分组名(可选)
|
|
41
|
+
*/
|
|
42
|
+
groupName?: string;
|
|
43
|
+
/**
|
|
44
|
+
* 是否健康(可选)
|
|
45
|
+
*/
|
|
46
|
+
healthy?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* ServiceRegistry 装饰器
|
|
50
|
+
* 用于自动注册服务到注册中心
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* @ServiceRegistry('my-service', { port: 3000 })
|
|
55
|
+
* @Controller('/api')
|
|
56
|
+
* class MyController {
|
|
57
|
+
* // 服务会在应用启动时自动注册
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function ServiceRegistry(serviceName: string, options?: {
|
|
62
|
+
ip?: string;
|
|
63
|
+
port?: number;
|
|
64
|
+
weight?: number;
|
|
65
|
+
enabled?: boolean;
|
|
66
|
+
metadata?: Record<string, string>;
|
|
67
|
+
clusterName?: string;
|
|
68
|
+
namespaceId?: string;
|
|
69
|
+
groupName?: string;
|
|
70
|
+
healthy?: boolean;
|
|
71
|
+
}): ClassDecorator;
|
|
72
|
+
/**
|
|
73
|
+
* 获取服务注册元数据
|
|
74
|
+
*/
|
|
75
|
+
export declare function getServiceRegistryMetadata(target: Constructor<unknown>): ServiceRegistryMetadata | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* 注册服务实例
|
|
78
|
+
*/
|
|
79
|
+
export declare function registerServiceInstance(target: Constructor<unknown>, appPort?: number, appHost?: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* 注销服务实例
|
|
82
|
+
*/
|
|
83
|
+
export declare function deregisterServiceInstance(target: Constructor<unknown>, appPort?: number, appHost?: string): Promise<void>;
|
|
84
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-registry/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,cAAc,CAkBhB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,uBAAuB,GAAG,SAAS,CAErC;AAKD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { Constructor } from '../../core/types';
|
|
3
|
+
/**
|
|
4
|
+
* 服务发现元数据
|
|
5
|
+
*/
|
|
6
|
+
export interface ServiceDiscoveryMetadata {
|
|
7
|
+
/**
|
|
8
|
+
* 服务名
|
|
9
|
+
*/
|
|
10
|
+
serviceName: string;
|
|
11
|
+
/**
|
|
12
|
+
* 服务实例查询选项
|
|
13
|
+
*/
|
|
14
|
+
options?: {
|
|
15
|
+
namespaceId?: string;
|
|
16
|
+
groupName?: string;
|
|
17
|
+
clusterName?: string;
|
|
18
|
+
healthyOnly?: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* 属性名(用于注入服务实例列表)
|
|
22
|
+
*/
|
|
23
|
+
propertyKey?: string | symbol;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* ServiceDiscovery 装饰器
|
|
27
|
+
* 用于自动注入服务实例列表
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* @Injectable()
|
|
32
|
+
* class MyService {
|
|
33
|
+
* @ServiceDiscovery('my-service')
|
|
34
|
+
* public instances: ServiceInstance[] = [];
|
|
35
|
+
*
|
|
36
|
+
* public async getServiceInstances() {
|
|
37
|
+
* // instances 会自动更新
|
|
38
|
+
* return this.instances;
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function ServiceDiscovery(serviceName: string, options?: {
|
|
44
|
+
namespaceId?: string;
|
|
45
|
+
groupName?: string;
|
|
46
|
+
clusterName?: string;
|
|
47
|
+
healthyOnly?: boolean;
|
|
48
|
+
}): PropertyDecorator;
|
|
49
|
+
/**
|
|
50
|
+
* 获取类的所有服务发现元数据
|
|
51
|
+
*/
|
|
52
|
+
export declare function getServiceDiscoveryMetadata(target: Constructor<unknown>): Map<string | symbol, ServiceDiscoveryMetadata>;
|
|
53
|
+
/**
|
|
54
|
+
* 初始化类的服务发现属性
|
|
55
|
+
* 在类实例化后调用,自动加载服务实例列表
|
|
56
|
+
*/
|
|
57
|
+
export declare function initializeServiceDiscovery(instance: object, target: Constructor<unknown>): Promise<void>;
|
|
58
|
+
//# sourceMappingURL=discovery-decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-registry/discovery-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GACA,iBAAiB,CAoCnB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,wBAAwB,CAAC,CAIhD;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ServiceInstance } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 健康检查与服务注册集成器
|
|
4
|
+
* 根据健康检查状态自动更新服务注册的健康状态
|
|
5
|
+
*/
|
|
6
|
+
export declare class ServiceRegistryHealthIntegration {
|
|
7
|
+
private serviceRegistry?;
|
|
8
|
+
private healthIndicators;
|
|
9
|
+
private updateInterval?;
|
|
10
|
+
private registeredInstances;
|
|
11
|
+
/**
|
|
12
|
+
* 注册服务实例并启动健康检查集成
|
|
13
|
+
*/
|
|
14
|
+
registerWithHealthCheck(instance: ServiceInstance): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* 启动健康检查更新
|
|
17
|
+
*/
|
|
18
|
+
private startHealthCheckUpdates;
|
|
19
|
+
/**
|
|
20
|
+
* 更新所有注册服务的健康状态
|
|
21
|
+
*/
|
|
22
|
+
private updateHealthStatus;
|
|
23
|
+
/**
|
|
24
|
+
* 检查应用健康状态
|
|
25
|
+
*/
|
|
26
|
+
private checkHealth;
|
|
27
|
+
/**
|
|
28
|
+
* 停止健康检查更新
|
|
29
|
+
*/
|
|
30
|
+
stop(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=health-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-integration.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-registry/health-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,SAAS,CAAC;AAMhE;;;GAGG;AACH,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAC,CAAiC;IACxD,OAAO,CAAC,mBAAmB,CAA2C;IAEtE;;OAEG;IACU,uBAAuB,CAClC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAiChB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;YACW,kBAAkB;IAkChC;;OAEG;YACW,WAAW;IAqBzB;;OAEG;IACI,IAAI,IAAI,IAAI;CAMpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ServiceRegistryModule } from './service-registry-module';
|
|
2
|
+
export type { ServiceRegistryModuleOptions, ServiceRegistryProvider, NacosServiceRegistryOptions } from './service-registry-module';
|
|
3
|
+
export { NacosServiceRegistry } from './nacos-service-registry';
|
|
4
|
+
export { SERVICE_REGISTRY_TOKEN } from './types';
|
|
5
|
+
export type { GetInstancesOptions, InstancesChangeListener, ServiceInstance, ServiceRegistry } from './types';
|
|
6
|
+
export { ServiceRegistry as ServiceRegistryDecorator, getServiceRegistryMetadata, registerServiceInstance, deregisterServiceInstance, } from './decorators';
|
|
7
|
+
export { ServiceDiscovery, getServiceDiscoveryMetadata, initializeServiceDiscovery, type ServiceDiscoveryMetadata, } from './discovery-decorators';
|
|
8
|
+
export { ServiceRegistryHealthIntegration } from './health-integration';
|
|
9
|
+
export type { ServiceRegistryMetadata } from './decorators';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACpI,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EACL,eAAe,IAAI,wBAAwB,EAC3C,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { NacosClient } from '@dangao/nacos-client';
|
|
2
|
+
import type { ServiceInstance, GetInstancesOptions, InstancesChangeListener, ServiceRegistry } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Nacos 服务注册中心实现
|
|
5
|
+
* 实现 ServiceRegistry 接口,内部使用 @dangao/nacos-client
|
|
6
|
+
*/
|
|
7
|
+
export declare class NacosServiceRegistry implements ServiceRegistry {
|
|
8
|
+
private readonly client;
|
|
9
|
+
private readonly serviceClient;
|
|
10
|
+
private readonly watchers;
|
|
11
|
+
private readonly watchInterval;
|
|
12
|
+
private readonly heartbeatInterval;
|
|
13
|
+
private heartbeatTimers;
|
|
14
|
+
constructor(client: NacosClient, options?: {
|
|
15
|
+
/**
|
|
16
|
+
* 服务实例变更监听轮询间隔(毫秒)
|
|
17
|
+
* @default 5000
|
|
18
|
+
*/
|
|
19
|
+
watchInterval?: number;
|
|
20
|
+
/**
|
|
21
|
+
* 心跳间隔(毫秒)
|
|
22
|
+
* @default 5000
|
|
23
|
+
*/
|
|
24
|
+
heartbeatInterval?: number;
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* 注册服务实例
|
|
28
|
+
*/
|
|
29
|
+
register(instance: ServiceInstance): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 注销服务实例
|
|
32
|
+
*/
|
|
33
|
+
deregister(instance: ServiceInstance): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* 续约服务实例(心跳)
|
|
36
|
+
*/
|
|
37
|
+
renew(instance: ServiceInstance): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* 查询服务实例列表
|
|
40
|
+
*/
|
|
41
|
+
getInstances(serviceName: string, options?: GetInstancesOptions): Promise<ServiceInstance[]>;
|
|
42
|
+
/**
|
|
43
|
+
* 监听服务实例变更
|
|
44
|
+
* 通过轮询实现服务实例变更监听(Nacos 3.X 移除 UDP 推送)
|
|
45
|
+
*/
|
|
46
|
+
watchInstances(serviceName: string, listener: InstancesChangeListener, options?: GetInstancesOptions): () => void;
|
|
47
|
+
/**
|
|
48
|
+
* 关闭注册中心连接
|
|
49
|
+
*/
|
|
50
|
+
close(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* 启动心跳机制
|
|
53
|
+
*/
|
|
54
|
+
private startHeartbeat;
|
|
55
|
+
/**
|
|
56
|
+
* 停止心跳机制
|
|
57
|
+
*/
|
|
58
|
+
private stopHeartbeat;
|
|
59
|
+
/**
|
|
60
|
+
* 生成监听器 key
|
|
61
|
+
*/
|
|
62
|
+
private getWatchKey;
|
|
63
|
+
/**
|
|
64
|
+
* 生成实例 key
|
|
65
|
+
*/
|
|
66
|
+
private getInstanceKey;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=nacos-service-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nacos-service-registry.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-registry/nacos-service-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqF;IAC9G,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAClD,OAAO,CAAC,eAAe,CAAkC;gBAGvD,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;QACR;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QAEvB;;;WAGG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B;IAQH;;OAEG;IACU,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/D;;OAEG;IACU,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE;;OAEG;IACU,KAAK,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5D;;OAEG;IACU,YAAY,CACvB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC;IAuB7B;;;OAGG;IACI,cAAc,CACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,IAAI;IAwCb;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,cAAc;CAWvB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { NacosClientOptions } from '@dangao/nacos-client';
|
|
2
|
+
/**
|
|
3
|
+
* 服务注册中心 Provider 类型
|
|
4
|
+
*/
|
|
5
|
+
export type ServiceRegistryProvider = 'nacos' | 'consul' | 'eureka' | 'etcd';
|
|
6
|
+
/**
|
|
7
|
+
* Nacos 服务注册中心选项
|
|
8
|
+
*/
|
|
9
|
+
export interface NacosServiceRegistryOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Nacos 客户端配置
|
|
12
|
+
*/
|
|
13
|
+
client: NacosClientOptions;
|
|
14
|
+
/**
|
|
15
|
+
* 服务实例变更监听轮询间隔(毫秒)
|
|
16
|
+
* @default 5000
|
|
17
|
+
*/
|
|
18
|
+
watchInterval?: number;
|
|
19
|
+
/**
|
|
20
|
+
* 心跳间隔(毫秒)
|
|
21
|
+
* @default 5000
|
|
22
|
+
*/
|
|
23
|
+
heartbeatInterval?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 服务注册中心模块选项
|
|
27
|
+
*/
|
|
28
|
+
export interface ServiceRegistryModuleOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Provider 类型
|
|
31
|
+
*/
|
|
32
|
+
provider: ServiceRegistryProvider;
|
|
33
|
+
/**
|
|
34
|
+
* Nacos 配置(当 provider 为 'nacos' 时使用)
|
|
35
|
+
*/
|
|
36
|
+
nacos?: NacosServiceRegistryOptions;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 服务注册中心模块
|
|
40
|
+
*/
|
|
41
|
+
export declare class ServiceRegistryModule {
|
|
42
|
+
/**
|
|
43
|
+
* 创建服务注册中心模块
|
|
44
|
+
* @param options - 模块配置
|
|
45
|
+
*/
|
|
46
|
+
static forRoot(options: ServiceRegistryModuleOptions): typeof ServiceRegistryModule;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=service-registry-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-registry-module.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-registry/service-registry-module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,QAAQ,EAAE,uBAAuB,CAAC;IAElC;;OAEG;IACH,KAAK,CAAC,EAAE,2BAA2B,CAAC;CAKrC;AAED;;GAEG;AACH,qBAGa,qBAAqB;IAChC;;;OAGG;WACW,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,qBAAqB;CAwC3F"}
|