Client Design

openGemini大约 4 分钟约 1125 字

背景

由于Influxdb 1.X的客户端已经基本处于维护状态,同时openGemini仍在不断发展中,为了能够更好地支持openGemini,如支持对接多个服务端地址、支持对接Apache Arrow Flight协议等,社区决定开发属于openGemini自己的客户端SDK。

客户端SDK规划功能

  • 支持对接多个服务端地址
  • 支持对接Apache Arrow Flight协议
  • 支持Sql查询、结构化查询、写入、批量写入等,详见下文UML图
  • 默认超时,连接超时10秒,读写超时30秒

本文的方法假定编程语言不支持重载,如编程语言支持重载,可以对方法名进行一些优化调整。

客户端构造参数设计

Database & RetentionPolicy管理设计

写入点位设计

查询设计

查询构造器设计

Ping 设计

Inner Http client 设计

使用类似InnerHttpClient的设计,将鉴权、负载均衡、重试等逻辑封装在内部,对client提供简单的接口。增强模块化和代码清晰度。

错误处理

错误信息

场景1 http请求失败

$operation request failed, error: $error_details

场景2 http响应码不符合预期

$operation error resp, code: $code, body: $body

场景3 其他异常

$operation failed, error: $error_details
# example:
writePoint failed, unmarshall response body error: json: cannot unmarshal number ...