Access 配置

Access 是接入模块,主要负责数据上传、下载、删除等。

access的配置是基于公有配置,以下配置说明主要针对于access的私有配置。

配置说明

一级配置

配置项说明必需
公共配置项参考基础服务配置章节
service_register服务注册信息是,配置后可用于access的服务发现
limit限速配置否,单机限速配置
streamaccess 主要配置项是,参考下列二级配置选项

二级stream配置

配置项说明必需
idc服务的IDC
max_blob_size文件分段Blob大小否,默认为4MB
mem_pool_size_classes文件读写内存控制
encoder_concurrencyEC编解码并发数否,默认1000
encoder_enableverifyEC编解码是否启用验证否,默认开启
min_read_shards_xEC读取并发多下载几个shards否,默认1,越大容错率越高,但带宽也越高
shard_crc_disabled是否验证blobnode的数据crc否,默认开启验证
disk_punish_interval_s临时标记坏盘间隔时间否,默认60s
service_punish_interval_s临时标记坏服务间隔时间否,默认60s
blobnode_configblobnode rpc 配置参考rpc配置章节rpc
proxy_configproxy rpc 配置参考rpc配置章节rpc
cluster_configcluster 主要配置是,参考下列三级配置选项

三级cluster配置

配置项说明必需
regionregion 信息是,配置后不要变更
region_magic用于编码文件Location的crc字段是,配置后不要变更,发生变更后Location全部失效
consul_agent_addr集群信息的consul地址
cluster_reload_secs集群信息同步间隔否,默认3s
service_reload_secs服务信息同步间隔否,默认3s
clustermgr_client_configclustermgr rpc 配置参考rpc配置示例rpc

配置示例

service_register示例

提示

v3.2.1版本开始支持health_port

  • consul_addr,access 服务注册的consul地址
  • service_ip,access 服务bind ip
  • node,主机名
  • health_port,consul的健康检查端口范围
{
    "consul_addr": "127.0.0.1:8500",
    "service_ip": "127.0.0.1",
    "node": "access-node1",
    "health_port": [9700, 9799]
}

limit示例

  • reader_mbps,单机上传带宽(MB/s)
  • writer_mbps, 单机下载带宽(MB/s)
  • name_rps, 各接口的rps限制数
{
    "name_rps": {
        "alloc": 0,
        "put": 100,
        "putat": 0,
        "get": 0,
        "delete": 0,
        "sign": 0
    },
    "reader_mbps": 100,
    "writer_mbps": 1000
}

mem_pool_size_classes示例

  • key, 内存分配阶梯
  • value, 限制多少数量,-1表示不限制,(当前access不启用数量限制)
{
    "2048": -1,
    "65536": -1,
    "524288": -1,
    "2097152": 10240,
    "8389632": 4096,
    "16777216": 1024,
    "33554432": 512,
    "67108864": 64
}

完整示例

{
    "max_procs": 0,
    "shutdown_timeout_s": 30,
    "log": {
        "level": "info",
        "filename": "./run/logs/access.log",
        "maxsize": 1024,
        "maxage": 7,
        "maxbackups": 7
    },
    "bind_addr": ":9500",
    "service_register": {
        "consul_addr": "127.0.0.1:8500",
        "service_ip": "127.0.0.1",
        "node": "access-node1",
        "health_port": [9700, 9799]
    },
    "limit": {
        "name_rps": {
           "put": 100
        },
        "reader_mbps": 100,
        "writer_mbps": 1000
    },
    "stream": {
        "idc": "idc",
        "max_blob_size": 4194304,
        "mem_pool_size_classes": {
            "2048": -1,
            "65536": -1,
            "524288": -1,
            "2097152": 10240,
            "8389632": 4096,
            "16777216": 1024,
            "33554432": 512,
            "67108864": 64
        },
        "encoder_concurrency": 1000,
        "encoder_enableverify": true,
        "min_read_shards_x": 1,
        "shard_crc_disabled": false,
        "cluster_config": {
            "region": "region",
            "region_magic": "region",
            "cluster_reload_secs": 3,
            "service_reload_secs": 3,
            "clustermgr_client_config": {
                "client_timeout_ms": 3000,
                "transport_config": {
                    "auth": {
                        "enable_auth": true,
                        "secret": "secret key"
                    },
                    "dial_timeout_ms": 2000
                }
            },
            "consul_agent_addr": "127.0.0.1:8500"
        },
        "disk_punish_interval_s": 60,
        "service_punish_interval_s": 60,
        "blobnode_config": {
            "client_timeout_ms": 10000
        },
        "proxy_config": {
            "client_timeout_ms": 5000
        }
    }
}
在github上编辑