Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6838c8b

Browse files
whitewumdangleptr
authored andcommitted
[doc] fix file error location in the administration directory (vesoft-inc#1100)
* fix file error location * add manual-cn/ --0.about-this-manual --3.design-and-architecture
1 parent 814f4a0 commit 6838c8b

File tree

13 files changed

+199
-0
lines changed

13 files changed

+199
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<!-- TODO
2+
3+
# About this manual
4+
5+
This is the Nebula Graph User Manual. It documents Nebula Graph R201910_RC1. For information about which versions have been released, see [Release Notes](https://github.com/vesoft-inc/nebula/releases).
6+
7+
> This manual presumes you understand general graph database concepts and command-line interpreter.
8+
9+
Nebula Graph is under constant development, and this User Manual is updated frequently as well.
10+
11+
The User Manual source files are written in Markdown format. The HTML version is produced automatically, primarily using mkdocs. For information about mkdocs, see https://www.mkdocs.org/
12+
13+
If you have questions about using Nebula Graph, join the [Nebula Graph Community Slack](https://join.slack.com/t/nebulagraph/shared_invite/enQtNjIzMjQ5MzE2OTQ2LTM0MjY0MWFlODg3ZTNjMjg3YWU5ZGY2NDM5MDhmOGU2OWI5ZWZjZDUwNTExMGIxZTk2ZmQxY2Q2MzM1OWJhMmY#"). If you have suggestions concerning additions or corrections to the manual itself, please do not hesitate to open an issue on [GitHub](https://github.com/vesoft-inc/nebula/issues).
14+
15+
This manual was originally written and maintained by the Nebula Graph Documentation Team.
16+
17+
## Typographical and syntax conventions
18+
19+
This manual uses certain typographical conventions:
20+
21+
- `Fixed width`
22+
23+
A fixed-width font is used in syntax, code examples, system output, and file names.
24+
25+
- **Bold**
26+
27+
Bold typeface indicates commands or characters the user types, provides emphasis, or the names of user interface elements.
28+
29+
- *Italic*
30+
31+
Italic typeface indicates the title of a document, or signifies new terms.
32+
33+
- `UPPERCASE fixed width`
34+
35+
Keywords in syntax and code examples are almost always shown in upper case. Although shown in uppercase, you can type keywords in either uppercase or lowercase.
36+
37+
38+
39+
-->
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Nebula Graph 的整体架构
2+
3+
![](https://oscimg.oschina.net/oscnet/8830ba04d83fc7f8644654dba4d53cc63ab.jpg)
4+
5+
一个完整的 Nebula 部署集群包含三个服务,即  Query Service,Storage Service 和 Meta Service。每个服务都有其各自的可执行二进制文件,这些二进制文件既可以部署在同一组节点上,也可以部署在不同的节点上。
6+
7+
## Meta Service
8+
9+
上图为 Nebula Graph 的架构图,其右侧为 Meta Service 集群,它采用 leader / follower 架构。Leader 由集群中所有的 Meta Service 节点选出,然后对外提供服务。Followers 处于待命状态并从 leader 复制更新的数据。一旦 leader 节点 down 掉,会再选举其中一个 follower 成为新的 leader。
10+
11+
Meta Service 不仅负责存储和提供图数据的 meta 信息,如 schema、partition 信息等,还同时负责指挥数据迁移及 leader 的变更等运维操作。
12+
13+
## 存储计算分离
14+
15+
在架构图中 Meta Service 的左侧,为 Nebula Graph 的主要服务,Nebula 采用存储与计算分离的架构,虚线以上为计算,以下为存储。
16+
17+
存储计算分离有诸多优势,最直接的优势就是,计算层和存储层可以根据各自的情况弹性扩容、缩容。
18+
19+
存储计算分离还带来的另一个优势:使水平扩展成为可能。
20+
21+
此外,存储计算分离使得 Storage Service 可以为多种类型的个计算层或者计算引擎提供服务。当前 Query Service 是一个高优先级的计算层,而各种迭代计算框架会是另外一个计算层。
22+
23+
## 无状态计算层
24+
25+
现在我们来看下计算层,每个计算节点都运行着一个无状态的查询计算引擎,而节点彼此间无任何通信关系。计算节点仅从 Meta Service 读取 meta 信息,以及和 Storage Service 进行交互。这样设计使得计算层集群更容易使用 K8s 管理或部署在云上。
26+
27+
计算层的负载均衡有两种形式,最常见的方式是在计算层上加一个负载均衡(balance),第二种方法是将计算层所有节点的 IP 地址配置在客户端中,这样客户端可以随机选取计算节点进行连接。 
28+
29+
每个查询计算引擎都能接收客户端的请求,解析查询语句,生成抽象语法树(AST)并将 AST 传递给执行计划器和优化器,最后再交由执行器执行。
30+
31+
## Shared-nothing 分布式存储层
32+
33+
Storage Service 采用 shared-nothing 的分布式架构设计,每个存储节点都有多个本地 KV 存储实例作为物理存储。Nebula 采用多数派协议 Raft 来保证这些 KV 存储之间的一致性(由于 Raft 比 Paxo 更简洁,我们选用了 Raft )。在 KVStore 之上是图语义层,用于将图操作转换为下层 KV 操作。
34+
35+
图数据(点和边)是通过 Hash 的方式存储在不同 Partition 中。这里用的 Hash 函数实现很直接,即 vertex_id 取余 Partition 数。在 Nebula Graph 中,Partition 表示一个虚拟的数据集,这些 Partition 分布在所有的存储节点,分布信息存储在 Meta Service 中(因此所有的存储节点和计算节点都能获取到这个分布信息)。

0 commit comments

Comments
 (0)