暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

瀚高技术全揭秘 | 聊点儿瀚高对等服务集群的「黑科技」

瀚高数据库 2023-05-26
2207


声明:

本文章内容仅用于学习、交流,未经团队允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的,利用此文所提供的信息而造成的任何直接或间接的损失,均由使用者本人负责。






PART

01

对等服务集群概述


在集中式数据库多节点集群架构设计中,常见的有双机热备HA、高可用集群、读写分离集群、共享存储集群等,不同的集群架构有相对应的应用场景。
双机热备HA主要用于两节点主备集群,能够提供当主库出现故障时备机平滑的接替主机工作,如下所示。

高可用集群提供多节点的主备集群服务,主节点负责读写而备节点可提供读服务;在正常的运行过程中主要由主节点提供服务能力,当主节点出现网络、掉电等故障引起服务中断时,自动进行主备切换选举某个备节点提升为主节点对外提供可持续化的数据服务,如下所示。



读写分离集群主要在提供高可用集群的能力上,应用通过统一访问接口连接,集群实现应用事务的自动识别、读写分发处理能力,能够将应用绝大部分读事务均衡的分摊到集群的各备节点处理,从而降低集群主节点主机的负载压力、提升整个集群的性能瓶颈;实现对应用透明的高可用及负载均衡能力,如下所示。

在传统的主备模式多节点集群只能主节点的提供读写而各备节点提供只读模式的架构中,瀚高数据库在内核层进行架构优化,提供备节点不仅具备读能力,亦可具备写能力。即备节点可读可写,实现了主备节点提供对等的读写服务,我们称之为对等服务集群,如下所示。





PART

02

对等服务集群应用场景


如上展示,瀚高对等服务集群在传统的高可用集群的基础上为每个节点提供了对等读写的能力,允许应用程序在备节点上通过负载均衡机制实现读写操作在对应节点执行。可以充分利用集群资源、降低主节点负载、提高数据库集群系统的处理能力。
该系统通过主备事务的可见性及语句级同步机制保证事务一致性,集群本身可通过DB_HA(之前有介绍瀚高高可用软件)搭建高可用机制,实现故障自动转移及主备切换等,保证数据服务的连续性;允许应用程序通过VIP接入集群各节点,简化应用程序接口配置。
如今市面上现存解决集中式关系型数据库的主备多节点集群性能方案主要为读写分离方案,如中间件式的读写分离组件、基于JDBC驱动的读写分发方案等。在功能上及对SQL转发处理能力上对等服务集群与上述两种解决方案有如下优势:

场景

对等服务

中间件读写分离

JDBC驱动读写分发

数据库自带的能力

数据库内核能力

额外组件

数据库驱动

额外软硬件支撑

无需额外软硬件支撑

组件部署及运行需要服务器资源

特定的数据库驱动包

用户使用习惯

不改变用户使用习惯及程序接口

需连接中间件及配置SQL白名单等

仅限于JAVA应用,不具有普适性。

SQL语句判断能力

内核级SQL解析器处理,支持复杂SQL的精准处理。

关键词判断逻辑,不精准。

关键词判断逻辑,不精准。

视图处理能力

内核解析视图,rewrite到表。

需配置视图和表的映射关系

需配置视图和表的映射关系

函数处理能力

内核及解析函数属性(v/s/i)

需配置函数白名单

需配置函数白名单

游标处理能力

支持

支持

不支持

unlogged表处理


内核解析unlogged表

需配置相应表白名单

需配置相应表白名单

临时表处理能力

内核解析临时表

需配置相应表白名单

需配置相应表白名单

备节点执行失败的处理

支持主备abort

不确定

不支持

主节点执行失败的处理

支持主备abort

不确定

不支持

DDL后接着查询

支持事务内和事务外,无论是同步流还是异步流均支持。

事务内:不支持且易产生主备冲突。事务外:不支持。


事务内:不支持且易产生主备冲突。事务外:不支持。

物化视图

refresh后接着查询

支持(同DDL后接着查询一样)

同上

同上

begin的处理能力

支持begin带参数的处理;支持重复begin的处理;支持serializable mode处理。

不确定

不支持






PART

03

对等服务集群演示





前置条件

(1)部署瀚高数据库;

(2)搭建好同步或异步流复制集群(流复制集群、高可用集群均可)。

安装瀚高数据库及搭建好高可用集群后(这里不在赘述,感兴趣的小伙伴可以联系我们获得试用版),要使用对等服务功能则需要修改备库的数据库参数enable_standby_dispatch,将该参数值设为true以开启对等服务模式。修改后重启备节点数据库服务即可。

如下,搭建了一主一备;

角色

主机IP

服务端口

主库(PRIMARY)

192.168.70.141

5866

备库(STANDBY)

192.168.70.142

5866






对等服务集群配置

备库配置:

在备库上打开对等服务功能开关;

enable_standby_dispatch设置为true;

执行语句:

    alter system set enable_standby_dispatch = 'true';
    如图所示:

    重启备库使配置生效。






    对等服务功能展示


    DDL操作演示


    备库上执行DDL语句,如下:

      psql -h 192.168.70.142 -p 5866 -U highgo
      create database db_test;
      \c db_test
      create table t_test(id int,name varchar,age int);
      如图所示:

      主库上进行查看表t_test结构,如下:

        psql -h 192.168.70.141 -p 5866 -U highgo -d db_test
        \d t_test
        图所示:


        DML、DQL操作演示


        备库上对表t_test进行DML、DQL操作,如下:

          insert into t_test values(1,'highgo',15),(2,'瀚高',15);
          update t_test set name='highgo123' where id = 1;
          select * from t_test;
          如图所示

          主库上进行查看,如下:

            select * from t_test ;
            如图所示:


            DCL操作演示


            备库上对表t_test进行DCL操作;

            创建新用户,在未授权之前select表t_test(用户未经授权无法访问表),如下:

              create user u_test with password 'Qwer!234';
              \c - u_test
              select * from t_test ;
              如图所示:

              备库上给用户u_test赋予表t_test的权限(赋予select权限后可查询该表),如下:

                \c - highgo
                grant select on t_test to u_test;
                \c - u_test
                select * from t_test ;
                如图所示:

                主库上验证一下,如图所示。

                篇幅有限,在此就不做过多的举例了,感兴趣的小伙伴可以获取测试版自己动手尝试哦。


                END


                文章转载自瀚高数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论