作为一名技术人员,我对文字的认识远不及对代码的掌控。我不善于用华丽的词句来表达数据库防火墙的重任。在大多数人眼里,它只是一个冰盒,但笔者还是希望凭借有限的语言能力,用技术人的思维,告诉大家这样一个盒子的自我提升之路。实现了高可用,解决了最基本的级联部署问题。数据库防火墙的“人生”可以说是成功了一小部分,人生的下一个挑战也随之而来:高性能和可扩展性。在此,我们仍然需要介绍一下数据库防火墙与传统网络防火墙的根本区别:1、深入协议分析和内容分析的复杂性对传统网络防火墙提出了挑战:通常只有包头和网络层的一些协议特性是分析了。不会对通信包进行深入分析,一般不会对响应包进行分析。数据库防火墙:需要深入分析数据库通信协议的请求包和响应包(双向包):1.对于请求包,需要解析出SQL语句,参数化语句,参数值,以及数据包中的跟踪语句游标。2、对于响应包,需要解析出返回的字段信息、结果集、响应信息等。3、对于SQL语句,需要进行词法和语法分析(下一篇文章会介绍为什么要进行语法分析而不是语法分析)简单的关键字匹配)。4.对于参数值和结果集,需要进行格式转换,根据策略进行必要的内容过滤。显然,两者在通信包的处理工作量上存在较大差异。面对这样的工作强度,我们必须给数据库防火墙一个强大的“心脏”,优化其处理逻辑和性能,以实现低延迟,保证数据库操作的高吞吐量需求。2、核心业务数据库的高吞吐量和可扩展性挑战在以银行、保险、电信为代表的大型企业,以税务、海关、航空为代表的行业,以快递为代表的新兴领域,与大规模WEB相比应用服务器集群,数据库服务器基本上都是用少量的高端设备来支撑大规模的核心应用。无论是使用RAC集群还是分布式数据库集群,大部分核心业务场景都是使用非常高端的小型机来搭建,数百甚至上百个CPU、数百GB内存、高端磁盘阵列可以支撑强大的数据库事务吞吐量(TPS).在这种场景下,数据库防火墙在“小马大车”串联的情况下,高吞吐量和可扩展性的挑战有多严峻?下面两个例子充分展示:一、介绍一个数据库防火墙实际经典案例:数据库防火墙经典案例拓扑图在这个经典案例中,业务系统使用两套RAC节点进行负载均衡(双活)运行。在正常稳定运行的情况下,单组RAC节点的性能指标要求如下:当网络环境出现故障时,原本分布在两组RAC节点上的压力会集中到一个上数据库防火墙。会话量有压力,通讯包时延仍需保持在50微秒以内。另一个我想讲的案例是目前数据库防火墙面临的最高级的性能案例:数据库防火墙高端案例拓扑图在这个案例中,对整个数据库集群的性能要求是:等价对于单个DBFirewall设备,考虑到设备故障情况,需要支持的性能指标:3.高性能和扩展性解决方案通过介绍这两个经典案例和高端案例,相信不用多说,大家已经可以感觉数据库防火墙一定有一颗多么强大的心:低延迟、高吞吐量、高扩展能力。我们已经确立了这个目标,下一步就是制定具体的解决方案。核心技术点有四个:1、尽量减少对每条SQL操作的处理。众所周知,SQL语法分析非常耗时,需要专门优化。:基于词法和语法分析,对业务系统的SQL语句进行抽象,形成软分析结果,并对SQL语句进行序列化和标签化,只解析语法特征不同的SQL语句,对不同语法特征的SQL语句进行解析应用系统中不同的SQL语法特征是有限的,因此可以大大减少应用系统中SQL语句的语法分析量。2、无锁设计,支持高并发下的线性性能随着系统并发量的增加,互斥量将成为主要的性能瓶颈点;无锁的实现是必然的,需要吞吐量的时候可以通过异步处理来提高。3、低延迟网络处理技术随着吞吐量的增加,串联的网络处理开销将成为主要延迟;推荐使用基于IntelDPDK的透明网卡通信包处理技术,跳过操作系统内核协议栈的处理,实现低延迟。延迟。4.推荐使用经典的多进程机制。在关系型数据库领域,最经典的设计就是Oracle数据库的多进程架构。每个数据库连接会话对应一个独立的Oracle进程。这种机制带来了两个典型的优势:高可扩展性:随着硬件性能的提升,可以实现处理性能近乎线性的提升。安全性高:一个会话(进程)的异常处理不会影响其他会话(进程)。安华金和数据库防火墙是基于以上四大核心技术设计开发的成熟的数据库防火墙产品,并得到了社保、金融、运营商等高端行业的验证。至此,数据库防火墙的第二个自我修养——高性能和可扩展性介绍完毕。欢迎广大用户继续关注数据库防火墙的自我修养系列文章。名词术语解释[1]DPDK:全称DataPlaneDevelopmentKit,是Intel开发的x86芯片上的高性能网络处理基础库;它是一个数据包转发处理套件;适用于网络数据包分析、处理等操作;对于大数据包的转发,多核运行有一定的性能提升。
