[ 
https://issues.apache.org/jira/browse/SPARK-58455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

L. C. Hsieh updated SPARK-58455:
--------------------------------
    Labels: SPIP  (was: )

> SPIP: Spark Connect Gateway — Session Affinity, Auth, and Multi-Tenancy for 
> Spark Connect Servers
> -------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-58455
>                 URL: https://issues.apache.org/jira/browse/SPARK-58455
>             Project: Spark
>          Issue Type: New Feature
>          Components: Connect
>    Affects Versions: 4.3.0
>            Reporter: L. C. Hsieh
>            Assignee: L. C. Hsieh
>            Priority: Major
>              Labels: SPIP
>
> This SPIP proposes an official gateway component for Spark Connect 
> deployments.
> Problem
>   A Spark Connect client has to know the address of one specific server and 
> stay
>   with it for the lifetime of its session, because session state lives in that
>   server's driver. As soon as a deployment runs more than one Spark Connect
>   server — per-team servers, capacity, redundancy — there is no built-in way 
> to
>   put a single address in front of the fleet. A generic L7 load balancer 
> cannot
>   do this: the routing key (session_id) lives inside the request protobuf, not
>   in headers. Today every team writes its own proxy glue.
> Proposal
>   The Spark Connect Gateway is a standalone, wire-compatible gRPC proxy in 
> front
>   of a pool of Spark Connect servers, providing:
>   * Session-affinity routing keyed on (tenant, user, session_id), round-robin
>     placement for new sessions
>   * Backend discovery via static lists or Kubernetes Endpoints watching
>     (composes with plain Deployments, apache/spark-kubernetes-operator, and 
> the
>     Kubeflow Spark Operator)
>   * Multi-replica HA via a shared affinity store (Redis reference backend 
> behind
>     a pluggable interface; single-replica deployments need no external store)
>   * Authentication (none / static tokens / JWT / OIDC), identity-based tenant
>     resolution, and per-tenant backend pools
>   * Per-tenant rate limiting, structured audit logging, Prometheus metrics,
>     OpenTelemetry tracing
>   * Helm chart for deployment
>   Clients are untouched: the connection string points at the gateway and 
> nothing
>   else changes. The proposal adds nothing to and changes nothing in the Spark
>   Connect protocol.
>   *Non-goals*: driver lifecycle management (stays with the operator /
>   provisioner), distributing one query across drivers, session-state 
> replication
>   across drivers, TLS termination (delegated to ingress / service mesh).
> SPIP document: 
> https://docs.google.com/document/d/16RNnRJjSDBSlcgeBjVz_Mv-SkqvH33F9tIsR1Ii_P3c/edit?usp=sharing



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to