问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

大厂使用数据库中间件解决什么问题?

创作时间:
作者:
@小白创作中心

大厂使用数据库中间件解决什么问题?

引用
1
来源
1.
https://www.cnblogs.com/wzh2010/p/15886947.html

在互联网大厂的业务场景中,业务流量的规模可以达到千万甚至亿级别。这时候简单的数据层连接和调用无法承接业务规模的需求。需要数据库中间件来管理一些中间桥接工作,类似 连接池、负载均衡、故障隔离、监控预警等工作,大幅度提高性能和稳定性,应对大流量的冲击。

1. 背景

互联网大厂的业务场景,业务流量的规模都可以达到千万甚至亿级别,这时候简单的数据层连接和调用无法承接业务规模的需求。需要数据库中间件来管理一些中间桥接工作,类似 连接池、负载均衡、故障隔离、监控预警等工作,大幅度提高性能和稳定性,应对大流量的冲击。下面我们具体来看看,我们使用数据库中间件具体解决哪些存在痛点的业务场景。

2. 数据库中间件解决的问题和实现方案

2.1 连接池管理

2.1.1 业务场景

客户端连接无限制,不可复用,不可隔离,业务间互相影响(如单个服务超载调用可能导致雪崩)

2.1.2 解决方案

归口到Proxy统一管理,提供连接池、连接数限制、重试、超时断开保护等能力。

如上,各业务线统一读写访问入口,所以业务连接池不会有

db1.read:3306,db2.write.com:3306

而是统一只有

db.all:3306

Service服务对db的访问,统一到一个入口上来了,由中间层来对请求进行智能路由、连接池管理、限流、重试、超时等工作。这种模式解决了业务直接管理数据实现层的问题。

2.2 读写分离机制

2.2.1 业务场景

需要为业务提供读写分离机制,而不是由业务花费精力去维护

2.2.2 解决方案

数据服务存在主从部署模式,业务在路有时Porxy自动区分读写,写路由到主存储服务(master),读路由到从存储服务(slave)

对业务是透明的,业务开发的同学无需关注读写的隔离。

这边可以看到,Proxy会自动将读和写操作分流,业务开发人员无需关注即可。

2.3 负载均衡策略

2.3.1 业务场景

需要为数据库分片提供负载均衡机制,如果多个读库甚至多个写库,需要一定的负载策略,类似VIP

2.3.2 解决方案

归口到Proxy统一管理,提供负载均衡能力,包括但不限于:

  • 轮询(Round Robin)
  • 来源 IP 哈希(IP Hash)
  • 最少连接(Least Connection)
  • 加权轮询(Weighted Round Robin)
  • 加权最少连接(Weighted Least Connection)
  • 随机策略

2.4 数据库分库分表sharding

2.4.1 业务场景

数据量比较大的场景下,需提供业务分库分表能力

2.4.2 解决方案

调用方屏蔽分表细节,跟单表操作一直。Proxy实现对分库分表的核心细节,不同大部分中间件会有一些限制(如带分表字段,不支持跨库join等)

从上面的图中可以看到,Proxy在逻辑表和物理表中间起桥接作用,开发同学不需要知道太多细节,也不需要改变访问的SQL脚本。

2.5 故障切换

2.5.1 业务场景

主/备发生异常、宕机等故障,需业务来处理故障切换

2.5.2 解决方案

屏蔽后端DB故障问题,自动故障切换

  1. master 故障,slave切换为master
  2. slave 故障,多副本模式下进行异常副本的驱逐
  3. slave 故障,单实例情况下读写都调度到master

2.6 安全保障等

常见问题 说明 解决方案

权限

  1. 账号权限放太开,没有最小化权限;
    2.机器迁移等都需手动申请权限较麻烦

  2. 通过user/pwds/ip等做权限控制,最小化权限。2. 机器迁移自动权限扩缩容。

安全
需业务自己处理sql注入,核心数据加密等问题

Proxy增加一层保护机制,包含sql注入,sql黑名单(如sleep/drop),数据加密等

日志审计
MySQL 数据被修改了,无法确认被谁修改的

提供便捷的日志审计,日志流控和动态变更,方便定位查询

2.7 监控和预警

2.7.1 业务场景

需业务根据自己需求搭建监控系统

2.7.2 解决方案

提供诸多监控和预警能力,包括但不限于:

  • 连接数监测
  • 慢查询数统计
  • 慢请求Sql采集
  • Sql语句统计
  • 索引命中率分析
  • 索引分析
  • DB负载
  • 所属主机性能分析

2.8 备份和恢复能力

2.8.1 业务场景

Proxy需要为业务提供备份能力,通过简单配置即可,避免业务花费较大精力关注

2.8.2 解决方案
  • 提供多种类备份策略,一键配置
  • 全量备份
  • 增量备份
  • 备份模式
  • 定时备份
  • 手动备份
  • 通过管控平台功能快速恢复数据
  • 指定范围恢复,精确到表
  • 指定时间恢复,精确到秒

参考以下备份流程:

3. 总结

本文介绍了互联网场景数据库中间件主要解决的业务难题,后续有时间我们详细介绍下业内评价较高的几种数据库中间件,如 ProxySQL、 DBProxy、TDDL 等。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号