HugeGraphServer 内部集成了 GremlinServer 和 RestServer,而 gremlin-server.yaml 和 rest-server.properties 就是用来配置这两个 Server 的。
HugeGraph 配置项及参数配置
主要的配置文件包括:gremlin-server.yaml、hugegraph.properties、rest-server.properties
HugeGraphServer 内部集成了 GremlinServer 和 RestServer,而 gremlin-server.yaml 和 rest-server.properties 就是用来配置这两个 Server 的。
- GremlinServer:GremlinServer 接受用户的 gremlin 语句,解析后转而调用 Core 的代码。
- RestServer:提供 Restful API,根据不同的 HTTP 请求,调用对应的 Core API,如果用户请求体是 gremlin 语句,则会转发给 GremlinServer,实现对图数据的操作。
GremlinServer 配置项(gremlin-server.yaml)
目前只需要关注如下几个配置项:host、port、channelizer 和 graphs。
- host:部署 GremlinServer 机器的机器名或 IP,目前 HugeGraphServer 不支持分布式部署,且 GremlinServer 不直接暴露给用户,此项可以不修改;
- port:部署 GremlinServer 机器的端口,同 host,可以不修改;
- channelizer:GremlinServer 与客户端有两种通信方式,分别是 WebSocket 和 HTTP(默认)。如果选择 WebSocket,用户可以通过 Gremlin-Console 快速体验 HugeGraph 的特性,但是不支持大规模数据导入,推荐使用 HTTP 的通信方式,我们的一些外围组件都是基于 HTTP 实现的;
- graphs:GremlinServer 启动时需要打开的图,该项是一个 map 结构,key 是图的名字,value 是该图的配置文件路径;
基本配置项(hugegraph.properties)
| 配置选项 | 默认值 | descrition |
|---|
| backend | rocksdb | 数据存储类型,可用值是[memory,rocksdb,cassandra,scylladb,mysql] |
| serializer | binary | 后端存储的序列化器,可用值为[text,binary,cassandra,mysql] |
| store | hugegraph | 数据库名称如 Cassandra Keyspace。 |
| store.graph | graph | 图表名称,用于存储顶点,边和属性。 |
| store.schema | schema | 架构表名称,用于存储元数据。 |
| vertex.default_label | vertex | 默认的顶点标签。 |
| vertex.tx_capacity | 10000 | 事务中顶点(未提交)的最大大小(项)。 |
| edge.tx_capacity | 10000 | 事务中边缘(未提交)的最大大小(项)。 |
| graph.cache_capacity | 10485760 | 图数据(顶点/边)的最大高速缓存大小(项)。 |
| graph.cache_expire | 600 | 图形数据(顶点/边缘)的到期时间(以秒为单位)。 |
| gremlin.graph | com.baidu.hugegraph.HugeFactory | Gremlin 创建图表。 |
| schema.cache_capacity | 1048576 | 架构数据的最大缓存大小(项)。 |
| schema.illegal_name_regex | .\s+$|~. | 正则表达式指定了模式名称的非法格式。 |
| snowflake.datecenter_id | 0 | snowflake id 生成器的数据中心 ID。 |
| snowflake.force_string | false | 是否强制 snowflake 长 id 为字符串。 |
| snowflake.worker_id | 0 | snowflakeid 生成器的 worker id。 |
| rate_limit | 0 | 添加/更新/删除顶点/边的最大速率(项/ s)。 |
| auth.admin_token | 162f7848-0b6d-4faf-b557-3a0797869c55 | 用于管理员操作的令牌。 |
| auth.require_authentication | false | 是否启用身份验证。 |
| auth.user_tokens | [hugegraph:9fd95c9c-711B-415B-b85f-d4df46ba5c31] | 用户标记的地图,名称和密码。 |
API 配置项(rest-server.properties)
| 配置选项 | 默认值 | descrition |
|---|
| restserver.url | http://127.0.0.1:8080 | 监听 rest-api 服务器的 URL。 |
| graphs | [hugegraph:CONF / hugegraph.properties] | 图形名称和配置文件的映射。 |
| gremlinserver.url | http://127.0.0.1:8182 | gremlin 服务器的 url。 |
| batch.max_edges_per_batch | 500 | 每批提交的最大边数。 |
| batch.max_vertices_per_batch | 500 | 每批提交的最大顶点数。 |
| batch.max_write_ratio | 50 | 批处理写入的最大线程比率仅在 batch.max_write_threads 为 0 时生效。 |
| batch.max_write_threads | 0 | 批量写入的最大线程,如果值为 0,则实际值将设置为 batch.max_write_ratio * total-rest-threads。 |
| exception.allow_trace | false | 是否允许异常跟踪堆栈。 |
Cassandra & ScyllaDB 后端配置项
| 配置选项 | 默认值 | descrition |
|---|
| cassandra.host | 本地主机 | cassandra 集群的种子主机名或 IP 地址。 |
| cassandra.port | 9042 | cassandra 集群的种子端口地址。 |
| cassandra.connect_timeout | 5 | cassandra 驱动程序连接服务器超时(秒)。 |
| cassandra.read_timeout | 20 | cassandra 驱动程序从服务器超时(秒)读取。 |
| cassandra.keyspace.strategy | SimpleStrategy | 键空间策略。 |
| cassandra.keyspace.replication | 3 | 密钥空间复制因子。 |
| cassandra.username | | 用于登录 cassandra 集群的用户名。 |
| cassandra.password | | 密码对应 cassandra.username。 |
| cassandra.compression_type | none | cassandra 传输的压缩算法:none / snappy / lz4。 |
RocksDB 后端配置项
| 配置选项 | 默认值 | descrition |
|---|
| rocksdb.allow_mmap_reads | false | 允许操作系统 mmap 文件以读取 sst 表。 |
| rocksdb.allow_mmap_writes | false | 允许操作系统 mmap 文件进行写入。 |
| rocksdb.bulkload_mode | false | 切换到模式以将数据批量加载到 RocksDB 中。 |
| rocksdb.compaction_style | LEVEL | 为 RocksDB 设置压缩样式:LEVEL / UNIVERSAL / FIFO。 |
| rocksdb.compression_type | snappy | RocksDB 的压缩算法:snappy / z / bzip2 / lz4 / lz4hc / xpress / zstd。 |
| rocksdb.data_disks | [] | 用于存储 RocksDB 数据的优化磁盘。每个元素的格式:STORE/TABLE: /path/to/disk.Allowed 键是[graph / vertex,graph / edge_out,graph / edge_in,graph / secondary_index,graph / range_index] |
| rocksdb.data_path | rocksdb-data | 存储 RocksDB 数据的路径。 |
| rocksdb.delayed_write_rate | 16777216 | 如果压缩落后,当需要减速时,用户写入请求的速率限制(以字节/秒为单位)。 |
| rocksdb.log_level | INFO | RocksDB 的信息日志级别。 |
| rocksdb.max_background_compactions | 4 | 并发后台压缩作业的最大数量。 |
| rocksdb.max_background_flushes | 4 | 并发后台刷新作业的最大数量。 |
| rocksdb.max_bytes_for_level_base | 536870912 | level-1 文件总大小的上限(以字节为单位)。 |
| rocksdb.max_bytes_for_level_multiplier | 10.0 | 所有 L 的级别(L + 1)文件的总大小与级别 L 文件的总大小之间的比率。 |
| rocksdb.max_open_files | -1 | RocksDB 可以缓存的最大打开文件数。 |
| rocksdb.max_subcompactions | 4 | 该值表示每个压缩作业的最大线程数。 |
| rocksdb.max_write_buffer_number | 6 | 内存中构建的最大写缓冲区数。 |
| rocksdb.max_write_buffer_number_to_maintain | 0 | 要在内存中维护的最大写缓冲区总数。 |
| rocksdb.min_write_buffer_number_to_merge | 2 | 将合并在一起的最小写缓冲区数。 |
| rocksdb.num_levels | 7 | 设置此数据库的级别数。 |
| rocksdb.optimize_mode | true | 针对繁重的工作负载和大型数据集进行优化。 |
| rocksdb.sst_path | | 将 SST 文件提取到 RocksDB 的路径。 |
| rocksdb.target_file_size_base | 67108864 | 压缩的目标文件大小(以字节为单位)。 |
| rocksdb.target_file_size_multiplier | 1 | 级别 L 文件和级别(L + 1)文件之间的大小比率。 |
| rocksdb.use_direct_io_for_flush_and_compaction | false | 使操作系统能够在刷新和压缩中使用直接读写。 |
| rocksdb.use_direct_reads | false | 使操作系统能够使用直接 I / O 读取 sst 表。 |
| rocksdb.wal_path | rocksdb-data | 存储 RocksDB 的 WAL 的路径。 |
| rocksdb.write_buffer_size | 134217728 | 要在内存中构建的数据量(以字节为单位)。 |
MySQL 后端配置项
| 配置选项 | 默认值 | descrition |
|---|
| jdbc.driver | com.mysql.jdbc.Driver | 用于连接数据库的 JDBC 驱动程序类。 |
| jdbc.url | jdbc:mysql://127.0.0.1:3306 | JDBC 格式的数据库 URL。 |
| jdbc.username | root | 登录数据库的用户名。 |
| jdbc.password | | 与 jdbc.username 对应的密码。 |
| jdbc.reconnect_interval | 3 | 数据库连接失败时重新连接之间的间隔(秒)。 |
| jdbc.reconnect_max_times | 3 | 数据库连接失败时的重新连接时间。 |