1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

高质量的MySQL服务

高质量的MySQL服务

我是本际云服务器推荐网的小编小本本。随着互联网的高速发展,对业务系统的能力要求也越来越高,做为底层提供数据服务的MySQL数据库更是如此。高质量的MySQL服务时时提供高可用、高效、高稳定的能力,杜绝雪崩产生。

高质量的MySQL服务

服务高质量实现

为保证MySQL服务的高质量,本文采用限流、超时SQL拦截的手段来进行实现。但MySQL数据库本身或现有集群模式并没提供这种能力,因此需设计一个数据库中间件来提供这种能力,事前杜绝这些隐患,保证后端MySQL服务的高质量。

数据库中间件产品的主要功用模块如下:

  1. SQL解析器:对客户端发来的sql语句进行解析处理,以便进行sql的路由操作。
  2. SQL拦截器:对耗时超过阀值的SQL进行拦截,直接返回错误,不再路由至后端MySQL数据库。
  3. SQL路由器:对解析后的sql语句,依据读写分隔、分片配置信息,转发至相应后端MySQL节点。
  4. 限流器:限制后端MySQL节点的QPS能力,降低突增流量带来的影响。

限流

限流的方式有很多种,比如限制单位时间段内的调用量、系统的并发调用程度,或使用漏桶、令牌桶算法进行限流。本产品采用令牌桶算法进行业务的限流,以应对MySQL的高并发请求。

令牌桶算法:

  1. 以固定频率往桶中添加令牌,如果桶满,则丢弃。
  2. 请求到来时,从桶中取N个令牌。
  3. 如果桶中现有令牌数>=N,则执行请求,并销毁N个令牌。
  4. 如果桶中现有令牌数<N,则直接返回错误。

程序实现一个令牌桶算法模块,以MySQL最大QPS为频率向桶中添加令牌,以后每个数据库请求都需访问该模块,以判读该请求是否可以执行。

超时SQL拦截

超时SQL拦截的意思是,耗时的SQL语句直接返回错误,不再路由转发至后端节点。本产品以降低内存使用、提高效率为目的,采用位图算法进行超时SQL拦截。

位图算法(bitmap):

在一个结构中,用一个比特位来描述一个数据的状态,这种结构就称为位图。位图实际上是哈希表的一种变形,它的主要使用场景为:大数据滤重、大数据查询、定位大数据排序。它的主要优点为节省内存、位操作效率更快。

实现逻辑:

  1. 初始化位图模块,用一个容量为2^20的byte数组初始化为bitmap,占用内存128K,可记录百万类SQL。
  2. SQL请求过滤,每个SQL请求到来时,生成该类sql的数字标识符id,用该ID与bitmap进行位与运算,如果为0,则执行SQL,否则直接返回。
  3. 如果SQL运行时长超过阀值,并达到固定次数后,用该SQL的id与bitmap进行位或运算,在bitmap中记录该目录。
  4. 超时SQL异步入库,以便后期优化处理。

总结

本文以限流、超时SQL拦截两个手段来达到提高MySQL服务质量的目的。限流是为了拦截突增流量,保证Mysql服务的稳定;超时SQL拦截是为了提高MySQL服务效率,减低MySQL服务器资源使用率。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5993.html