@tencentcloud/sdk-mcp 1.2.5 → 1.2.7
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/package.json +1 -1
- package/resource/doc/chatuikit/faq/common/server_error_code.md +74 -0
- package/resource/doc/chatuikit/faq/{freq_qa.md → native_sdk/faq.md} +2 -1
- package/resource/doc/chatuikit/faq/web_sdk/error_code.md +47 -0
- package/resource/doc/chatuikit/faq/web_sdk/faq.md +115 -0
- package/resource/doc/chatuikit/flutter/faq.md +117 -0
- package/resource/doc/chatuikit/iOS/faq.md +117 -0
- package/resource/doc/chatuikit/react/faq.md +26 -0
- package/resource/doc/chatuikit/vue/faq.md +35 -0
- package/resource/doc/livekit/faq/common/error_code.md +89 -0
- package/resource/doc/roomkit/common/error_code.md +67 -0
- package/resource/doc/rtcengine/faq/common/userSig.md +309 -0
- package/resource/doc/rtcengine/faq/{web.md → web/web.md} +2 -2
- package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/{how_to_integrated_web_rtc_engine.md → how_to_integrated_web_sdk.md} +7 -2
- package/resource/doc/rtcengine/web/{how_to_run_web_rtc_engine_demo.md → how_to_run_web_sdk_demo.md} +1 -1
- package/resource/doc/tuicallkit/android/faq.md +1000 -0
- package/resource/doc/tuicallkit/faq/common/error_code.md +47 -0
- package/resource/doc/tuicallkit/flutter/faq.md +981 -0
- package/resource/doc/tuicallkit/{faq → iOS}/faq.md +0 -72
- package/resource/doc/tuicallkit/react/faq.md +986 -0
- package/resource/doc/tuicallkit/vue/faq.md +986 -0
- package/tools/call/get-native-call-integration.js +4 -10
- package/tools/call/get-native-call-integration.js.map +1 -1
- package/tools/call/get-web-call-api.js +4 -7
- package/tools/call/get-web-call-api.js.map +1 -1
- package/tools/call/get-web-call-integration.js +4 -9
- package/tools/call/get-web-call-integration.js.map +1 -1
- package/tools/chat/get-native-chat-integration.js +4 -8
- package/tools/chat/get-native-chat-integration.js.map +1 -1
- package/tools/chat/get-web-chat-component-detail.js +5 -10
- package/tools/chat/get-web-chat-component-detail.js.map +1 -1
- package/tools/chat/get-web-chat-integration.js +4 -12
- package/tools/chat/get-web-chat-integration.js.map +1 -1
- package/tools/chat/get-web-chat-uikit-init.js +5 -6
- package/tools/chat/get-web-chat-uikit-init.js.map +1 -1
- package/tools/chat/get-web-chat-window-integration.js +4 -12
- package/tools/chat/get-web-chat-window-integration.js.map +1 -1
- package/tools/chat/{create-group.js → get-web-create-group-doc.js} +5 -6
- package/tools/chat/get-web-create-group-doc.js.map +1 -0
- package/tools/common/get-faq.js +93 -0
- package/tools/common/get-faq.js.map +1 -0
- package/tools/common/get-usersig.js +9 -18
- package/tools/common/get-usersig.js.map +1 -1
- package/tools/common/present-framework-choice.js +3 -10
- package/tools/common/present-framework-choice.js.map +1 -1
- package/tools/common/record-prompt.js +5 -12
- package/tools/common/record-prompt.js.map +1 -1
- package/tools/common/record-result.js +7 -11
- package/tools/common/record-result.js.map +1 -1
- package/tools/definitions/get_faq_def.js +28 -0
- package/tools/definitions/get_faq_def.js.map +1 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +21 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -0
- package/tools/definitions/get_native_chat_uikit_integration_def.js +21 -0
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -0
- package/tools/definitions/get_usersig_def.js +34 -0
- package/tools/definitions/get_usersig_def.js.map +1 -0
- package/tools/definitions/get_web_call_uikit_api_def.js +23 -0
- package/tools/definitions/get_web_call_uikit_api_def.js.map +1 -0
- package/tools/definitions/get_web_call_uikit_integration_def.js +20 -0
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -0
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +24 -0
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -0
- package/tools/definitions/get_web_chat_uikit_init_def.js +23 -0
- package/tools/definitions/get_web_chat_uikit_init_def.js.map +1 -0
- package/tools/definitions/get_web_chat_uikit_integration_def.js +26 -0
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -0
- package/tools/definitions/get_web_chat_window_integration_def.js +26 -0
- package/tools/definitions/get_web_chat_window_integration_def.js.map +1 -0
- package/tools/definitions/get_web_create_group_doc_def.js +18 -0
- package/tools/definitions/get_web_create_group_doc_def.js.map +1 -0
- package/tools/definitions/get_web_live_state_detail_def.js +19 -0
- package/tools/definitions/get_web_live_state_detail_def.js.map +1 -0
- package/tools/definitions/get_web_live_uikit_component_detail_def.js +21 -0
- package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +1 -0
- package/tools/definitions/get_web_room_state_detail_def.js +19 -0
- package/tools/definitions/get_web_room_state_detail_def.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +24 -0
- package/tools/definitions/present_framework_choice_def.js.map +1 -0
- package/tools/definitions/record_prompt_def.js +22 -0
- package/tools/definitions/record_prompt_def.js.map +1 -0
- package/tools/definitions/record_result_def.js +22 -0
- package/tools/definitions/record_result_def.js.map +1 -0
- package/tools/index.js +13 -11
- package/tools/index.js.map +1 -1
- package/tools/live/get-web-live-component-detail.js +5 -7
- package/tools/live/get-web-live-component-detail.js.map +1 -1
- package/tools/live/get-web-live-state-detail.js +5 -7
- package/tools/live/get-web-live-state-detail.js.map +1 -1
- package/tools/room/get-web-room-state-detail.js +5 -7
- package/tools/room/get-web-room-state-detail.js.map +1 -1
- package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +28 -0
- package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +1 -0
- package/tools/rtcengine/get-trtc-sdk-faq.js +32 -0
- package/tools/rtcengine/get-trtc-sdk-faq.js.map +1 -0
- package/tools/rtcengine/get-trtc-web-sdk-api.js +28 -0
- package/tools/rtcengine/get-trtc-web-sdk-api.js.map +1 -0
- package/tools/rtcengine/get-trtc-web-sdk-faq.js +2 -3
- package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +1 -1
- package/tools/rtcengine/get-trtc-web-sdk-integration.js +29 -0
- package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +1 -0
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
- package/libs/@tencent/aegis-node-sdk/CHANGELOG.md +0 -8
- package/libs/@tencent/aegis-node-sdk/LICENSE +0 -21
- package/libs/@tencent/aegis-node-sdk/README.md +0 -562
- package/libs/@tencent/aegis-node-sdk/lib/aegis.min.js +0 -1
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/constant/config.d.ts +0 -14
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/constant/global.d.ts +0 -1
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/constant/index.d.ts +0 -9
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/constant/report-ignore.d.ts +0 -2
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/core.d.ts +0 -85
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/hooks/afterRequestHooks.d.ts +0 -3
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/hooks/beforeRequestHooks.d.ts +0 -9
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/hooks/modifyRequestHooks.d.ts +0 -3
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/index.d.ts +0 -9
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/interface/config.d.ts +0 -62
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/interface/env.d.ts +0 -11
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/interface/index.d.ts +0 -4
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/interface/log.d.ts +0 -130
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/interface/send.d.ts +0 -34
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/format.d.ts +0 -2
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/index.d.ts +0 -18
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/length-limit.d.ts +0 -8
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/pv.d.ts +0 -8
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/remove-payload.d.ts +0 -2
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/repeat-limit.d.ts +0 -4
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/report.d.ts +0 -10
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/sample.d.ts +0 -3
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/throttle.d.ts +0 -3
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/index.d.ts +0 -34
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/jwt.d.ts +0 -12
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/ot-js.d.ts +0 -14
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/uuid.d.ts +0 -2
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/whitelist.d.ts +0 -12
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/write-before.d.ts +0 -3
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/plugin.d.ts +0 -33
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/util/destroy.d.ts +0 -2
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/util/event-emitter.d.ts +0 -18
- package/libs/@tencent/aegis-node-sdk/lib/packages/core/src/util/index.d.ts +0 -60
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/index.d.ts +0 -15
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/interface/selector.d.ts +0 -5
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/pipes/batch-report-pipe.d.ts +0 -6
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/protocol/protocol_base.d.ts +0 -18
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/protocol/protocol_http.d.ts +0 -12
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/selector/ip_selector.d.ts +0 -10
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/selector/polaris_selector.d.ts +0 -20
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/selector/selector_base.d.ts +0 -27
- package/libs/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/util/eval_require.d.ts +0 -2
- package/libs/@tencent/aegis-node-sdk/package.json +0 -19
- package/libs/@tencent/polaris/README.md +0 -407
- package/libs/@tencent/polaris/dist/consumer/health.d.ts +0 -126
- package/libs/@tencent/polaris/dist/consumer/health.js +0 -283
- package/libs/@tencent/polaris/dist/consumer/health.js.map +0 -1
- package/libs/@tencent/polaris/dist/consumer/index.d.ts +0 -120
- package/libs/@tencent/polaris/dist/consumer/index.js +0 -348
- package/libs/@tencent/polaris/dist/consumer/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/consumer/monitor.d.ts +0 -145
- package/libs/@tencent/polaris/dist/consumer/monitor.js +0 -343
- package/libs/@tencent/polaris/dist/consumer/monitor.js.map +0 -1
- package/libs/@tencent/polaris/dist/consumer/selector.d.ts +0 -73
- package/libs/@tencent/polaris/dist/consumer/selector.js +0 -316
- package/libs/@tencent/polaris/dist/consumer/selector.js.map +0 -1
- package/libs/@tencent/polaris/dist/errors.d.ts +0 -373
- package/libs/@tencent/polaris/dist/errors.js +0 -154
- package/libs/@tencent/polaris/dist/errors.js.map +0 -1
- package/libs/@tencent/polaris/dist/global.d.ts +0 -16
- package/libs/@tencent/polaris/dist/global.js +0 -18
- package/libs/@tencent/polaris/dist/global.js.map +0 -1
- package/libs/@tencent/polaris/dist/index.d.ts +0 -62
- package/libs/@tencent/polaris/dist/index.js +0 -145
- package/libs/@tencent/polaris/dist/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/instance.d.ts +0 -109
- package/libs/@tencent/polaris/dist/instance.js +0 -38
- package/libs/@tencent/polaris/dist/instance.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/bucket.d.ts +0 -51
- package/libs/@tencent/polaris/dist/limiter/bucket.js +0 -152
- package/libs/@tencent/polaris/dist/limiter/bucket.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/index.d.ts +0 -73
- package/libs/@tencent/polaris/dist/limiter/index.js +0 -149
- package/libs/@tencent/polaris/dist/limiter/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/ratelimit.d.ts +0 -27
- package/libs/@tencent/polaris/dist/limiter/ratelimit.js +0 -134
- package/libs/@tencent/polaris/dist/limiter/ratelimit.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/base.d.ts +0 -17
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/base.js +0 -15
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/base.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/global.d.ts +0 -59
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/global.js +0 -397
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/global.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/index.d.ts +0 -3
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/index.js +0 -19
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/local.d.ts +0 -17
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/local.js +0 -52
- package/libs/@tencent/polaris/dist/limiter/ratelimiter/local.js.map +0 -1
- package/libs/@tencent/polaris/dist/location.d.ts +0 -48
- package/libs/@tencent/polaris/dist/location.js +0 -67
- package/libs/@tencent/polaris/dist/location.js.map +0 -1
- package/libs/@tencent/polaris/dist/logging.d.ts +0 -106
- package/libs/@tencent/polaris/dist/logging.js +0 -130
- package/libs/@tencent/polaris/dist/logging.js.map +0 -1
- package/libs/@tencent/polaris/dist/metadata.d.ts +0 -78
- package/libs/@tencent/polaris/dist/metadata.js +0 -119
- package/libs/@tencent/polaris/dist/metadata.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/breaker/polaris.d.ts +0 -47
- package/libs/@tencent/polaris/dist/plugins/breaker/polaris.js +0 -162
- package/libs/@tencent/polaris/dist/plugins/breaker/polaris.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/base.d.ts +0 -24
- package/libs/@tencent/polaris/dist/plugins/lb/base.js +0 -32
- package/libs/@tencent/polaris/dist/plugins/lb/base.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/edf.d.ts +0 -24
- package/libs/@tencent/polaris/dist/plugins/lb/edf.js +0 -77
- package/libs/@tencent/polaris/dist/plugins/lb/edf.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/hashring.d.ts +0 -24
- package/libs/@tencent/polaris/dist/plugins/lb/hashring.js +0 -53
- package/libs/@tencent/polaris/dist/plugins/lb/hashring.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/sticky.d.ts +0 -31
- package/libs/@tencent/polaris/dist/plugins/lb/sticky.js +0 -88
- package/libs/@tencent/polaris/dist/plugins/lb/sticky.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/swrr.d.ts +0 -25
- package/libs/@tencent/polaris/dist/plugins/lb/swrr.js +0 -72
- package/libs/@tencent/polaris/dist/plugins/lb/swrr.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/wr.d.ts +0 -17
- package/libs/@tencent/polaris/dist/plugins/lb/wr.js +0 -50
- package/libs/@tencent/polaris/dist/plugins/lb/wr.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/lb/wrr.d.ts +0 -19
- package/libs/@tencent/polaris/dist/plugins/lb/wrr.js +0 -81
- package/libs/@tencent/polaris/dist/plugins/lb/wrr.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/logging/console.d.ts +0 -10
- package/libs/@tencent/polaris/dist/plugins/logging/console.js +0 -38
- package/libs/@tencent/polaris/dist/plugins/logging/console.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/local-server/index.d.ts +0 -32
- package/libs/@tencent/polaris/dist/plugins/naming/local-server/index.js +0 -88
- package/libs/@tencent/polaris/dist/plugins/naming/local-server/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/base.d.ts +0 -124
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/base.js +0 -398
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/base.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/discover.d.ts +0 -27
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/discover.js +0 -287
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/discover.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/index.d.ts +0 -15
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/index.js +0 -43
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/monitor.d.ts +0 -28
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/monitor.js +0 -249
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/monitor.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/ratelimit.d.ts +0 -19
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/ratelimit.js +0 -222
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/ratelimit.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/bidi.d.ts +0 -26
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/bidi.js +0 -99
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/bidi.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/index.d.ts +0 -60
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/index.js +0 -259
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/pb/discover.proto +0 -24
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/pb/monitor.proto +0 -18
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/pb/ratelimit.proto +0 -12
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/http/index.d.ts +0 -39
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/http/index.js +0 -115
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/connector/http/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/api.proto +0 -24
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/client.proto +0 -22
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/model.proto +0 -28
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/ratelimit.proto +0 -80
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/request.proto +0 -18
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/response.proto +0 -65
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/routing.proto +0 -66
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/service.proto +0 -95
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/types.d.ts +0 -1568
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/index.d.ts +0 -36
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/index.js +0 -51
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/api.proto +0 -18
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/circuitbreak.proto +0 -67
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/request.proto +0 -82
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/response.proto +0 -11
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/sdkcache.proto +0 -46
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/sdkconfiguration.proto +0 -16
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/sdktoken.proto +0 -10
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/types.d.ts +0 -1102
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/pool.d.ts +0 -29
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/pool.js +0 -77
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/pool.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/ratelimit-pb/api.proto +0 -12
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/ratelimit-pb/ratelimit.proto +0 -28
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/ratelimit-pb/types.d.ts +0 -395
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/rules.d.ts +0 -13
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/rules.js +0 -116
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/rules.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/types.d.ts +0 -67
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/types.js +0 -67
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/types.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/utils.d.ts +0 -99
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/utils.js +0 -217
- package/libs/@tencent/polaris/dist/plugins/naming/polaris-server/utils.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/registry/memory.d.ts +0 -10
- package/libs/@tencent/polaris/dist/plugins/registry/memory.js +0 -50
- package/libs/@tencent/polaris/dist/plugins/registry/memory.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/router/polaris/nearby.d.ts +0 -51
- package/libs/@tencent/polaris/dist/plugins/router/polaris/nearby.js +0 -145
- package/libs/@tencent/polaris/dist/plugins/router/polaris/nearby.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/router/polaris/rule.d.ts +0 -11
- package/libs/@tencent/polaris/dist/plugins/router/polaris/rule.js +0 -174
- package/libs/@tencent/polaris/dist/plugins/router/polaris/rule.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/router/trpc/canary.d.ts +0 -25
- package/libs/@tencent/polaris/dist/plugins/router/trpc/canary.js +0 -36
- package/libs/@tencent/polaris/dist/plugins/router/trpc/canary.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/router/trpc/env.d.ts +0 -10
- package/libs/@tencent/polaris/dist/plugins/router/trpc/env.js +0 -34
- package/libs/@tencent/polaris/dist/plugins/router/trpc/env.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/router/trpc/set.d.ts +0 -56
- package/libs/@tencent/polaris/dist/plugins/router/trpc/set.js +0 -106
- package/libs/@tencent/polaris/dist/plugins/router/trpc/set.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/shaping/unirate.d.ts +0 -31
- package/libs/@tencent/polaris/dist/plugins/shaping/unirate.js +0 -124
- package/libs/@tencent/polaris/dist/plugins/shaping/unirate.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/shaping/warmup.d.ts +0 -61
- package/libs/@tencent/polaris/dist/plugins/shaping/warmup.js +0 -171
- package/libs/@tencent/polaris/dist/plugins/shaping/warmup.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins/weight/polaris.d.ts +0 -23
- package/libs/@tencent/polaris/dist/plugins/weight/polaris.js +0 -159
- package/libs/@tencent/polaris/dist/plugins/weight/polaris.js.map +0 -1
- package/libs/@tencent/polaris/dist/plugins.d.ts +0 -619
- package/libs/@tencent/polaris/dist/plugins.js +0 -91
- package/libs/@tencent/polaris/dist/plugins.js.map +0 -1
- package/libs/@tencent/polaris/dist/polaris.d.ts +0 -33
- package/libs/@tencent/polaris/dist/polaris.js +0 -59
- package/libs/@tencent/polaris/dist/polaris.js.map +0 -1
- package/libs/@tencent/polaris/dist/provider/index.d.ts +0 -102
- package/libs/@tencent/polaris/dist/provider/index.js +0 -168
- package/libs/@tencent/polaris/dist/provider/index.js.map +0 -1
- package/libs/@tencent/polaris/dist/registry.d.ts +0 -174
- package/libs/@tencent/polaris/dist/registry.js +0 -660
- package/libs/@tencent/polaris/dist/registry.js.map +0 -1
- package/libs/@tencent/polaris/dist/rules.d.ts +0 -163
- package/libs/@tencent/polaris/dist/rules.js +0 -24
- package/libs/@tencent/polaris/dist/rules.js.map +0 -1
- package/libs/@tencent/polaris/dist/scripts/postinstall.d.ts +0 -1
- package/libs/@tencent/polaris/dist/scripts/postinstall.js +0 -71
- package/libs/@tencent/polaris/dist/scripts/postinstall.js.map +0 -1
- package/libs/@tencent/polaris/dist/service.d.ts +0 -18
- package/libs/@tencent/polaris/dist/service.js +0 -3
- package/libs/@tencent/polaris/dist/service.js.map +0 -1
- package/libs/@tencent/polaris/dist/skeleton.d.ts +0 -87
- package/libs/@tencent/polaris/dist/skeleton.js +0 -282
- package/libs/@tencent/polaris/dist/skeleton.js.map +0 -1
- package/libs/@tencent/polaris/dist/utils.d.ts +0 -36
- package/libs/@tencent/polaris/dist/utils.js +0 -74
- package/libs/@tencent/polaris/dist/utils.js.map +0 -1
- package/libs/@tencent/polaris/dist/weak.d.ts +0 -11
- package/libs/@tencent/polaris/dist/weak.js +0 -44
- package/libs/@tencent/polaris/dist/weak.js.map +0 -1
- package/libs/@tencent/polaris/package.json +0 -114
- package/resource/doc/chatuikit/faq/web_qa.md +0 -118
- package/tools/call/get-call-faq.js +0 -29
- package/tools/call/get-call-faq.js.map +0 -1
- package/tools/chat/create-group.js.map +0 -1
- package/tools/chat/get-chat-faq.js +0 -29
- package/tools/chat/get-chat-faq.js.map +0 -1
- package/tools/rtcengine/get-rtcengine-web-sdk-integration-guide.js +0 -34
- package/tools/rtcengine/get-rtcengine-web-sdk-integration-guide.js.map +0 -1
- package/tools/rtcengine/get-trtc-web-sdk-integration-guide.js +0 -35
- package/tools/rtcengine/get-trtc-web-sdk-integration-guide.js.map +0 -1
- /package/resource/doc/chatuikit/{faq/sdk_qa.md → android/faq.md} +0 -0
- /package/{libs/@tencent/aegis-node-sdk/lib/packages/core/src/polyfill.d.ts → resource/doc/livekit/vue/faq.md} +0 -0
- /package/resource/doc/{chatuikit/faq/vue_qa.md → roomkit/vue/faq.md} +0 -0
- /package/resource/doc/rtcengine/web/{api_RTCEngine.md → api.md} +0 -0
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Instance } from "../../instance";
|
|
2
|
-
import { LoadBalancerPlugin, PluginType, WeightType } from "../../plugins";
|
|
3
|
-
declare const kDefaultOptions: {
|
|
4
|
-
/**
|
|
5
|
-
* 是否开启动态权重
|
|
6
|
-
*/
|
|
7
|
-
dynamicWeight: boolean;
|
|
8
|
-
};
|
|
9
|
-
export declare type StatelessLoadBalancerOptions = typeof kDefaultOptions;
|
|
10
|
-
export declare abstract class StatelessLoadBalancer implements LoadBalancerPlugin {
|
|
11
|
-
readonly type = PluginType.LoadBalancer;
|
|
12
|
-
readonly supportedWeightType = WeightType.Dynamic;
|
|
13
|
-
protected readonly options: StatelessLoadBalancerOptions;
|
|
14
|
-
abstract readonly name: string;
|
|
15
|
-
constructor(options?: Partial<StatelessLoadBalancerOptions>);
|
|
16
|
-
instanceWeight(instance: Instance): number;
|
|
17
|
-
/**
|
|
18
|
-
* 随机 `choose` 多次,
|
|
19
|
-
* 避免请求顺序固定导致的后端访问不均衡
|
|
20
|
-
*/
|
|
21
|
-
protected randomChoose<CallArgsType>(namespace: string, service: string, instances: Instance[], args?: CallArgsType): void;
|
|
22
|
-
abstract choose<CallArgsType>(namespace: string, service: string, instances: Instance[], args?: CallArgsType): Instance;
|
|
23
|
-
}
|
|
24
|
-
export {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StatelessLoadBalancer = void 0;
|
|
4
|
-
const plugins_1 = require("../../plugins");
|
|
5
|
-
const kDefaultOptions = {
|
|
6
|
-
/**
|
|
7
|
-
* 是否开启动态权重
|
|
8
|
-
*/
|
|
9
|
-
dynamicWeight: true
|
|
10
|
-
};
|
|
11
|
-
class StatelessLoadBalancer {
|
|
12
|
-
constructor(options) {
|
|
13
|
-
this.type = plugins_1.PluginType.LoadBalancer;
|
|
14
|
-
this.supportedWeightType = 0 /* Dynamic */;
|
|
15
|
-
this.options = Object.assign(Object.assign({}, kDefaultOptions), options);
|
|
16
|
-
}
|
|
17
|
-
instanceWeight(instance) {
|
|
18
|
-
return instance.staticWeight + (this.options.dynamicWeight ? instance.dynamicWeight : 0);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* 随机 `choose` 多次,
|
|
22
|
-
* 避免请求顺序固定导致的后端访问不均衡
|
|
23
|
-
*/
|
|
24
|
-
randomChoose(namespace, service, instances, args) {
|
|
25
|
-
const chooseCount = ~~(Math.random() * instances.length);
|
|
26
|
-
for (let i = 0; i < chooseCount; i += 1) {
|
|
27
|
-
this.choose(namespace, service, instances, args);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.StatelessLoadBalancer = StatelessLoadBalancer;
|
|
32
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/plugins/lb/base.ts"],"names":[],"mappings":";;;AACA,2CAA2E;AAE3E,MAAM,eAAe,GAAG;IACtB;;OAEG;IACH,aAAa,EAAE,IAAI;CACpB,CAAC;AAIF,MAAsB,qBAAqB;IAMzC,YAAY,OAA+C;QALlD,SAAI,GAAG,oBAAU,CAAC,YAAY,CAAC;QAC/B,wBAAmB,mBAAsB;QAKhD,IAAI,CAAC,OAAO,mCACP,eAAe,GACf,OAAO,CACX,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,QAAkB;QAC/B,OAAO,QAAQ,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;;OAGG;IACO,YAAY,CAAe,SAAiB,EAAE,OAAe,EAAE,SAAqB,EAAE,IAAmB;QACjH,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;SAClD;IACH,CAAC;CAKF;AA/BD,sDA+BC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Instance, InstanceStatus } from "../../instance";
|
|
2
|
-
import { StatelessLoadBalancer } from "./base";
|
|
3
|
-
/**
|
|
4
|
-
* Earliest Deadline First (EDF) Load Balancer
|
|
5
|
-
* (https://en.wikipedia.org/wiki/Earliest_deadline_first_scheduling)
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* Algorithm:
|
|
9
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `W(Si)` = Si.weight, `D(Si)` = Si.deadline
|
|
10
|
-
* 2. Sx = Pick(Min(D(Si)))
|
|
11
|
-
* 3. D(Sx) = D(Sx) + 1 / W(Sx)
|
|
12
|
-
* 4. return Sx
|
|
13
|
-
*/
|
|
14
|
-
export declare class EDFLoadBalancer extends StatelessLoadBalancer {
|
|
15
|
-
readonly name: string;
|
|
16
|
-
private readonly callStat;
|
|
17
|
-
/**
|
|
18
|
-
* 1. 选取拥有最小 `deadline` 的实例
|
|
19
|
-
* 2. 将当前时间 `currentTime` 置为选取实例的 `deadline`
|
|
20
|
-
* 3. 将选取实例的 `deadline` 增加一个 `step`
|
|
21
|
-
*/
|
|
22
|
-
choose(namespace: string, service: string, instances: Instance[]): Instance;
|
|
23
|
-
onStatusChange(namespace: string, service: string, instance: Instance, prevStatus: InstanceStatus): void;
|
|
24
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EDFLoadBalancer = void 0;
|
|
4
|
-
const utils_1 = require("../../utils");
|
|
5
|
-
const base_1 = require("./base");
|
|
6
|
-
/**
|
|
7
|
-
* Earliest Deadline First (EDF) Load Balancer
|
|
8
|
-
* (https://en.wikipedia.org/wiki/Earliest_deadline_first_scheduling)
|
|
9
|
-
*
|
|
10
|
-
* @description
|
|
11
|
-
* Algorithm:
|
|
12
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `W(Si)` = Si.weight, `D(Si)` = Si.deadline
|
|
13
|
-
* 2. Sx = Pick(Min(D(Si)))
|
|
14
|
-
* 3. D(Sx) = D(Sx) + 1 / W(Sx)
|
|
15
|
-
* 4. return Sx
|
|
16
|
-
*/
|
|
17
|
-
class EDFLoadBalancer extends base_1.StatelessLoadBalancer {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(...arguments);
|
|
20
|
-
this.name = "EDFLoadBalancer";
|
|
21
|
-
this.callStat = Object.create(null);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 1. 选取拥有最小 `deadline` 的实例
|
|
25
|
-
* 2. 将当前时间 `currentTime` 置为选取实例的 `deadline`
|
|
26
|
-
* 3. 将选取实例的 `deadline` 增加一个 `step`
|
|
27
|
-
*/
|
|
28
|
-
choose(namespace, service, instances) {
|
|
29
|
-
let callStat = this.callStat[`${namespace}.${service}`];
|
|
30
|
-
if (!callStat) {
|
|
31
|
-
callStat = {
|
|
32
|
-
currentTime: 0,
|
|
33
|
-
instanceDeadline: new WeakMap()
|
|
34
|
-
};
|
|
35
|
-
this.callStat[`${namespace}.${service}`] = callStat;
|
|
36
|
-
this.randomChoose(namespace, service, instances);
|
|
37
|
-
}
|
|
38
|
-
let earliestDeadline = Infinity;
|
|
39
|
-
let selectedInstance;
|
|
40
|
-
for (let i = 0; i < instances.length; i += 1) { // eslint-disable-line @typescript-eslint/prefer-for-of
|
|
41
|
-
const instance = instances[i];
|
|
42
|
-
let deadline = callStat.instanceDeadline.get(instance);
|
|
43
|
-
// 正常情况下 `deadline` 应大于当前时间; 但是由于某些前置的条件,导致某 `instance` 不在 `instances` 中
|
|
44
|
-
// 则此 `instance` 的 `deadline` 有可能滞后于 `currentTime`,需要为其重置 `deadline`
|
|
45
|
-
if (typeof deadline === "undefined" || deadline < callStat.currentTime) {
|
|
46
|
-
deadline = callStat.currentTime + (1 / this.instanceWeight(instance));
|
|
47
|
-
callStat.instanceDeadline.set(instance, deadline);
|
|
48
|
-
}
|
|
49
|
-
if (deadline < earliestDeadline) {
|
|
50
|
-
earliestDeadline = deadline;
|
|
51
|
-
selectedInstance = instance;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (selectedInstance) {
|
|
55
|
-
callStat.instanceDeadline.set(selectedInstance, earliestDeadline + (1 / this.instanceWeight(selectedInstance)));
|
|
56
|
-
callStat.currentTime = earliestDeadline;
|
|
57
|
-
return selectedInstance;
|
|
58
|
-
}
|
|
59
|
-
(0, utils_1.UNREACHABLE)();
|
|
60
|
-
}
|
|
61
|
-
onStatusChange(namespace, service, instance, prevStatus) {
|
|
62
|
-
// 发生以下两种状态转移时,不希望实例被太早选出,因此重置其 deadline
|
|
63
|
-
if (
|
|
64
|
-
/* eslint-disable max-len */
|
|
65
|
-
(instance.status === 2 /* HalfClose */ && prevStatus === 1 /* HalfOpen */) /** `HalfOpen` ---> `HalfClose` */
|
|
66
|
-
|| (instance.status === 0 /* Normal */ && prevStatus === 3 /* Fused */) /** `Fused` ---> `Normal` */
|
|
67
|
-
/* eslint-enable max-len */
|
|
68
|
-
) {
|
|
69
|
-
const callStat = this.callStat[`${namespace}.${service}`];
|
|
70
|
-
if (callStat) {
|
|
71
|
-
callStat.instanceDeadline.delete(instance);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
exports.EDFLoadBalancer = EDFLoadBalancer;
|
|
77
|
-
//# sourceMappingURL=edf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edf.js","sourceRoot":"","sources":["../../../src/plugins/lb/edf.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,iCAA+C;AAE/C;;;;;;;;;;GAUG;AACH,MAAa,eAAgB,SAAQ,4BAAqB;IAA1D;;QACW,SAAI,GAAW,iBAAiB,CAAC;QACzB,aAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAG3C,CAAC;IA2DN,CAAC;IAzDC;;;;OAIG;IACH,MAAM,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAqB;QAC9D,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG;gBACT,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,IAAI,OAAO,EAAE;aAChC,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAClD;QAED,IAAI,gBAAgB,GAAG,QAAQ,CAAC;QAChC,IAAI,gBAAsC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,uDAAuD;YACrG,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,wEAAwE;YACxE,oEAAoE;YACpE,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE;gBACtE,QAAQ,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACtE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACnD;YACD,IAAI,QAAQ,GAAG,gBAAgB,EAAE;gBAC/B,gBAAgB,GAAG,QAAQ,CAAC;gBAC5B,gBAAgB,GAAG,QAAQ,CAAC;aAC7B;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAChH,QAAQ,CAAC,WAAW,GAAG,gBAAgB,CAAC;YAExC,OAAO,gBAAgB,CAAC;SACzB;QAED,IAAA,mBAAW,GAAE,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,OAAe,EAAE,QAAkB,EAAE,UAA0B;QAC/F,wCAAwC;QACxC;QACE,4BAA4B;QAC5B,CAAC,QAAQ,CAAC,MAAM,sBAA6B,IAAI,UAAU,qBAA4B,CAAC,CAAC,kCAAkC;eACxH,CAAC,QAAQ,CAAC,MAAM,mBAA0B,IAAI,UAAU,kBAAyB,CAAC,CAAC,4BAA4B;QAClH,2BAA2B;UAC3B;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;YAC1D,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC5C;SACF;IACH,CAAC;CACF;AAhED,0CAgEC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import * as HashRing from "hashring";
|
|
3
|
-
import { Instance } from "../../instance";
|
|
4
|
-
import { LoadBalancerPlugin, PluginType, WeightType } from "../../plugins";
|
|
5
|
-
export declare type HashRingCallArgs = string;
|
|
6
|
-
export declare type HashRingLoadBalancerOptions = HashRing.HashRingOptions & {
|
|
7
|
-
/**
|
|
8
|
-
* 哈希算法(可自定义实现),默认为 `md5`
|
|
9
|
-
*/
|
|
10
|
-
"algorithm": string | ((key: string) => string | Buffer);
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Consistent Hash Load Balancer
|
|
14
|
-
* Implemented by using a third-party [hashring](https://github.com/3rd-Eden/node-hashring) module
|
|
15
|
-
*/
|
|
16
|
-
export declare class HashRingLoadBalancer implements LoadBalancerPlugin {
|
|
17
|
-
readonly name = "HashRingLoadBalancer";
|
|
18
|
-
readonly type = PluginType.LoadBalancer;
|
|
19
|
-
readonly supportedWeightType = WeightType.None;
|
|
20
|
-
private readonly callStat;
|
|
21
|
-
private readonly options;
|
|
22
|
-
constructor(options?: Partial<HashRingLoadBalancerOptions>);
|
|
23
|
-
choose<CallArgsType>(namespace: string, service: string, instances: Instance[], args: CallArgsType): Instance;
|
|
24
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HashRingLoadBalancer = void 0;
|
|
4
|
-
const HashRing = require("hashring");
|
|
5
|
-
const plugins_1 = require("../../plugins");
|
|
6
|
-
const utils_1 = require("../../utils");
|
|
7
|
-
const isHashRingCallArgs = (args) => {
|
|
8
|
-
return typeof args === "string";
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Consistent Hash Load Balancer
|
|
12
|
-
* Implemented by using a third-party [hashring](https://github.com/3rd-Eden/node-hashring) module
|
|
13
|
-
*/
|
|
14
|
-
class HashRingLoadBalancer {
|
|
15
|
-
constructor(options) {
|
|
16
|
-
this.name = "HashRingLoadBalancer";
|
|
17
|
-
this.type = plugins_1.PluginType.LoadBalancer;
|
|
18
|
-
this.supportedWeightType = 2 /* None */;
|
|
19
|
-
this.callStat = Object.create(null);
|
|
20
|
-
this.options = options || {};
|
|
21
|
-
}
|
|
22
|
-
choose(namespace, service, instances, args) {
|
|
23
|
-
let callArgs;
|
|
24
|
-
if (isHashRingCallArgs(args)) {
|
|
25
|
-
callArgs = args;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
throw new Error("Illegal parameter");
|
|
29
|
-
}
|
|
30
|
-
const sign = instances.map(instance => instance.id).join("|");
|
|
31
|
-
let callStat = this.callStat[`${namespace}.${service}`];
|
|
32
|
-
if (!callStat || callStat.sign !== sign) {
|
|
33
|
-
if (callStat && callStat.sign !== sign) {
|
|
34
|
-
callStat.ring.end();
|
|
35
|
-
}
|
|
36
|
-
callStat = {
|
|
37
|
-
sign,
|
|
38
|
-
ring: new HashRing(instances.map(instance => `${instance.host}:${instance.port}`), this.options.algorithm || "md5", this.options)
|
|
39
|
-
};
|
|
40
|
-
this.callStat[`${namespace}.${service}`] = callStat;
|
|
41
|
-
}
|
|
42
|
-
const address = callStat.ring.get(callArgs);
|
|
43
|
-
for (let i = 0; i < instances.length; i += 1) { // eslint-disable-line @typescript-eslint/prefer-for-of
|
|
44
|
-
const instance = instances[i];
|
|
45
|
-
if (address === `${instance.host}:${instance.port}`) {
|
|
46
|
-
return instance;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
(0, utils_1.UNREACHABLE)();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.HashRingLoadBalancer = HashRingLoadBalancer;
|
|
53
|
-
//# sourceMappingURL=hashring.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashring.js","sourceRoot":"","sources":["../../../src/plugins/lb/hashring.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAGrC,2CAA2E;AAC3E,uCAA0C;AAI1C,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAA4B,EAAE;IACrE,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC,CAAC;AASF;;;GAGG;AACH,MAAa,oBAAoB;IAW/B,YAAY,OAA8C;QAVjD,SAAI,GAAG,sBAAsB,CAAC;QAC9B,SAAI,GAAG,oBAAU,CAAC,YAAY,CAAC;QAC/B,wBAAmB,gBAAmB;QAC9B,aAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAG3C,CAAC;QAKF,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAe,SAAiB,EAAE,OAAe,EAAE,SAAqB,EAAE,IAAkB;QAChG,IAAI,QAA0B,CAAC;QAC/B,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;SACjB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;YACvC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;gBACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB;YACD,QAAQ,GAAG;gBACT,IAAI;gBACJ,IAAI,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;aAClI,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;SACrD;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,uDAAuD;YACrG,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,OAAO,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;gBACnD,OAAO,QAAQ,CAAC;aACjB;SACF;QAED,IAAA,mBAAW,GAAE,CAAC;IAChB,CAAC;CACF;AA9CD,oDA8CC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Instance } from "../../instance";
|
|
2
|
-
import { LoadBalancerPlugin, PluginType } from "../../plugins";
|
|
3
|
-
declare const kDefaultOptions: {
|
|
4
|
-
/**
|
|
5
|
-
* 过期时间
|
|
6
|
-
* * 当值 ≤0 时:则不启用此插件
|
|
7
|
-
* * 当值为 `Infinity` 时:不启用过期
|
|
8
|
-
*/
|
|
9
|
-
expireTime: number;
|
|
10
|
-
};
|
|
11
|
-
export declare type StickyLoadBalancerOptions = typeof kDefaultOptions;
|
|
12
|
-
/**
|
|
13
|
-
* Sticky Load Balancer
|
|
14
|
-
* The returned instance of each call is the same
|
|
15
|
-
* until it is not appear in the instance list or exceed expiration time
|
|
16
|
-
*/
|
|
17
|
-
export declare class StickyLoadBalancer implements LoadBalancerPlugin {
|
|
18
|
-
private readonly next;
|
|
19
|
-
readonly name = "StickyLoadBalancer";
|
|
20
|
-
readonly type = PluginType.LoadBalancer;
|
|
21
|
-
readonly supportedWeightType: import("../../plugins").WeightType;
|
|
22
|
-
private disposed;
|
|
23
|
-
private readonly options;
|
|
24
|
-
private readonly sessions;
|
|
25
|
-
constructor(next: LoadBalancerPlugin, options?: Partial<StickyLoadBalancerOptions>);
|
|
26
|
-
dispose(): void;
|
|
27
|
-
get isDisposed(): boolean;
|
|
28
|
-
choose<CallArgsType>(namespace: string, service: string, instances: Instance[], args?: CallArgsType): Instance;
|
|
29
|
-
private buildOrRefreshTimer;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StickyLoadBalancer = void 0;
|
|
4
|
-
const __1 = require("../..");
|
|
5
|
-
const plugins_1 = require("../../plugins");
|
|
6
|
-
const utils_1 = require("../../utils");
|
|
7
|
-
const weak_1 = require("../../weak");
|
|
8
|
-
const kDefaultOptions = {
|
|
9
|
-
/**
|
|
10
|
-
* 过期时间
|
|
11
|
-
* * 当值 ≤0 时:则不启用此插件
|
|
12
|
-
* * 当值为 `Infinity` 时:不启用过期
|
|
13
|
-
*/
|
|
14
|
-
expireTime: 10 * utils_1.kMinutes
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Sticky Load Balancer
|
|
18
|
-
* The returned instance of each call is the same
|
|
19
|
-
* until it is not appear in the instance list or exceed expiration time
|
|
20
|
-
*/
|
|
21
|
-
class StickyLoadBalancer {
|
|
22
|
-
constructor(next, options) {
|
|
23
|
-
this.next = next;
|
|
24
|
-
this.name = "StickyLoadBalancer";
|
|
25
|
-
this.type = plugins_1.PluginType.LoadBalancer;
|
|
26
|
-
this.disposed = false;
|
|
27
|
-
this.sessions = Object.create(null);
|
|
28
|
-
this.options = Object.assign(Object.assign({}, kDefaultOptions), options);
|
|
29
|
-
this.supportedWeightType = next.supportedWeightType;
|
|
30
|
-
}
|
|
31
|
-
// #region dispose
|
|
32
|
-
dispose() {
|
|
33
|
-
if (!this.disposed) {
|
|
34
|
-
Object.values(this.sessions).forEach((session) => {
|
|
35
|
-
clearTimeout(session.timer);
|
|
36
|
-
});
|
|
37
|
-
this.disposed = true;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
get isDisposed() {
|
|
41
|
-
return this.disposed;
|
|
42
|
-
}
|
|
43
|
-
// #endregion
|
|
44
|
-
choose(namespace, service, instances, args) {
|
|
45
|
-
if (this.disposed) {
|
|
46
|
-
throw new __1.StateError("Already disposed");
|
|
47
|
-
}
|
|
48
|
-
if (this.options.expireTime <= 0) {
|
|
49
|
-
return this.next.choose(namespace, service, instances, args);
|
|
50
|
-
}
|
|
51
|
-
const session = this.sessions[`${namespace}.${service}`];
|
|
52
|
-
let stickiedInstance;
|
|
53
|
-
if (session) {
|
|
54
|
-
const { ref, timer } = session;
|
|
55
|
-
stickiedInstance = ref.find(instances);
|
|
56
|
-
if (stickiedInstance === undefined) {
|
|
57
|
-
stickiedInstance = this.next.choose(namespace, service, instances, args);
|
|
58
|
-
ref.reset(stickiedInstance);
|
|
59
|
-
session.timer = this.buildOrRefreshTimer(namespace, service, timer);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
stickiedInstance = this.next.choose(namespace, service, instances, args);
|
|
64
|
-
this.sessions[`${namespace}.${service}`] = {
|
|
65
|
-
ref: new weak_1.WeakReference(stickiedInstance),
|
|
66
|
-
timer: this.buildOrRefreshTimer(namespace, service)
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
return stickiedInstance;
|
|
70
|
-
}
|
|
71
|
-
buildOrRefreshTimer(namespace, service, timer) {
|
|
72
|
-
if (this.options.expireTime === Infinity) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (typeof (timer === null || timer === void 0 ? void 0 : timer.refresh) === "function") { /** Timeout.refresh() only available for Node.js 10.2.0 and higher */
|
|
76
|
-
timer.refresh();
|
|
77
|
-
return timer;
|
|
78
|
-
}
|
|
79
|
-
if (timer) {
|
|
80
|
-
clearTimeout(timer);
|
|
81
|
-
}
|
|
82
|
-
return setTimeout(() => {
|
|
83
|
-
delete this.sessions[`${namespace}.${service}`];
|
|
84
|
-
}, this.options.expireTime).unref();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.StickyLoadBalancer = StickyLoadBalancer;
|
|
88
|
-
//# sourceMappingURL=sticky.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sticky.js","sourceRoot":"","sources":["../../../src/plugins/lb/sticky.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;AAEnC,2CAA+D;AAC/D,uCAAuC;AACvC,qCAA2C;AAE3C,MAAM,eAAe,GAAG;IACtB;;;;OAIG;IACH,UAAU,EAAE,EAAE,GAAG,gBAAQ;CAC1B,CAAC;AAIF;;;;GAIG;AACH,MAAa,kBAAkB;IAY7B,YAA6B,IAAwB,EAAE,OAA4C;QAAtE,SAAI,GAAJ,IAAI,CAAoB;QAX5C,SAAI,GAAG,oBAAoB,CAAC;QAC5B,SAAI,GAAG,oBAAU,CAAC,YAAY,CAAC;QAGhC,aAAQ,GAAG,KAAK,CAAC;QAER,aAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAG3C,CAAC;QAGF,IAAI,CAAC,OAAO,mCACP,eAAe,GACf,OAAO,CACX,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACtD,CAAC;IAED,kBAAkB;IAClB,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC/C,YAAY,CAAC,OAAQ,CAAC,KAAM,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,aAAa;IAEb,MAAM,CAAe,SAAiB,EAAE,OAAe,EAAE,SAAqB,EAAE,IAAmB;QACjG,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,cAAU,CAAC,kBAAkB,CAAC,CAAC;SAC1C;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;SAC9D;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;QACzD,IAAI,gBAAsC,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAC/B,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEvC,IAAI,gBAAgB,KAAK,SAAS,EAAE;gBAClC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBAEzE,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC5B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;aACrE;SACF;aAAM;YACL,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG;gBACzC,GAAG,EAAE,IAAI,oBAAa,CAAC,gBAAgB,CAAC;gBACxC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;aACpD,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,mBAAmB,CAAC,SAAiB,EAAE,OAAe,EAAE,KAAsB;QACpF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;YACxC,OAAO;SACR;QAED,IAAI,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,UAAU,EAAE,EAAE,qEAAqE;YAC/G,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,EAAE;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;SACrB;QAED,OAAO,UAAU,CAAC,GAAG,EAAE;YACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;CACF;AArFD,gDAqFC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Instance, InstanceStatus } from "../../instance";
|
|
2
|
-
import { StatelessLoadBalancer } from "./base";
|
|
3
|
-
/**
|
|
4
|
-
* Smooth Weighted Round-Robin (SWRR) Load Balancer
|
|
5
|
-
* (https://www.nginx.com/resources/glossary/round-robin-load-balancing/)
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* Algorithm:
|
|
9
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `EW(Si)` = Si.weight, `CW(Si)` = 0
|
|
10
|
-
* 2. CW(Si) = CW(Si) + EW(Si)
|
|
11
|
-
* 3. Sx = Pick(Max(CW(Si)))
|
|
12
|
-
* 4. CW(Sx) = CW(Sx) - Sum(EW(S))
|
|
13
|
-
* 5. return Sx
|
|
14
|
-
*/
|
|
15
|
-
export declare class NginxLoadBalancer extends StatelessLoadBalancer {
|
|
16
|
-
readonly name: string;
|
|
17
|
-
private readonly callStat;
|
|
18
|
-
/**
|
|
19
|
-
* 1. 将各个实例的 `currentWeight` 增加 `effectiveWeight`
|
|
20
|
-
* 2. 选取拥有最大 `currentWeight` 的实例
|
|
21
|
-
* 3. 将选取实例的 `currentWeight` 减少 `totalEffectiveWeight`
|
|
22
|
-
*/
|
|
23
|
-
choose(namespace: string, service: string, instances: Instance[]): Instance;
|
|
24
|
-
onStatusChange(namespace: string, service: string, instance: Instance, prevStatus: InstanceStatus): void;
|
|
25
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NginxLoadBalancer = void 0;
|
|
4
|
-
const utils_1 = require("../../utils");
|
|
5
|
-
const base_1 = require("./base");
|
|
6
|
-
/**
|
|
7
|
-
* Smooth Weighted Round-Robin (SWRR) Load Balancer
|
|
8
|
-
* (https://www.nginx.com/resources/glossary/round-robin-load-balancing/)
|
|
9
|
-
*
|
|
10
|
-
* @description
|
|
11
|
-
* Algorithm:
|
|
12
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `EW(Si)` = Si.weight, `CW(Si)` = 0
|
|
13
|
-
* 2. CW(Si) = CW(Si) + EW(Si)
|
|
14
|
-
* 3. Sx = Pick(Max(CW(Si)))
|
|
15
|
-
* 4. CW(Sx) = CW(Sx) - Sum(EW(S))
|
|
16
|
-
* 5. return Sx
|
|
17
|
-
*/
|
|
18
|
-
class NginxLoadBalancer extends base_1.StatelessLoadBalancer {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments);
|
|
21
|
-
this.name = "NginxLoadBalancer";
|
|
22
|
-
this.callStat = Object.create(null);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 1. 将各个实例的 `currentWeight` 增加 `effectiveWeight`
|
|
26
|
-
* 2. 选取拥有最大 `currentWeight` 的实例
|
|
27
|
-
* 3. 将选取实例的 `currentWeight` 减少 `totalEffectiveWeight`
|
|
28
|
-
*/
|
|
29
|
-
choose(namespace, service, instances) {
|
|
30
|
-
let callStat = this.callStat[`${namespace}.${service}`];
|
|
31
|
-
if (!callStat) {
|
|
32
|
-
callStat = new WeakMap();
|
|
33
|
-
this.callStat[`${namespace}.${service}`] = callStat;
|
|
34
|
-
this.randomChoose(namespace, service, instances);
|
|
35
|
-
}
|
|
36
|
-
let totalEffectiveWeight = 0;
|
|
37
|
-
let bestWeight = -Infinity;
|
|
38
|
-
let selectedInstance;
|
|
39
|
-
for (let i = 0; i < instances.length; i += 1) { // eslint-disable-line @typescript-eslint/prefer-for-of
|
|
40
|
-
const instance = instances[i];
|
|
41
|
-
const effectiveWeight = this.instanceWeight(instance);
|
|
42
|
-
let currentWeight = callStat.get(instance) || 0;
|
|
43
|
-
currentWeight += effectiveWeight;
|
|
44
|
-
totalEffectiveWeight += effectiveWeight;
|
|
45
|
-
if (!selectedInstance || bestWeight < currentWeight) {
|
|
46
|
-
selectedInstance = instance;
|
|
47
|
-
bestWeight = currentWeight;
|
|
48
|
-
}
|
|
49
|
-
callStat.set(instance, currentWeight);
|
|
50
|
-
}
|
|
51
|
-
if (selectedInstance) {
|
|
52
|
-
callStat.set(selectedInstance, bestWeight - totalEffectiveWeight);
|
|
53
|
-
return selectedInstance;
|
|
54
|
-
}
|
|
55
|
-
(0, utils_1.UNREACHABLE)();
|
|
56
|
-
}
|
|
57
|
-
onStatusChange(namespace, service, instance, prevStatus) {
|
|
58
|
-
if (
|
|
59
|
-
/* eslint-disable max-len */
|
|
60
|
-
(instance.status === 2 /* HalfClose */ && prevStatus === 1 /* HalfOpen */) /** `HalfOpen` ---> `HalfClose` */
|
|
61
|
-
|| (instance.status === 0 /* Normal */ && prevStatus === 3 /* Fused */) /** `Fused` ---> `Normal` */
|
|
62
|
-
/* eslint-enable max-len */
|
|
63
|
-
) {
|
|
64
|
-
const callStat = this.callStat[`${namespace}.${service}`];
|
|
65
|
-
if (callStat) {
|
|
66
|
-
callStat.delete(instance);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.NginxLoadBalancer = NginxLoadBalancer;
|
|
72
|
-
//# sourceMappingURL=swrr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swrr.js","sourceRoot":"","sources":["../../../src/plugins/lb/swrr.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,iCAA+C;AAE/C;;;;;;;;;;;GAWG;AACH,MAAa,iBAAkB,SAAQ,4BAAqB;IAA5D;;QACW,SAAI,GAAW,mBAAmB,CAAC;QAC3B,aAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAuD,CAAC;IAoDxG,CAAC;IAlDC;;;;OAIG;IACH,MAAM,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAqB;QAC9D,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAClD;QAED,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,UAAU,GAAG,CAAC,QAAQ,CAAC;QAC3B,IAAI,gBAAsC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAG,uDAAuD;YACtG,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChD,aAAa,IAAI,eAAe,CAAC;YACjC,oBAAoB,IAAI,eAAe,CAAC;YACxC,IAAI,CAAC,gBAAgB,IAAI,UAAU,GAAG,aAAa,EAAE;gBACnD,gBAAgB,GAAG,QAAQ,CAAC;gBAC5B,UAAU,GAAG,aAAa,CAAC;aAC5B;YACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;SACvC;QAED,IAAI,gBAAgB,EAAE;YACpB,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,GAAG,oBAAoB,CAAC,CAAC;YAClE,OAAO,gBAAgB,CAAC;SACzB;QAED,IAAA,mBAAW,GAAE,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,OAAe,EAAE,QAAkB,EAAE,UAA0B;QAC/F;QACE,4BAA4B;QAC5B,CAAC,QAAQ,CAAC,MAAM,sBAA6B,IAAI,UAAU,qBAA4B,CAAC,CAAC,kCAAkC;eACxH,CAAC,QAAQ,CAAC,MAAM,mBAA0B,IAAI,UAAU,kBAAyB,CAAC,CAAC,4BAA4B;QAClH,2BAA2B;UAC3B;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;YAC1D,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC3B;SACF;IACH,CAAC;CACF;AAtDD,8CAsDC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Instance } from "../../instance";
|
|
2
|
-
import { StatelessLoadBalancer, StatelessLoadBalancerOptions } from "./base";
|
|
3
|
-
export declare type WRLoadBalancerOptions = StatelessLoadBalancerOptions;
|
|
4
|
-
/**
|
|
5
|
-
* Weight Random Load Balancer
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* Algorithm:
|
|
9
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `W(Si)` = Si.weight
|
|
10
|
-
* 2. selected_value = random_value % Sum(W(S))
|
|
11
|
-
* 3. Sx = Pick(selected_value ∈ [Sum(W(S0)...W(Si-1)), Sum(W(S0)...W(Si))))
|
|
12
|
-
* 4. return Sx
|
|
13
|
-
*/
|
|
14
|
-
export declare class WRLoadBalancer extends StatelessLoadBalancer {
|
|
15
|
-
readonly name: string;
|
|
16
|
-
choose(namespace: string, service: string, instances: Instance[]): Instance;
|
|
17
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WRLoadBalancer = void 0;
|
|
4
|
-
const utils_1 = require("../../utils");
|
|
5
|
-
const base_1 = require("./base");
|
|
6
|
-
/**
|
|
7
|
-
* Weight Random Load Balancer
|
|
8
|
-
*
|
|
9
|
-
* @description
|
|
10
|
-
* Algorithm:
|
|
11
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `W(Si)` = Si.weight
|
|
12
|
-
* 2. selected_value = random_value % Sum(W(S))
|
|
13
|
-
* 3. Sx = Pick(selected_value ∈ [Sum(W(S0)...W(Si-1)), Sum(W(S0)...W(Si))))
|
|
14
|
-
* 4. return Sx
|
|
15
|
-
*/
|
|
16
|
-
class WRLoadBalancer extends base_1.StatelessLoadBalancer {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(...arguments);
|
|
19
|
-
this.name = "WRLoadBalancer";
|
|
20
|
-
}
|
|
21
|
-
choose(namespace, service, instances) {
|
|
22
|
-
// #region Round 1
|
|
23
|
-
/*
|
|
24
|
-
* Round 1:
|
|
25
|
-
* 计算各节点实际权重
|
|
26
|
-
*/
|
|
27
|
-
let totalWeight = 0;
|
|
28
|
-
const weights = instances.map((instance) => {
|
|
29
|
-
const weight = ~~this.instanceWeight(instance);
|
|
30
|
-
totalWeight += weight;
|
|
31
|
-
return weight;
|
|
32
|
-
});
|
|
33
|
-
// #endregion
|
|
34
|
-
// #region Round 2
|
|
35
|
-
const selectedValue = Math.random() * totalWeight;
|
|
36
|
-
let begin = 0;
|
|
37
|
-
let end = 0;
|
|
38
|
-
for (let i = 0; i < weights.length; i += 1) {
|
|
39
|
-
end = begin + weights[i];
|
|
40
|
-
if (selectedValue >= begin && selectedValue < end) {
|
|
41
|
-
return instances[i];
|
|
42
|
-
}
|
|
43
|
-
begin = end;
|
|
44
|
-
}
|
|
45
|
-
// #endregion
|
|
46
|
-
(0, utils_1.UNREACHABLE)();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
exports.WRLoadBalancer = WRLoadBalancer;
|
|
50
|
-
//# sourceMappingURL=wr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wr.js","sourceRoot":"","sources":["../../../src/plugins/lb/wr.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,iCAA6E;AAI7E;;;;;;;;;GASG;AACH,MAAa,cAAe,SAAQ,4BAAqB;IAAzD;;QACW,SAAI,GAAW,gBAAgB,CAAC;IA+B3C,CAAC;IA7BC,MAAM,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAqB;QAC9D,kBAAkB;QAClB;;;WAGG;QACH,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC/C,WAAW,IAAI,MAAM,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,aAAa;QAEb,kBAAkB;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC;QAClD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC1C,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,aAAa,IAAI,KAAK,IAAI,aAAa,GAAG,GAAG,EAAE;gBACjD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;aACrB;YACD,KAAK,GAAG,GAAG,CAAC;SACb;QACD,aAAa;QAEb,IAAA,mBAAW,GAAE,CAAC;IAChB,CAAC;CACF;AAhCD,wCAgCC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Instance } from "../../instance";
|
|
2
|
-
import { StatelessLoadBalancer } from "./base";
|
|
3
|
-
/**
|
|
4
|
-
* Weighted Round-Robin Load Balancer
|
|
5
|
-
*
|
|
6
|
-
* @description
|
|
7
|
-
* Algorithm:
|
|
8
|
-
* 1. `S` = {S0, S1, S2, ..., Sn}, `W(Si)` = Si.weight
|
|
9
|
-
* 2. CW(Si) = W(Si) / GCD(W(S))
|
|
10
|
-
* 3. remaining_value = total_calls % Sum(CW(S))
|
|
11
|
-
* 4. Sx = Pick(remaining_value ∈ [Sum(CW(S0)...CW(Si-1)), Sum(CW(S0)...CW(Si))))
|
|
12
|
-
* 5. total_calls = total_calls + 1
|
|
13
|
-
* 6. return Sx
|
|
14
|
-
*/
|
|
15
|
-
export declare class WRRLoadBalancer extends StatelessLoadBalancer {
|
|
16
|
-
readonly name: string;
|
|
17
|
-
private readonly callStat;
|
|
18
|
-
choose(namespace: string, service: string, instances: Instance[]): Instance;
|
|
19
|
-
}
|