apache / apache/dubbo

Service Discovery & Configuration through xDS

Open
#6,194 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
41.6k
Forks
26.4k
Avg merge
15h 13m
Merged PRs (30d)
4

Description

# 题目3 - Service Discovery & Configuration through xDS

支持基于 xDS 的服务发现、服务配置,使得 Dubbo 可直接与 Mesh 架构的控制面通信

## 背景

xDS 是 Mesh 架构下定义的一套服务配置下发的通用协议,最开始来自于 Envoy,用于实现控制面与数据面的数据/配置下发。xDS 是一系列配置 API 的统称:

- **Listener Discovery Service (LDS)**: Returns [`Listener`](https://github.com/envoyproxy/envoy/blob/9e83625b16851cdc7e4b0a4483b0ce07c33ba76b/api/envoy/api/v2/listener.proto#L27) resources. Used basically as a convenient root for the gRPC client's configuration. Points to the RouteConfiguration.
- **Route Discovery Service (RDS)**: Returns [`RouteConfiguration`](https://github.com/envoyproxy/envoy/blob/9e83625b16851cdc7e4b0a4483b0ce07c33ba76b/api/envoy/api/v2/route.proto#L24) resources. Provides data used to populate the gRPC [service config](https://github.com/grpc/grpc/blob/master/doc/service_config.md). Points to the Cluster.
- **Cluster Discovery Service (CDS)**: Returns [`Cluster`](https://github.com/envoyproxy/envoy/blob/9e83625b16851cdc7e4b0a4483b0ce07c33ba76b/api/envoy/api/v2/cluster.proto#L34) resources. Configures things like load balancing policy and load reporting. Points to the ClusterLoadAssignment.
- **Endpoint Discovery Service (EDS)**: Returns [`ClusterLoadAssignment`](https://github.com/envoyproxy/envoy/blob/9e83625b16851cdc7e4b0a4483b0ce07c33ba76b/api/envoy/api/v2/endpoint.proto#L33) resources. Configures the set of endpoints (backend servers) to load balance across and may tell the client to drop requests.

## 实现方案(目标)

主要是 Client 端对接 xDS 协议

* 实现基于 xDS 的服务发现
* 实现基于 xDS 的配置和规则下发

可参加:https://github.com/markdroth/proposal/blob/34dee185a28e82b0ac422f4642f6b81862d62e36/A27-xds-global-load-balancing.md

Contributor guide

Open the contributing guide

Research direction

No repository files, tests, or implementation entry points are named. Start by reading the xDS LDS, RDS, CDS, and EDS descriptions and the linked A27 proposal, then locate Dubbo's client-side discovery and configuration components. Done means the client supports xDS-based service discovery plus delivery of configuration and routing rules from a Mesh control plane.

Written by the indexing model from the issue text.

Assessment

Tech stack
grpc, java
Domain
backend-api-design, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.