diff --git a/documentation20/webdocs/assets/dnode.png b/documentation20/webdocs/assets/dnode.png new file mode 100644 index 0000000000000000000000000000000000000000..cea87dcccba5d2761996e5dde998022d86487eb9 Binary files /dev/null and b/documentation20/webdocs/assets/dnode.png differ diff --git a/documentation20/webdocs/assets/modules.png b/documentation20/webdocs/assets/modules.png new file mode 100644 index 0000000000000000000000000000000000000000..10ae4703a6cbbf66afea325ce4c0f919f7769a07 Binary files /dev/null and b/documentation20/webdocs/assets/modules.png differ diff --git a/documentation20/webdocs/assets/vnode.png b/documentation20/webdocs/assets/vnode.png index 5247717f62118a8e690e80a3538c1a8dd1ab9416..e6148d4907cf9a18bc52251f712d5c685651b7f5 100644 Binary files a/documentation20/webdocs/assets/vnode.png and b/documentation20/webdocs/assets/vnode.png differ diff --git a/documentation20/webdocs/markdowndocs/administrator-ch.md b/documentation20/webdocs/markdowndocs/administrator-ch.md index 06a18de1448e38630a4ee87f4da26f7680661c46..81c387a0a0eb87e7c55be8ef37870219cc95e088 100644 --- a/documentation20/webdocs/markdowndocs/administrator-ch.md +++ b/documentation20/webdocs/markdowndocs/administrator-ch.md @@ -1,33 +1,35 @@ -#系统管理 +# 系统管理 ## 容量规划 -一个系统的处理能力是有限的,但通过对TDengine配置参数的调整,可以做到资源的最佳配置。 +使用TDengine来搭建一个物联网大数据平台,计算资源、存储资源需要根据业务场景进行规划。下面分别讨论系统运行所需要的内存、CPU以及硬盘空间。 -###内存需求 +### 内存需求 -每个Database可以创建固定数目的Vnode,默认与CPU核数相同,可通过maxVgroupsPerDb配置;每个vnode会占用固定大小的内存(大小与数据库的配置参数blocks和cache有关);每个Table会占用与Tag总大小有关的内存;此外,系统会有一些固定的内存开销。因此,每个Database需要的系统内存可通过如下公式计算: +每个DB可以创建固定数目的vnode,默认与CPU核数相同,可通过maxVgroupsPerDb配置;每个vnode会占用固定大小的内存(大小与数据库的配置参数blocks和cache有关);每个Table会占用与Tag总大小有关的内存;此外,系统会有一些固定的内存开销。因此,每个DB需要的系统内存可通过如下公式计算: ``` Memory Size = maxVgroupsPerDb * (blocks * cache + 10Mb) + numOfTables * (tagSizePerTable + 0.5Kb) ``` -示例:假设是4核机器,cache是缺省大小16M, blocks是缺省值6,假设有10万张表,标签总长度是256字节,则从的内存需求为:4\*(16\*6+10) + 100000*(0.25+0.5)/1000 = 499M +示例:假设是4核机器,cache是缺省大小16M, blocks是缺省值6,假设有10万张表,标签总长度是256字节,则总的内存需求为:4\*(16\*6+10) + 100000*(0.25+0.5)/1000 = 499M。 + +实际运行的系统往往会根据数据特点的不同,将数据存放在不同的DB里。因此做规划时,也需要考虑。 如果内存充裕,可以加大Blocks的配置,这样更多数据将保存在内存里,提高查询速度。 -###CPU需求 +### CPU需求 CPU的需求取决于如下两方面: -- 数据插入:TDengine单核每秒能至少处理一万个插入请求。每个插入请求可以带多条记录。条数越大,插入效率越高。但对前端数据采集的要求越高,因为需要缓存记录,然后一批插入。 +- 数据插入:TDengine单核每秒能至少处理一万个插入请求。每个插入请求可以带多条记录,一次插入一条记录与插入10条记录,消耗的计算资源差别很小。因此没次插入,条数越大,插入效率越高。如果一个插入请求带200条以上记录,单核就能达到每秒插入100万条记录的速度。但对前端数据采集的要求越高,因为需要缓存记录,然后一批插入。 - 查询需求:TDengine提供高效的查询,但是每个场景的查询差异很大,查询频次变化也很大,难以给出客观数字。需要用户针对自己的场景,写一些查询语句,才能确定。 因此仅对数据插入而言,CPU是可以估算出来的,但查询所耗的计算资源无法估算。在实际运营过程中,不建议CPU使用率超过50%,超过后,需要增加新的节点,以获得更多计算资源。 -###存储需求 +### 存储需求 -TDengine相对于通用数据库,有超高的压缩比,在绝大多数场景下,TDengine的压缩比不会低于5倍,有的场合,压缩比可达到10倍以上,取决于数据特征。压缩前的原始数据大小可通过如下方式计算: +TDengine相对于通用数据库,有超高的压缩比,在绝大多数场景下,TDengine的压缩比不会低于5倍,有的场合,压缩比可达到10倍以上,取决于实际场景的数据特征。压缩前的原始数据大小可通过如下方式计算: ``` Raw DataSize = numOfTables * rowSizePerTable * rowsPerTable @@ -39,6 +41,12 @@ Raw DataSize = numOfTables * rowSizePerTable * rowsPerTable 为提高速度,可以配置多快硬盘,这样可以并发写入或读取数据。 +### 物理机或虚拟机台数 + +根据上面的内存、CPU、存储的预估,就可以知道整个系统需要多少核、多少内存、多少存储空间。如果数据副本数不为1,总需求量再乘以副本数。 + +根据总量,再根据单个物理机或虚拟机的资源,就可以轻松决定需要购置多少台机器了。 + ## 容错和灾备 ### 容错 @@ -47,15 +55,16 @@ TDengine支持**WAL**(Write Ahead Log)机制,实现数据的容错能力 TDengine接收到应用的请求数据包时,先将请求的原始数据包写入数据库日志文件,等数据成功写入数据库数据文件后,再删除相应的WAL。这样保证了TDengine能够在断电等因素导致的服务重启时从数据库日志文件中恢复数据,避免数据的丢失。 -涉及的系统配置参数有两个. +涉及的系统配置参数有两个: -walLevel:WAL级别,0:不写wal; 1:写wal, 但不执行fsync; 2:写wal, 而且执行fsync。 +- walLevel:WAL级别,0:不写wal; 1:写wal, 但不执行fsync; 2:写wal, 而且执行fsync。 +- fsync:当walLevel设置为2时,执行fsync的周期。设置为0,表示每次写入,立即执行fsync。 -fsync:当walLevel设置为2时,执行fsync的周期。设置为0,表示每次写入,立即执行fsync。 +如果要100%的保证数据不丢失,需要将walLevel设置为2,fsync设置为0。这时写入速度将会下降。但如果应用侧启动的写数据的线程数达到一定的数量(超过50),那么写入数据的性能也会很不错,只会比fsync设置为3000毫秒下降30%左右。 -**灾备** +### 灾备 -TDengine的集群通过多个副本的机制,来提供系统的高可靠性,实现灾备能力。 +TDengine的集群通过多个副本的机制,来提供系统的高可用性,实现灾备能力。 TDengine集群是由mnode负责管理的,为保证mnode的高可靠,可以配置多个mnode副本,副本数由系统配置参数numOfMnodes决定,为了支持高可靠,需要设置大于1。为保证元数据的强一致性,mnode副本之间通过同步方式进行数据复制,保证了元数据的强一致性。 @@ -63,33 +72,7 @@ TDengine集群中的时序数据的副本数是与数据库关联的,一个集 TDengine集群的节点数必须大于等于副本数,否则创建表时将报错。 -当TDengine集群中的节点部署在不同的物理机上(比如不同的机架、或不同的IDC),并设置多个副本数时,就实现了异地容灾,从而提供系统的高可靠性,无需再使用其他软件或工具。 - -## 文件目录结构 - -安装TDengine后,默认会在操作系统中生成下列目录或文件: - -| 目录/文件 | 说明 | -| ---------------------- | :------------------------------------------------| -| /usr/local/taos/bin | TDengine可执行文件目录。其中的执行文件都会软链接到/usr/bin目录下。 | -| /usr/local/taos/connector | TDengine各种连接器目录。 | -| /usr/local/taos/driver | TDengine动态链接库目录。会软链接到/usr/lib目录下。 | -| /usr/local/taos/examples | TDengine各种语言应用示例目录。 | -| /usr/local/taos/include | TDengine对外提供的C语言接口的头文件。 | -| /etc/taos/taos.cfg | TDengine默认[配置文件] | -| /var/lib/taos | TDengine默认数据文件目录,可通过[配置文件]修改位置. | -| /var/log/taos | TDengine默认日志文件目录,可通过[配置文件]修改位置 | - -**可执行文件** - -TDengine的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下。其中包括: - -- _taosd_:TDengine服务端可执行文件 -- _taos_: TDengine Shell可执行文件 -- _taosdump_:数据导入导出工具 -- remove.sh:卸载TDengine的脚本, 请谨慎执行,链接到/usr/bin目录下的rmtaos命令。会删除TDengine的安装目录/usr/local/taos,但会保留/etc/taos、/var/lib/taos、/var/log/taos。 - -您可以通过修改系统配置文件taos.cfg来配置不同的数据目录和日志目录。 +当TDengine集群中的节点部署在不同的物理机上,并设置多个副本数时,就实现了系统的高可靠性,无需再使用其他软件或工具。TDengine企业版还可以将副本部署在不同机房,从而实现异地容灾。 ## 服务端配置 @@ -97,8 +80,8 @@ TDengine系统后台服务由taosd提供,可以在配置文件taos.cfg里修 下面仅仅列出一些重要的配置参数,更多的参数请看配置文件里的说明。各个参数的详细介绍及作用请看前述章节。**注意:配置修改后,需要重启*taosd*服务才能生效。** -- first: taosd启动时,主动连接的集群中第一个dnode的end point, 缺省值为 localhost:6030。 -- second: taosd启动时,如果first连接不上,尝试连接集群中第二个dnode的end point, 缺省值为空。 +- firstEp: taosd启动时,主动连接的集群中第一个dnode的end point, 缺省值为 localhost:6030。 +- secondEp: taosd启动时,如果first连接不上,尝试连接集群中第二个dnode的end point, 缺省值为空。 - fqdn:数据节点的FQDN。如果为空,将自动获取操作系统配置的第一个, 缺省值为空。 - serverPort:taosd启动后,对外服务的端口号,默认值为6030。 - httpPort: RESTful服务使用的端口号,所有的HTTP请求(TCP)都需要向该接口发起查询/写入请求。 @@ -313,3 +296,31 @@ TDengine启动后,会自动创建一个监测数据库SYS,并自动将服务 这些监测信息的采集缺省是打开的,但可以修改配置文件里的选项enableMonitor将其关闭或打开。 +## 文件目录结构 + +安装TDengine后,默认会在操作系统中生成下列目录或文件: + +| 目录/文件 | 说明 | +| ------------------------- | :----------------------------------------------------------- | +| /usr/local/taos/bin | TDengine可执行文件目录。其中的执行文件都会软链接到/usr/bin目录下。 | +| /usr/local/taos/connector | TDengine各种连接器目录。 | +| /usr/local/taos/driver | TDengine动态链接库目录。会软链接到/usr/lib目录下。 | +| /usr/local/taos/examples | TDengine各种语言应用示例目录。 | +| /usr/local/taos/include | TDengine对外提供的C语言接口的头文件。 | +| /etc/taos/taos.cfg | TDengine默认[配置文件] | +| /var/lib/taos | TDengine默认数据文件目录,可通过[配置文件]修改位置. | +| /var/log/taos | TDengine默认日志文件目录,可通过[配置文件]修改位置 | + +**可执行文件** + +TDengine的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下。其中包括: + +- _taosd_:TDengine服务端可执行文件 +- _taos_: TDengine Shell可执行文件 +- _taosdump_:数据导入导出工具 +- remove.sh:卸载TDengine的脚本, 请谨慎执行,链接到/usr/bin目录下的rmtaos命令。会删除TDengine的安装目录/usr/local/taos,但会保留/etc/taos、/var/lib/taos、/var/log/taos。 + +您可以通过修改系统配置文件taos.cfg来配置不同的数据目录和日志目录。 + + + diff --git a/documentation20/webdocs/markdowndocs/taosd-ch.md b/documentation20/webdocs/markdowndocs/taosd-ch.md new file mode 100644 index 0000000000000000000000000000000000000000..20f717c512b9b3ec7d8002f350ec0ad29a4e18e8 --- /dev/null +++ b/documentation20/webdocs/markdowndocs/taosd-ch.md @@ -0,0 +1,106 @@ +# TDengine 2.0 执行代码taosd的设计 + +逻辑上,TDengine系统包含dnode, taosc和App,dnode是服务器侧执行代码taosd的一个运行实例,因此taosd是TDengine的核心,本文对taosd的设计做一简单的介绍,模块内的实现细节请见其他文档。 + +## 系统模块图 +taosd包含rpc, dnode, vnode, tsdb, query, cq, sync, wal, mnode, http, monitor等模块,具体如下图: + +