组合式协议
概览
组合式协议允许更灵活地配置对 ClickHouse 服务器的 TCP 访问。此类配置可以与传统配置并存,也可以替代传统配置。
配置可组合协议
可组合协议可以通过 XML 配置文件进行配置。协议部分在 XML 配置文件中由 protocols 标签标识:
配置协议层
可以使用基本模块(basic modules)来定义协议层。例如,要定义一个
HTTP 层,可以在 protocols 配置节中添加一个新的基本模块(basic module):
模块可以按如下方式配置:
plain_http- 名称,可被其他层引用type- 表示用于处理数据、将被实例化的协议处理器。 它具有以下预定义的协议处理器集合:tcp- ClickHouse 原生协议处理器http- HTTP ClickHouse 协议处理器tls- TLS 加密层proxy1- PROXYv1 层mysql- MySQL 兼容协议处理器postgres- PostgreSQL 兼容协议处理器prometheus- Prometheus 协议处理器interserver- ClickHouse 服务器间通信处理器
注意
gRPC 协议处理器尚未在 Composable protocols 中实现。
配置端点
端点(监听端口)由 <port> 标签和可选的 <host> 标签表示。
例如,要在先前添加的 HTTP 层上配置一个端点,
可以按如下方式修改配置:
如果省略 <host> 标签,则会使用根级配置中的 <listen_host>。
配置层级序列
层级序列是通过使用 <impl> 标签并引用另一个模块来定义的。例如,要在我们的 plain_http 模块之上配置一个 TLS 层,可以进一步按如下方式修改配置:
将端点关联到层
端点可以关联到任意层。例如,我们可以为 HTTP(端口 8123)和 HTTPS(端口 8443)定义端点:
定义附加端点
可以通过引用任意模块并省略 <type> 标签来定义附加端点。比如,我们可以为 plain_http 模块定义 another_http 端点,如下所示:
指定额外层参数
某些模块可以包含额外的层参数。例如,TLS 层
允许按如下方式指定私钥(privateKeyFile)和证书文件(certificateFile):