2024年大数据最全TDengine高可用分布式集群详解_tdengine 集群(2) ...

打印 上一主题 下一主题

主题 665|帖子 665|积分 1995

4、负载均衡



  • 用户连接网络集群中的进程,假如没有做策略,可能会出现一种情况就是:有些进程连接用户巨多,而有些进程很少有用户连接,如许就造成某些进程的负载过大,而影响正常服务器的运行。
  • 基于如许的考虑,我们需要计划一些均衡策略,让用户能够均匀的分布到不同的进程上,这就叫负载均衡。
   就好比,刚才每个程序员轮流加班,三班倒,如许整个系统还是能运作下去。
  5、分布式系统



  • 多个提供不同服务的集群构成一个完备的高可用架构,就是基础的分布式系统。



  • 如上图所示,拥有不同功能的服务集群构成的一个大的系统就是分布式系统。
  • 分布式系统需要满意 高可用、高可靠、高性能、高并发。
   而刚才小T建立的公司,就好比一个分布式系统。
  

  • 接下来,我们对 高可用、高性能、高并发、高可靠进行一些简单的解释。
1)高可用



  • 假如一个服务能够正常使用,那么我们称之为 “可用”,好比你现在能看到这篇文章,说明网站处于 “可用” 状态。
  • 可用性定义为在足够长的时间里,一个服务可用的时间,服务可用时间越长越好。
  • 一般用可服务时间除于总时间算出一个百分比,用百分比作为度量。好比一个服务假如有 5 个 9 的可用性,指的就是一年里 99.999% 时间里服务都是可用的。
  • 按照年度可用性,来看一个表格:
可用时间百分比可用时间(天)全年故障(天)全年故障(可视单位)90%365天 x 90% = 328.5天36.5天> 1个月99%365天 x 99% = 361.35天3.65天3.65 天99.9%365天 x 99.9% = 364.635天0.365天8.76 小时99.99%365天 x 99.99% = 364.9635天0.0365天52.56 分钟99.999%365天 x 99.999% = 364.99635天0.000365天5.26 分钟

  • 这个表格什么意思呢?
  • 从上至下, 9 的个数越多,则代表系统的可用性越高。
  • 同样,按照月度可用性,我们同样可以得到一个表格如下:
可用时间百分比故障时间90%3天99%7.2小时99.9%43.2分钟99.99%4.32分钟99.999%25.92秒 2)高可靠



  • 可靠性定义为一个服务一连无故障运行的时间,无故障运行的时间越长,可靠性就越高。
  • 那么可靠性和可用性的区别在那里呢?
  • 想象有一个服务,可靠性很高,平均来说可以稳定运行一百年,但是一旦服务克制,要用十年的时间来规复,那么它的可用性只有 90%;而另一个服务,可靠性很差,运行 10秒 就会宕机,但是规复服务只需要1ms, 那么它的可用性是 99.99%。
3)高性能



  • 性能对于开发来说是一个老生常谈的问题了,可以简单理解成一个系统某项功能的实行速度。
  • 我们平时也无数次的尝试进行性能优化。小到一个 ++i和i++,都有性能区别。
4)高并发



  • 高并发是指通过计划保证系统能够同时并行处理很多哀求。
  • 高并发相干常用的一些指标有:响应时间、吞吐量、QPS、并发用户数。
1. 响应时间


  • 系统对哀求做出响应的时间。
2. 吞吐量


  • 单位时间内处理的哀求数目。
3. QPS


  • Query Per Second,每秒响应哀求数。
4. 并发用户数


  • 同时承载正常使用系统功能的用户数目。
四、TDEngine的分布式架构

1、TDEngine 概述



  • TDengine 的计划是基于分布式的几个特性而计划的。
  • TDengine 采用分布式高可用架构计划,支持水平扩容,如许任何单台或多台服务器发生硬件故障或软件错误都不影响系统的可用性和可靠性。
  • 同时,通过节点假造化、负载均衡,它能最高效率地利用异构集群中的计算和存储低落硬件资源的投入。
2、分布式架构



  • 一个完备的 TDengine 系统是运行在一到多个物理节点上的,逻辑上,它包罗数据节点、TDengine客户端以及应用。
--数据节点dnodeTDEngine 客户端TAOSC应用APP

  • 系统中存在一到多个数据节点,这些数据节点构成一个集群。应用通过 taosc 的应用程序接口与 TDengine 集群进行互动。
  • 如图所示:

  • 整个集群由以下几种节点构成:物理节点、数据节点、假造节点、管理节点、假造节点组、TAOSC,接下来我们逐一来介绍这几个节点的用途。
五、TDEngine的进程节点

1、物理节点

   物理节点、processnode、pnode
  

  • 物理节点,是一独立运行的、拥有自己的计算、存储和网络能力的计算机,固然,它可以是:
  • 1)安装有操纵系统的物理呆板设备;
  • 2)假造机,云,比方阿里云、腾讯云等等;
  • 3)也可以是容器,比方 Docker;Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 能够将 应用程序 与 基础架构 分开,从而快速交付软件。
2、数据节点

   数据节点、datanode、dnode
  

  • 数据节点,是 TDengine 服务端实行代码 TAOSD 在物理节点上的一个运行实例(也可以以为是一个进程),一个完备的系统中至少需要一个数据节点。如下图红框所示:



  • 数据节点包罗零到多个逻辑的假造节点,至多一个逻辑的管理节点。
  • dnode在系统中的唯一标识由实例的 End Point (EP) 。
  • EP 是 dnode 所在物理节点的域名和端口的组合。通过配置不同的端口,一个物理节点(一台物理机、假造机或容器)可以运行多个实例,或有多个数据节点。
3、假造节点

   假造节点,virtualnode,vnode
  

  • 为更好的支持数据分片、负载均衡,防止数据倾斜,防止某些节点过于高频,数据节点一般会被假造化成多个假造节点。如下图红框所示:



  • 每个假造节点都是一个相对独立的工作单元,是时序数据存储的基本单元,具有独立的运行线程、内存空间与持久化存储的路径。
  • 一个数据节点上能创建的假造节点的数目取决于该数据节点所在物理节点的硬件资源,包罗但不限于 内存、CPU、网络带宽 等等。
  • 一个假造节点只属于一个DataBase,但一个 DataBase 可以有多个假造节点。一个假造节点除了存储的时序数据外,也保存有所包罗的表的 SCHEMA、标签值 等等。
  • 一个假造节点由所属的数据节点的EP,以及所属的vgroup id在系统内唯一标识,由管理节点创建并管理。
4、管理节点

   管理节点,managernode,meta node,mnode
  

  • 管理节点负责所有数据节点运行状态的监控和维护,以及节点之间的负载均衡。
  • 同时,管理节点也负责元数据的存储和管理,因此也称为 Meta Node。
  • TDengine 集群中可配置最多不凌驾五个管理节点,它们自动构建成为一个假造管理节点组。如图中红框所示:



  • 管理节点间采用主从机制进行管理,而且采取强同等性进行数据同步,任何数据更新操纵只能在主上进行。
  • 管理节点集群的创建由程序自动完成。每个数据节点上至多有一个管理节点,由所属的数据节点的 EP 来唯一标识。
  • 每个数据节点通过内部消息交互自动获取整个集群中所有管理节点所在的数据节点的 EP。
5、假造节点组

   假造节点组、virtual group、vgroup
  

  • 不同数据节点上的假造节点可以构成一个假造节点组来保证系统的高可靠。
  • 假造节点组内采取主从方式进行管理。
  • 写操纵只能在 “主假造节点” 上进行,系统采用异步复制的方式将数据同步到 “从假造节点”,如许确保了一份数据在多个物理节点上有拷贝。
  • 一个假造节点组里假造节点个数就是数据的副本数。假如一个DataBase的副本数为
n
n
n,系统必须有至少
n
n
n 个数据节点。副本数在创建DB时通过参数 replica指定,默认值为1。


  • 使用 TDengine 的多副本特性,可以不再需要昂贵的磁盘阵列等存储设备,就可以获得同样的数据高可靠性。
  • 假造节点组由管理节点创建并管理,并且由管理节点分配一个系统唯一标识符,即vgroup id。假如两个假造节点的vgroup id雷同,说明他们属于同一个组,数据互为备份。
  • 假造节点组里假造节点的个数是可以动态扩容和缩容的,容许只有一个,也就是没有数据复制。vgroup id是永远不变的,即使一个假造节点组被删除,它的唯一标识符也不会被收回重复利用。
6、TAOSC



  • TAOSC 是TDengine给应用提供的驱动程序,负责处理应用与集群的交互,内嵌于JDBC、ODBC driver 中,大概C、Python、Go语言连接库里。
  • 应用都是通过 TAOSC 而不是直接连接集群中的数据节点与整个集群进行交互的。
  • 这个模块负责获取并缓存数据,作透传,将哀求转发到精确的数据节点,再把效果返回给应用时,还需要负责最后一级的排序、过滤等操纵。
六、TDEngine的进程间通讯

1、通讯方式



  • TDengine系统的各个数据节点之间,以及应用驱动与各数据节点之间,都是通过 TCP / UDP 进行通讯的。
  • 由于 UDP 更加高效,而且不受连接数的限制,以是 TDengine 除采用TCP做传输之外,还采用UDP。
  • 在这基础上,TDengine 实现了自己的超时、重传、确认、序列号等机制,确保了可靠传输 UDP 机制。
传输方式数据巨细操纵类型UDP <
15
k
\lt 15k
<15k | 非查询类 |
| TCP |

15
k
\ge 15k
≥15k | - |
| TCP | - | 查询类 |


  • 同时,TDengine根据配置和数据包,会自动对数据进行压缩/解压缩,数字签名/认证/加密等等处理。对于数据节点之间的数据复制,则采用 TCP 方式进行数据传输。
2、FQDN配置



  • 一个数据节点有一个或多个 FQDN (即 Fully Qualified Domain Name),全限定域名,可以在系统配置文件 taos.cfg 通过参数 fqdn进行指定,假如没有指定,系统将自动获取计算机的hostname作为其 FQDN 。假如节点没有配置 FQDN ,可以直接将该节点的配置参数fqdn设置为它的 IP地址。
  • 但不发起使用 IP,由于 IP 地址可变,一旦变革,将让集群无法正常工作。
  • 一个数据节点的 EP 由 FQDN + Port 构成。采用 FQDN,需要保证 DNS 服务正常工作,大概在节点以及应用所在的节点配置好 hosts 文件。另外,这个参数值的长度需要控制在 96 个字符以内。为了容错性,尽量配置在 80 个字符以下为宜。
3、端口配置



  • 一个数据节点对外的端口由 TDengine 的系统配置参数serverPort决定,对集群内部通讯的端口是serverPort+MAXP,此中这里的 MAXP = 5。
  • 集群内数据节点之间的数据复制操纵还占有一个 TCP 端口,是 serverPort+10,为支持多线程高效的处理 UDP 数据,每个对内和对外的 UDP 连接,都需要占用 5 个一连的端口。因此一个数据节点总的端口范围为serverPort到serverPort+10,统共11个TCP/UDP端口。
  • 使用时,需要确保防火墙将这些端口打开,以备使用。每个数据节点可以配置不同的serverPort。
4、集群对外通讯



  • TDengine 集群可以容纳单个、多个乃至几千个数据节点。
  • 应用只需要向集群中任何一个数据节点发起连接即可,连接需要提供的网络参数是一数据节点的 EP。通过命令行 CLI 启动应用 TAOS 时,可以通过选项-h来指定数据节点的 FQDN, -P来指定其配置的端口号,假如端口不配置,将采用 TDengine 的系统配置参数 serverPort。
5、集群内部通讯



  • 各个数据节点之间通过TCP/UDP进行连接。
  • 一个数据节点启动时,将获取 管理节点 所在的 数据节点 的 EP 信息,然后与系统中的 管理节点 建立起连接,互换信息。
   获取 管理节点 的 EP 信息有三步:
  1)检查 mnodeEpSet 文件是否存在,假如不存在或不能正常打开获得 管理节点 的 EP 信息,则进入第 2 步;
  2)检查系统配置文件 taos.cfg, 获取节点配置参数 firstEp, secondEp (这两个参数指定的节点可以是不带 管理节点 的普通节点,如许的话,节点被连接时会尝试重定向到 管理节点) 假如不存在大概 taos.cfg 里没有这两个配置参数,或无效,进入第 3 步;
  3)将自己的 EP 设为 管理节点 EP, 并独立运行起来。获取 管理节点 EP列表后,数据节点发起连接,假如连接乐成,则乐成加入进工作的集群,假如不乐成,则尝试 管理节点 EP列表中的下一个。假如都尝试了,但连接都仍然失败,则休眠几秒后,再进行尝试。
  6、管理节点的选择



  • TDengine逻辑上有管理节点,但没有单独的实行代码,服务器侧只有一套实行代码 taosd (d 意思是 deamon ,即后台、守护进程的意思)。那么哪个数据节点会是管理节点呢?这是系统自动决定的。
   原则如下:
  一个数据节点启动时,会检查自己的End Point, 并与获取的管理节点 EP 列表进行比对,假如在此中,该数据节点以为自己应该启动管理节点模块,成为管理节点。假如自己的EP不在管理节点 EP List里,则不启动管理节点模块。在系统的运行过程中,由于负载均衡、宕机等原因,管理节点有可能迁徙至新的数据节点,但统统都是透明的,无需人工干预,配置参数的修改,是管理节点自己根据资源做出的决定。
  7、动态扩容



  • 系统有了一个数据节点后,就已经成为一个工作的系统。
   添加新的节点进集群时,有两个步调:
  1)使用 TDengine CLI 连接到现有工作的数据节点,然后用命令 ”create dnode" 将新的数据节点的 End Point 添加进去;
  2)在新的数据节点的系统配置参数文件taos.cfg里,将firstEp, secondEp参数设置为现有集群中任意两个数据节点的EP即可。
  

  • 具体添加的详细步调请见详细的用户手册。如许就把集群一步一步的建立起来。
8、节点重定向



  • 无论是数据节点还是TAOSC,都是要发起与管理节点的连接,但管理节点是系统自动创建并维护的,因此对于用户来说,并不知道哪个数据节点在运行管理节点。
  • TDengine只要求向系统中任何一个工作的数据节点发起连接即可。由于任何一个正在运行的数据节点,都维护有目前运行的管理节点 EP 列表。当收到一个来自新启动的数据节点大概TAOSC的连接哀求,假如自己不是管理节点,则将管理节点 EP 列表回复给对方,TAOSC或新启动的数据节点收到这个列表,就重新尝试建立连接。当管理节点 EP 列表发生改变,通过节点之间的消息交互,各个数据节点就很快获取最新列表,并通知 TAOSC。



既有适合小白学习的零基础资料,也有适合3年以上履历的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包罗大厂面经、学习条记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会一连更新
需要这份系统化资料的朋友,可以戳这里获取
管理节点 EP 列表回复给对方,TAOSC或新启动的数据节点收到这个列表,就重新尝试建立连接。当管理节点 EP 列表发生改变,通过节点之间的消息交互,各个数据节点就很快获取最新列表,并通知 TAOSC。
[外链图片转存中…(img-CORasfw7-1714644118589)]
[外链图片转存中…(img-vNk3qW2M-1714644118590)]
[外链图片转存中…(img-IBZNMwYa-1714644118590)]
既有适合小白学习的零基础资料,也有适合3年以上履历的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包罗大厂面经、学习条记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会一连更新
需要这份系统化资料的朋友,可以戳这里获取

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表