首页 > 其他分享 >南大通用GBase 8s 集群网络交互信息概述(上)

南大通用GBase 8s 集群网络交互信息概述(上)

时间:2024-09-19 18:23:18浏览次数:11  
标签:网络 节点 Vector 集群 长度 8s 交互 GBase SSC

在当今数据驱动的商业环境中,数据库的性能和可靠性是企业成功的关键。GBase 8s作为一款的国产数据库系统,其SSC集群架构通过优化网络交互,显著提升了性能和可用性。本文将分两部分聚焦于GBase 8s SSC集群的网络交互信息概述和网络吞吐量计算。

在GBase 8s SSC集群中,主节点向从节点只传输网络心跳、逻辑日志当前位置信息等内容即可,并不需要传输逻辑日志,SSC从节点只需根据主节点的最新LSN号从共享磁盘读取逻辑日志即可,这样减少了网络的信息传递,也减少网络延迟等网络因素对同步性能的影响,因此,在SSC集群中,节点间网络传输相比逻辑日志写入要少很多,网络的传输量并不大,尽可能减少了网络性能对SSC集群性能的影响。

在只有一个从节点的SSC集群情况下,假定TPCC测试在400并发下性能为100万tpmc,主从节点间的网络吞吐量理论最大约为3.5MB/s,SSC主节点发送PPS为16666.7包/s。此场景下忽略了其他主从间其他的消息交互,实际测试场景下,网络吞吐量要高于此理论值。

同时,在SSC从节点支持更新的场景下,假定TPCC中只包含neworder业务并且直接在SSC从节点执行测试,如果TPCC性能达到100万tpmc,则网络吞吐量为248.9 MB/s,SSC从节点发送PPS达到400000包/s。

一、SSC集群架构与工作原理

GBase 8s SSC集群为共享存储集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负责均衡等特性,且支持故障自动切换和故障自动重加入。

1、SSC集群架构

 

南大通用GBase 8s 集群网络交互信息概述(上)_首部

图1 SSC集群架构图

 

2、SSC集群工作原理

南大通用GBase 8s 集群网络交互信息概述(上)_首部_02

图2 SSC集群工作原理

相比与HAC和RHAC集群,SSC集群并不需要在主从节点间传输逻辑日志文件,主节点只需向从节点发送逻辑日志当前位置信息即可,而SSC从节点可以根据接收到的LSN从共享存储获取,具体的工作原理如下:

(1)主节点完成数据更细,并发送当前LSN (Log Sequence Number)给SSC从节点。

(2) SSC从节点接收到主节点发送的LSN,并从磁盘读取更新的逻辑日志。

(3)SSC从节点重做逻辑日志更新内存中数据。

(4)SSC从节点返回LSN ACK。

除此之外,与其他集群类型类似,SSC集群主节点和从节点之间,需要定时发送心跳信息,以维护集群状态。

二、网络交互的优化

无负载场景

SSC集群在没有业务情况下,主节点每秒通过网络给从节点发送网络心跳,在有业务时,当逻辑日志buffer刷新到磁盘时,主节点向从节点发送当前的LSN。主从间的消息时序图如下:

南大通用GBase 8s 集群网络交互信息概述(上)_首部_03

图3 时序图

心跳包由MACH11_PING和IamAlive类型消息组成,其中MACH11_PING类型消息长度为24字节,IamAlive类型消息长度为16字节。SSC从节点收到心跳包后回复ACK包,包括MACH11_PINGACK和IamAlive类型消息。

在有业务时,主节点发送的数据包由logLPG和MACH11_PING类型消息组成,SSC从节点收到后回复的数据包由logLSN和MACH11_PINGACK类型消息组成,各种消息的长度如下表:

消息类型

消息长度(字节)

MACH11_PING

24

MACH11_PINGACK

16

IamAlive

16

logLPG

28

logLSN

24

 

每个数据包的组成如下图

南大通用GBase 8s 集群网络交互信息概述(上)_工作原理_04

图4 数据包组成图

 

其中SMX Header的长度为20个字节。

由上可知,在无业务的情况下,各种数据包在网络发送时长度如下:

  • 主节点发送的心跳包的长度为20+24+16=60字节,加上以太网首部、网络IP首部和TCP首部的长度总和至少为54字节(14+20+20),心跳网络包的长度为54+60=114字节;
  •  SSC从节点对心跳的ACK网络包长度为54+16+16=86字节;

在有业务的情况下,各种数据包在网络发送时长度如下:

  • LSN网络包的长度为54+20+28+24=126字节;
  • SSC从节点的LSN ACK网络包长度为54+24+16=94字节。

三、SSC从节点支持更新操作

当在SSC集群 UPDATABLE_SECONDARY 被设置为非零时,SSC从节点支持更新操作,详细的过程如下:

(1)SSC从节点server接收到更新操作时,进行语法、语义解析并将语法树转CB,包括生成执行计划。

(2)SSC从节点将执行计划和相关相信同步给主节点。

(3)主节点接收到SSC从节点发送的消息后,执行更新操作。

(4)主节点完成数据更新后,同步结果给SSC从节点。

以DML操作为例,当SSC从节点执行更新操作时,主从节点间的消息时序图如下:

 

南大通用GBase 8s 集群网络交互信息概述(上)_首部_05

图5 SSC从节点更新时序图

 

SSC从节点执行DML操作时,各类消息的长度如下表:

消息类型

消息组成

消息长度(字节)

ProxyWriteBeginWork

Vector[0]: 消息头

Vector[1]: Begin消息内容

176

ProxyWriteInsert

Vector[0]: 消息头

Vector[1]: DML消息首部

Vector[2]: 行镜像

Vector[3]: col bitmap buffer长度

Vector[4]: col bitmap buffer内容

Vector[5]: 隔离级别(可选,每个事务发一次)

108 + 行长 + col_bitmap_buffer长度

ProxyWriteDelete

Vector[0]: 消息头

Vector[1]: DML消息首部

Vector[2]: 行镜像

Vector[3]: col bitmap buffer长度

Vector[4]: col bitmap buffer内容

Vector[5]: 隔离级别(可选,每个事务发一次)

108 + 行长 + col_bitmap_buffer长度

ProxyWriteUpdate

Vector[0]: 消息头

Vector[1]: DML消息首部

Vector[2]: 行前镜像

Vector[3]: 行后镜像

Vector[4]: col bitmap buffer长度

Vector[5]: col bitmap buffer内容

Vector[6]: 隔离级别(可选,每个事务发一次)

108 + 行长*2 + col_bitmap_buffer长度

ProxyWriteSync

Vector[0]: 消息头

Vector[1]: Sync消息内容(可选,主回复SSC从节点时添加此内容)

28(SSC→Pri)

68(Pri→SSC)

ProxyWriteFlush2LSN

Vector[0]: 消息头

Vector[1]: LSN

36

ProxyWriteCommit

Vector[0]: 消息头

28

 

每个数据包的组成同图4,SMX Header的长度为20个字节,如图5所示,一条单Insert sql的事务需要发送3个网络包,假定操作表有三列且行长为40(此时col bitmap buffer的长度为4),则3组网络包具体信息如下:

第一组网络包信息如下:

  • SSC从节点发送给主节点的网络包由ProxyWriteBeginWork、ProxyWriteInsert和ProxyWriteSync三类消息组成,加上以太网首部、网络IP首部和TCP首部的长度总和至少为54字节(14+20+20),此包的长度为54+20+176+(108+40+4)+28=430字节。
  • 主节点的回复网络包由ProxyWriteSync类型消息组成,此包的长度为54+20+68=142字节。

第二组网络包信息如下:

  • SSC从节点发送给主节点的网络包由ProxyWriteCommit类型消息组成,此包的长度为54+20+28=102字节。
  • 主节点的回复网络包由ProxyWriteSync类型消息组成,此包的长度为54+20+68=142字节。

第三组网络包信息如下:

  • SSC从节点发送给主节点的网络包由ProxyWriteBeginWork、ProxyWriteFlush2LSN和ProxyWriteCommit三类消息组成,此包的长度为54+20+176+36+28=314字节。
  • 主节点的回复网络包由ProxyWriteSync类型消息组成,此包的长度为54+20+68=142字节。

 

南大通用GBase 8s SSC集群的网络交互机制是其高性能的关键。通过减少不必要的数据传输,SSC集群能够在保持数据一致性的同时,实现快速的业务处理和故障恢复。下篇文章,我们将深入探讨SSC集群在不同业务场景下的网络吞吐量,敬请期待。

标签:网络,节点,Vector,集群,长度,8s,交互,GBase,SSC
From: https://blog.51cto.com/u_17026136/12058172

相关文章

  • 南大通用GBase 8s 集群网络交互信息概述(下)
    在上篇文章中,我们了解了GBase8sSSC集群的网络交互机制。本文将聚焦于网络吞吐量的计算,分析SSC集群在不同业务场景下的表现,并与HAC和RHAC集群进行对比。一、无业务场景下的网络吞吐量在无业务时,网络上只有每秒发送的心跳包和心跳包的ACK,则网络吞吐量极低,具体为(114+86)/(1024*1024......
  • K8S入门学习(四):集群编排工具之 Dashboard
    一、Dashboard简单介绍1.1、Dashboard它是什么Dashboard是K8s集群管理的一个基于web的用户界面---WebUI,它提供了一个直观的方式来管理和监控K8s集群。Dashboard提供了对集群资源、应用程序部署和状态的实时查看和操作,使得用户能够更高效地管理和监控其K8s集。Dashboa......
  • k8s规范
    为了更全面地提升Kubernetes集群的效率、安全性、可维护性,以下是更为详尽的Kubernetes使用规范,涵盖架构设计、监控、扩展、安全性等多个维度的最佳实践。 1.架构设计规范1.1多环境隔离开发、测试、生产环境分离:为不同环境使用不同的命名空间或集群,确保开发环境的错误不......
  • GBase8c使用wal2json逻辑复制槽
    1. 参数设置要想使用wal2json逻辑复制,要设置以下参数:wal_level=logicalenable_slot_log=onwal_level设置为logical,表示WAL日志支持逻辑复制。如果需要进行备机解码,要在对应的主机上设置enable_slot_log为on。 2. 逻辑复制槽的使用2.1 创建逻辑复制槽下面来创建一个逻辑复制......
  • 南大通用GBase 8s HAC集群搭建部署指南(下)
    在上篇文章中,我们完成了GBase8sHAC集群搭建的初步配置。本文将重点介绍如何配置主节点和辅节点之间的互信关系,以及如何搭建并验证HAC集群的状态。1、配置互信互信是集群节点间通信的基础。我们可以通过配置.rhosts文件或使用REMOTE_SERVER_CFG参数两种方式来实现互信。根据企业的......
  • 基于Rose HA的GBase 8a高可用方案
    方案背景  随着计算机应用的不断深入,企业对计算机系统的依赖程度也日渐增加。在一些关键应用中,后台数据库是否可以提供及时、可靠的信息和服务是必不可少的,甚至会成为影响公司业务的关键因素。  计算机硬件与操作系统都不可避免地会发生故障,这些故障有可能给企业带来极大的......
  • GBase 8c 兼容性-oracle分区语法
    GBase8c分布式版本支持兼容oracle分区表功能,支持二级分区,9种分区组合,interval分区。分区明显如下:hash分区sql示例,与oracle写法一致。--一级hash分区droptableifexistsmea_hashcascade;createtablemea_hash(city_idint,logdatetimestamp,idint)partition......
  • Arcgis模型构建器04——深入学习篇04——模型工具与地图文档进行交互
    前言在使用模型工具的时候,有些输入数据我想每次执行的时候都自己手动绘制一个面进行输入,那么该如何实现呢?解决办法我们可以把这个输入参数的类型设置为要素集,如图:右击要素集变量,选择属性,选择数据类型,我们可以再这里选择一个符号系统模版来对该要素集进行显示,导入的符......
  • GBase 8s 自定义split_part函数
    gbase数据该函数的功能:以第二个参数separator_in分隔第一个参数str_in,返回第三个参数field_in指定字段。dropfunctionifexistssplit_part2;createfunctionsplit_part2(str_inlvarchar(2048),separator_inchar(1),field_inint)returningvarchar(255);def......
  • GBase 8s数据库连接 – Perl(DBD::ODBC)
    软件需求:1,GBase8sCSDK2,perl-5.16.3及perl-devel-5.16.33,unixODBC-2.3.14,DBD-ODBC-1.60###1,系统环境确认####1.1perl、perl-devel及unixODBC版本Linux下root用户通过rpm确认perl、perl-devel,unixODBC、unixODBC-devel均已经安装,如下:[root@rhel7u6~]#rpm-qaperlperl......