首页 > 编程语言 >1. weekly 发布及全网转发
 2. 各平台消息查看沟通及回复
 3. 中秋海报制作 公众号预约中秋祝贺文
 4. 协助同事绘制图片
 5. 国际物流查询沟通及快递发送
 6. Databe

1. weekly 发布及全网转发
 2. 各平台消息查看沟通及回复
 3. 中秋海报制作 公众号预约中秋祝贺文
 4. 协助同事绘制图片
 5. 国际物流查询沟通及快递发送
 6. Databe

时间:2023-09-28 09:56:34浏览次数:36  
标签:... 全网 admin 配置 中秋 api address query 转发

作者:尚卓燃(PsiACE)澳门科技大学在读硕士,Databend 研发工程师实习生

Apache OpenDAL(Incubating) Committer

https://github.com/PsiACE

对于 Databend 这样复杂的数据库服务端程序,往往需要支持大量的可配置选项,以帮助运维人员根据实际使用需要管理和调优系统。

Databend 目前支持三种配置方式:命令行、环境变量和配置文件,优先级依次递减。

  • 一般情况下,推荐使用配置文件来记录和管理各种配置。
  • 对于 K8S 集群,为了灵活变更部分配置(比如,特性开关),使用环境变量可能是更优雅的形式。
  • 命令行则用于调整本地环境下的少数冲突配置。

Databend Query 中的映射

对于 databend-query ,不管是什么形式的配置,其配置选项几乎可以看作是代码的扁平化树形映射,即基本符合代码中「配置域」+「配置项」的逻辑。

  • 环境变量和配置文件中,利用 serfig 将代码嵌套展开,使用 _ 做为分隔符。
  • 命令行中稍有不同:一方面,分隔符使用 -;另一方面,部分命令行选项的名称中没有绑定配置域。

为了更好理解这里的映射关系,我们可以深入到具体一项配置,下面将围绕 admin_api_address 这个配置项展开。

  • 在环境变量上,需要使用 QUERY_ADMIN_API_ADDRESSQUERY 表征这个配置所处的域,而 ADMIN_API_ADDRESS 是具体的配置项。
  • 在配置文件中,通常是使用 toml 来进行配置。 [query] 表征配置所处的域,admin_api_address 为具体的配置项。
[query]
...
# Databend Query http address.
# For admin RESET API.
admin_api_address = "0.0.0.0:8081"
...
  • 命令行中需要使用 --admin-api-address 进行配置,这一项没有绑定「配置域」。如果是配置 --storage-s3-access-key-id ,那么「storage」+ 「s3」构成配置域,「access-key-id」是具体的配置项。

在了解如何对 admin_api_address 进行配置后,让我们进入到配置相关的代码,进一步查看映射关系的代码形式(位于 src/query/config/src/config.rs)。

pub struct Config {
    ...

    // Query engine config.
    #[clap(flatten)]
    pub query: QueryConfig,
    
    ...
}

/// Query config group.
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, Args)]
#[serde(default, deny_unknown_fields)]
pub struct QueryConfig {
    ...
    
    #[clap(long, default_value = "127.0.0.1:8080")]
    pub admin_api_address: String,
    
    ...
}

因为代码中使用了嵌套的层级结构,最上层是 Config,而 admin_api_addresspub query: QueryConfig 中的一个配置项,经过 serfig 处理后,需要使用 QUERY 或者 [query] 表征其所处的域,配置项就还是 admin_api_address

而命令行中具体的配置项名称和默认值会受到 #[clap(long = "<long-name>", default_value = "<value>")] 控制),clap 会接管配置:

  • admin_api_address 就变成了 --admin-api-address
  • --storage-s3-access-key-id 而言,其实际的代码层级是 Config -> StorageConfig -> S3StorageConfig -> access_key_id,字段之上有标注 #[clap(long = "storage-s3-access-key-id", default_value_t)] ,所以需要使用 --storage-s3-access-key-id 进行配置。

Databend Meta 中的映射

databend-meta 的配置文件和命令行逻辑与 databend-query 是基本一致的。但是环境变量是通过 serfig 内置的 serde-env 自行定义的映射关系(但同样可以尝试按「配置域」+「配置项」进行理解)。

同样具体到单独的某项配置来看一下,这里以 log_dir 为例。

  • 在环境变量上,需要使用 METASRV_LOG_DIRMETASRV 表征这个配置所处的域,而 LOG_DIR 是具体的配置项。
  • 而在配置文件中,这一配置项作用于全局,只需要:
log_dir                 = "./.databend/logs1"
  • 在命令行中当然也直接 --log-dir 进行配置。

让我们通过代码来解构其映射,代码位于 src/meta/service/src/configs/outer_v0.rs

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Parser)]
#[clap(about, version = &**METASRV_COMMIT_VERSION, author)]
#[serde(default)]
pub struct Config {
    ...
    /// Log file dir
    #[clap(long = "log-dir", default_value = "./.databend/logs")]
    pub log_dir: String,
    ...
}

配置文件和命令行参数相关的配置项是由 Config 结构体管理的,逻辑与 databend-query 一致,就不再赘述。

而环境变量的配置项是由 ConfigViaEnv 结构体进行处理的,如下:

/// #[serde(flatten)] doesn't work correctly for env.
/// We should work around it by flatten them manually.
/// We are seeking for better solutions.
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(default)]
pub struct ConfigViaEnv {
    ...
    pub metasrv_log_dir: String,
    ...
}

Config 之间的映射关系位于 impl From<Config> for ConfigViaEnvimpl Into<Config> for ConfigViaEnv 这两个部分。对于 metasrv_log_dir 而言,就是映射到前面的 log_dir 字段。

标签:...,全网,admin,配置,中秋,api,address,query,转发
From: https://www.cnblogs.com/databend/p/17735019.html

相关文章

  • 【山河壮美,同贺双节】广州流辰信息祝大家中秋、国庆节快乐!
    金秋送爽,瓜果飘香,2023年,我们迎来了中秋、国庆双节碰撞的美好节日,每一个华人内心兴奋又激动。中秋花好月圆夜,国庆普天同庆时;八月十五桂花香,花团锦簇国运昌。在双节同庆的激动时刻,广州流辰信息将与广大华夏儿女一起祝愿每一个家庭家和万事兴,顺风又顺水;祝福美丽祖国繁荣昌盛;祝愿大家......
  • [JSON|序列化] fastjson自定义字段命名规则 (转发)
    1序言博主本人近期也遇到了基于fatsjson自定义命名字段规则的问题,为加强对此的学习和记忆,故转发这篇博文。博主本人最终采取的方法21.1前置知识fastjson在将对象转变为JSON字符串时,字段默认使用CamelCase规则命名。在1.2.15版本之后,fastjson支持配置Proper......
  • 2023中秋/国庆双节假期服务公告
    尊敬的智安网络用户:   您好!2023年中秋国庆双节假期将近,提前祝您节日快乐!感谢您一直以来对智安网络的支持与信任。根据2023年中秋国庆放假安排,我们将持续为您服务。关于假期期间智安网络客服支持、服务受理、备案审核、财务相关的须知如下:客服支持:   我们的客服团队将继......
  • access口能转发其他tag报文
    Sundray-SW/#bcmshdumpport21filter_enableen_ifilter#"21"含义:从PORT.ipipe0[2]开始,总共1条excute:ovs-appctlplugin/bcmshdumpport21filter_enableen_ifilterPORT.ipipe0[2]:<FILTER_ENABLE=1,EN_IFILTER=0,>Sundray-SW/#bcmshdump......
  • 网络技术-数据转发过程
    前言TCP/IP协议簇喝底层协议配合,保证了数据能够实现端到端的传输。数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装。对于网络工程师来说,只有深入地了解了数据再各种不同设备上的转发过程,才能对网络进行正确的分析和检测。 网关:网关(Gate......
  • 使用Cisco packet tracer验证交换机转发原理
    交换机的转发原理:交换机在收到数据帧后,记录帧的源MAC地址,在MAC地址表中查询目的MAC地址,进行转发。本文采用Ciscopackettracer验证交换机的转发原理模拟器:Ciscopackettracer8.2一、拓扑结构:二、设备基本配置设备IP:PC1为192.18.0.1;PC2为192.168.0.2;PC3为192.168.0.3设备MAC:PC1为......
  • 重定向和请求转发
    servlet中请求转发(forword)与重定向(sendredirect)-断弯刀-博客园(cnblogs.com) 请求转发前后用的同一个request故可以传递一些session数据,地址栏不会发生变化,在jps页面也可以获取,而重定向不可以。 servlet传数据到jsp接受用请求转发,重定向用于表单提交,转到另一个jsp页面......
  • Win32编程之函数转发注入DLL(十五)
    一、创建目标DLL文件DLL名称:targetdll.dll头文件(targetdll.h):#pragmaonce__declspec(dllexport)void__stdcallhello();__declspec(dllexport)int__stdcalladd(inta,intb);源文件(targetdll.cpp)#include<stdio.h>#include"targetdll.h"void_......
  • springMvc页面跳转---重定向和转发
    准备工作1.导入json依赖点击查看代码<!--jsp需要依赖!jstl--><dependency><groupId>jakarta.servlet.jsp.jstl</groupId><artifactId>jakarta.servlet.jsp.jstl-api</artifactId><version>3.......
  • 全网最详细的OSPF原理总结,看这篇就够了!
    大家好,我的网工朋友。OSPF是一种基于链路状态的路由协议,也是专为IP开发的路由协议,直接运行在IP层上面。它从设计上保证了无路由环路。除此之外,IS-IS也是很常见的链路状态协议。为什么会出现OSPF?作为目前主流的IGP协议,OSPF主要是为了解决RIP的三大问题而出现的,比如:收敛很慢、容......