索引表在线服务配置

配置示例

{
  "realtime": true,
  "cluster_config": {
    "table_name": "my_table"
  },
  "online_index_config": {
    "online_keep_version_count": 2,
		"on_disk_flush_realtime_index": true,
		"enable_async_dump_segment": true,
    "build_config": {
      "build_total_memory": 2048
    },
    "max_realtime_memory_use": 4096,
  	"need_read_remote_index": true,
  	"need_deploy_index": true,
    "load_config": [
      {
        "file_patterns": [
          "/index/title",
          "/attribute/.*",
        ],
        "load_strategy": "mmap",
        "load_strategy_param": {
          "slice": 409600,
          "lock": true,
          "interval": 2
        },
        "remote": false,
        "deploy": true
      }
    ],
    "speedup_primary_key_reader": true
  },
  "build_option_config": {
    "async_queue_size": 10000,
    "max_recover_time": 600,
    "async_build": true
  }
}

参数含义

  • realtime:是否开启实时模式,true/false。

  • cluster_config:

    • table_name:索引表名称

  • online_index_config:索引表在线控制参数,包括实时build参数和索引load策略。

    • online_keep_version_count:在线服务保存增量索引的 version 数,当在线服务增量索引的 version 数超过此值时,会删除老的增量索引,直到增量索引的 version 数不大于此值。

    • on_disk_flush_realtime_index:是否开启实时落盘,true/false,默认为false。开启实时落盘时,当正在构建的实时索引大小达到build_total_memory时,索引会dump到本地磁盘,并以load_config的策略加载。实时落盘功能可以使用同样的实时内存,承载更多的实时索引,对于数据量更新较大的应用建议开启。

    • enable_async_dump_segment:是否开启实时索引异步dump功能,true/false,默认为false。开启时dump索引不阻塞实时索引构建,建议设置为true。

    • build_config:实时索引build参数。

      • build_total_memory:实时索引build时使用的总内存大小,单位MB,超过该内存会触发实时索引dump。索引是dump到内存中还是到磁盘上由on_disk_flush_realtime_index参数控制。注意,该值应max_realtime_memory_use大小。

    • max_realtime_memory_use:实时索引占用的总内存大小,单位MB。实时索引占用的内存大小包括正在构建的实时索引和已经dump的实时索引所占用的内存空间。实时索引占用的内存空间达到max_realtime_memory_use时,实时索引停止构建。当实时数据通过增量索引(索引整理)切换到在线服务之后,这部分实时数据会从实时索引中清理掉,实时索引占用的内存会被释放。注意,该值应大于build_total_memory大小。

    • need_read_remote_index:存储计算分离功能开关,默认是false,开启存算分离功能后,数据节点可以直接读取分布式存储中的索引数据,节省数据节点启动时间,提高节点数据容量,节省成本,但是对查询性能有影响。

    • need_deploy_index:是否需要将索引分发到本地,默认是true。将索引提前分发到本地可以提高检索性能。

    • load_config:索引表加载策略,控制索引以哪种方式加载到内存,以实现对内存的细粒度控制,降低内存开销,提高检索性能,详细参数请参考索引表加载策略。need_read_remote_index、need_deploy_index和load_config相互配合,可以在节省成本的同时,尽量减少存算分离对性能的影响。

  • build_option_config:在线服务加载索引表时,一些进程级参数。

    • async_build:读取实时数据和build是否采用异步模式,默认为false,如果时效性敏感或者数据量更新较多,建议设置为true。

    • async_queue_size:async_build为true时,工作队列的大小,默认为1000。

    • max_recover_time:数据节点进程启动时,会回溯消息队列,追实时数据。max_recover_time表示回溯数据最长花费的时间,单位为秒。例如,配置max_recover_time为600,表示进程启动时,加上索引之后,追实时数据最多持续10分钟,10分钟后即使实时还有延迟也会提供服务。如果实时数据很少,进程检测到时效性无延迟,会立刻将进程状态置为正常,并提供服务。