ClickHouse / ClickHouse/clickhouse-java

[client-v2] Abstract a Transport Layer

Ouverte
#2,173 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
client-api-v2 enhancement
Langage dominant
Java
Étoiles
1.6k
Forks
636
Merge moyen
2 j 23 h
PR mergées (30 j)
29

Description

### Description
The current client implementation is built on top of the Apache HTTP client, which is configured internally by "com. click house.client.api.internal.HttpAPIClientHelper". This keeps things under the client's control and prevents users from misconfiguring the HTTP client.
However, some use cases may need to control the whole configuration of the HTTP client (security, performance considerations).
A series of changes is required to achieve the goal:
- Define boundaries and data crossing them between the client and a transport layer abstraction. The client mainly operates with SQL queries, server settings, request settings, and authentication context. Protocol defines how these things apply at the transport level. For example, server settings in HTTP are part of URL query parameters and authentication is part of headers. The transport layer should be able to translate a client request into understandable entities and apply them to a network request.
- Define a way in which transport abstraction is initialized. The main challenge is in passing settings. For example, connection request timeout for Apache HTTP Client, but not default server settings (applied when a request is made).
- Implement loading transport implementation pluggable with Service Loader. This is important to support use cases when the user has limited control of how the client is configured and instantiated (typically BI tools).

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par lire com.click house.client.api.internal.HttpAPIClientHelper et retracez la manière dont le client configure actuellement Apache HTTP Client. Cartographiez les limites des requêtes SQL, des paramètres du serveur et des requêtes, ainsi que du contexte d’authentification, y compris les paramètres d’initialisation. Le travail est terminé lorsque l’abstraction de transport et son implémentation enfichable via Service Loader sont définies pour les cas d’utilisation décrits.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
api, networking
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.