Simon Hamelin
06/05/2026, 2:51 PMRocky
06/05/2026, 2:51 PMcurl --location-trusted) will then close the FE connection or return it to a pool and open a new connection to the redirected BE to transmit the actual data.
* Efficiency: Keeping a connection open to the FE is useful for the initial "handshake" or for sending many separate small load requests. However, since the actual data transfer happens with the BE, the connection to the FE is only used for the redirect instruction.
2. FE Proxy (Data Proxying)
If your BE nodes are in a private network and only the FE is accessible, you might want the FE to proxy the data instead of redirecting the client.
* Kubernetes/Helm: StarRocks provides an FE Proxy component (often an Nginx-based sidecar or service) specifically for this. It allows you to send all data to the proxy endpoint, which handles the internal routing to the BEs.
* Arrow Flight SQL: For Arrow Flight-based ingestion (not standard Stream Load), there is a global variable arrow_flight_proxy_enabled that allows FE to proxy data.
3. Continuous Streaming (Single PUT)
A single HTTP Stream Load request (PUT) is atomic.
* Job Completion: The job is committed only when the HTTP stream is closed and the server receives the end of the request. You cannot keep a single PUT request "open forever" to continuously shove data in like a message queue; the system needs to finalize the version and commit the transaction.
* Alternative (Transaction Interface): If you need to send data in multiple parts, use the Stream Load Transaction Interface (/api/transaction/begin). This allows you to call /api/transaction/load multiple times. You can use persistent connections for these subsequent API calls to reduce overhead.
4. Merge Commit (v3.4+)
If your goal is to handle many high-frequency small loads without the overhead of opening/closing many connections, you should look into Merge Commit (introduced in v3.4). It allows StarRocks to merge multiple small Stream Load requests into a single internal commit, significantly improving throughput for "streaming-like" workloads.
Recommendation
* To reduce latency: Connect directly to a BE (or use a Load Balancer in front of BEs) to avoid the 307 Redirect overhead.
* For high frequency: Use Merge Commit or the Transaction Interface.
* For network isolation: Use the FE Proxy component provided in the Kubernetes Operator or Helm chart.
References
• quick_start/helm.md
• administration/management/FE_configuration.md
• administration/management/BE_configuration.md