服务热线:0755-86575703
Arkit ArkGate ArkProxy
MySQL中间件Arkproxy

在MySQL数据库架构中,不得不说的一个很重要的组件,就是中间件。它所起的作用就是,让上层业务对下层数据库的架构更透明,起到解藕的作用。同时在现在的云时代,下层数据库可以很好地将架构及节点关系隐藏起来,让业务感觉到只有一个节点的效果,提供了无感知的云服务。

中间件,起着一种承前启后的作用,相对前端业务而言,它承接了所有的请求。中间件收到请求之后,可以不做任何处理,转发给后端数据库,在后端数据库处理完成后,返回结果时,中间件再将消息原原本本转发给前端业务连接,其核心作用就是消息的转发。一款中间件的强大,主要表现在转发过程中做了哪些处理。例如:可以做一些过滤处理,将不安全的SQL请求拦截下来,仿佛变身成防火墙;也可以做审计,在任何时候都可以做到有据可查;当然,还可以做日志转储,通过日志分析,从而进一步优化数据库等。总之,一款强大的中间件,可以做安全、运维、审计及日志等方面的工作。

一款优秀的中间件,也具备友好的操作、丰富的配置参数、简单的安装步骤等特性,从运维人员的角度去考虑,能实现MySQL一以贯之的简单操作方法。如此才能受到市场的欢迎,才能受到运维人员的青睐,那么,Arkproxy就是这么一款中间件产品。

整体方案架构

从整体上看,图中加粗的线代表了正常业务的流量走向,中间经过了Arkproxy,起到了承前启后的作用,实现了流量转发的功能。而在这个过程中,有了中间件,对所有请求做了分析,通过智能的分发算法、权重配置等特性,将后面数据库的架构隐藏起来,实现了对前端业务的透明化,业务变得相对简单了不少,后端数据库的压力也就均衡了,这样能更好地利用资源,更高效地为业务服务。

在分发之余,Arkproxy也会对涉及的所有资源对象做管理,包括用户、业务请求SQL、后端数据库等。特别是对SQL语句做了详细的分析、归类、汇总,为后期的数据库运维、问题追查提供了极大保障。同时还不会对业务请求造成太大影响。

在Arkproxy的管理方面,提供了非常丰富的参数配置、操作命令等,可以用最高效的方式,在第一时间了解到系统运行的状态。

最上面的配置库,是用来存储一些配置文件中不太容易存储的内容,比如用户管理配置,针对每一个用户的连接数限制、数据库限制及连接数等都会存储到这个库里面。

核心特性

透明读写分离
一个好的中间件,有些功能是必备的,比如读写分离,通过中间件的配置,以及路由规则,可以将业务层的SQL请求通过规则,分发到后端相应节点上,这样相比在业务层通过不同端口,或者不同VIP等方式来区分读写请求,更加均衡,后端维护时,不会影响到业务。
兼容性
兼容性方面,包括两部分:
(1)兼容的是MySQL的协议,因为它所起的作用是转发,所以首先得认识两边的消息,才能在中间做到游刃有余。Arkproxy在这方面,已经支持了所有语句类型的协议。
(2)语法兼容,中间层处理的是所有的MySQL业务请求,承担的角色是可以做到无缝替换掉MySQL节点,所以首先要做到语法的大部分兼容,Arkproxy是可以100%兼容MySQL语法的,这在业内是屈指可数的。
友好性
Arkproxy在设计之初,就从用户使用角度做了充分考虑,Arkproxy做到了可以和原生MySQL分不清的地步,包括配置文件、启动方式、系统日志、操作命令等,堪称“最具亲切感”的MySQL中间件。
权重分发
Arkproxy可以根据后端数据库的权重,做到与之相对应的负载均衡,并且支持动态配置。这样在遇到紧急问题时,可以及时将服务降级,最大限度地提高数据库集群的可服务程度。 智能统计
(1)digest日志:Arkproxy在处理业务请求之余,在分析统计方面还做了很多事情,首先可以将所有语句格式化、参数化,然后将同一类语句做分析统计,找到第一次出现时间、最近出现的时间、查询时间总长度、查询最小时间、最大时间、影响行数等,最大程度地方便MySQL的运维,同时这些信息都可以入库,并且最大程度地减少对业务请求的影响,优先服务业务。
(2)全日志:Arkproxy在统计之后,为了可以支持全量日志的精确分析,做了与digest相关联的全日志统计,日志不会落到本地磁盘,即使请求量非常大,也不用担忧安全问题。全日志信息中,存储了每条SQL语句影响的数据行数、请求时间、执行时间、请求来源IP及用户名等信息,让我们对业务请求所做的操作一览无余。
Hint分发
Arkproxy支持了MySQL原生的Hint方法,只要在语句中指定/* !999999 route to write */等类似的语法,即可分发到指定角色对应的节点中。这样的语句在原生MySQL中会被认为是注释,所以直接被忽略了。也可以做到更细致的分发,可以指定到后端数据库节点,通过指定后端Server在配置中指定的名字即可。
配置Reload
在后端数据库发生故障或者切换之后,可以将中间件的配置做一次Reload操作,同步更新中间件的配置信息,这样新的请求就可以使用新的路由规则来做分发了。这个Reload操作可以用在后端数据库的高可用切换程序中,这样可以做到前后端同步处理。
消息压缩
Arkproxy支持在数据传输过程中,将消息做压缩处理,这样可以大大节省网络流量,减少带宽压力。最大程度地为业务程序服务。
从库接入
Arkproxy可以扮演一个MySQL主库的角色,直接在其上面挂从库,让下游在使用方面根本感觉不到这是一个中间件。
用户连接数限制及统计
Arkproxy可以配置每一个用户的连接数,如果超过了限制,则直接向这个用户的连接操作返回异常。也可以限制用户的查询范围,通过指定用户对应的数据库即可。在用户管理方面,还可以统计每个用户的连接数目,方便管理。
丰富的参数配置
对Arkproxy的管理,具有丰富的配置参数,实现更人性化、更具特性的Arkproxy管理,更好地服务业务。
连接池
Arkproxy对前端有强大的连接池支撑。针对后端的路由配置,对每一个路由都会建立一个长连接,这样极大地提高了中间件的分发能力。
失败重试
Arkproxy在执行请求失败后,还会做重试操作,提高中间层的处理能力。

深圳市彩云网影科技有限公司 电话: 0755-86575703 传真:0755-26615010
地址: 深圳市南山区深南大道9030号世纪假日广场中心A座—瑞思中心14层13A05-13A07室(地铁罗宝线世界之窗站C1出口)