iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么解决数据库分库分表无限扩容问题
  • 719
分享到

怎么解决数据库分库分表无限扩容问题

2024-04-02 19:04:59 719人浏览 泡泡鱼
摘要

这篇文章主要讲解了“怎么解决数据库分库分表无限扩容问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决数据库分库分表无限扩容问题”吧!单体应用每个创业

这篇文章主要讲解了“怎么解决数据库分库分表无限扩容问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决数据库分库分表无限扩容问题”吧!

单体应用

每个创业公司基本都是从类似 SSMssh 这种架构起来的,没什么好讲的,基本每个程序员都经历过。

RPC 应用

当业务越来越大,我们需要对服务进行水平扩容,扩容很简单,只要保证服务是无状态的就可以了,如下图:

怎么解决数据库分库分表无限扩容问题

当业务又越来越大,我们的服务关系错综复杂,同时,有很多服务访问都是不需要连接 DB 的,只需要连接缓存即可,那么就可以做成分离的,减少 DB  宝贵的连接。

如下图:

怎么解决数据库分库分表无限扩容问题

我相信大部分公司都是在这个阶段。dubbo 就是为了解决这个问题而生的。

分库分表

如果你的公司产品很受欢迎,业务继续高速发展,数据越来越多,sql 操作越来越慢,那么数据库就会成为瓶颈。

那么你肯定会想到分库分表,不论通过 ID Hash 或者 Range 的方式都可以,如下图:

怎么解决数据库分库分表无限扩容问题

这下应该没问题了吧。任凭你用户再多,并发再高,我只要无限扩容数据库,无限扩容应用,就可以了。

这也是本文的标题,分库分表就能解决无限扩容吗?实际上,像上面的架构,并不能解决。

其实,这个问题和 rpc 的问题有点类似:数据库连接过多!

通常,我们的 RPC 应用由于是使用中间件进行数据库访问,应用实际上是不知道到底要访问哪个数据库的,访问数据库的规则由中间件决定,例如 Sharding  JDBC。

这就导致,这个应用必须和所有的数据库连接,就像我们上面的架构图一样,一个 RPC 应用需要和 3 个 Mysql 连接。

如果是 30 个 RPC 应用,每个 RPC 的数据库连接池大小是 8,每个 mysql 需要维护 240 个连接。

我们知道,MySQL 默认连接数是 100,最大连接数是 16384,也就是说,假设每个应用的连接池大小是 8 ,超过 2048  个应用就无法再继续连接了,也就无法继续扩容了。

注意,由于每个物理库有很多逻辑库,再加上微服务运动如火如荼,2048 并没有看起来那么大。

也许你说,我可以通过前面加一个 Proxy 来解决连接数的问题,实际上,代理的性能也会成为问题,为什么?

代理的连接数也是不能超过 16384 的,如果并发超过 16384,变成 163840,那么 Proxy 也解决不了问题。

怎么办?让我们再看看上面的架构图:

怎么解决数据库分库分表无限扩容问题

我们发现,问题是出在“每个 RPC 应用都要连所有的库”,导致扩容应用的同时,每个数据库连接数就要增加。

就算增加数据库,也不能解决连接数的问题。那怎么办呢?

单元化

单元化,听起来高大上,通常在一些 XXX 大会上,分享“关于两地三中心”,“三地五中心”,“异地多活”等等牛逼的名词的时候,单元化也会一起出现。

这里我们不讨论那么牛逼的,就只说“数据库连接数过多” 的问题。实际上,思路很简单:我们不让应用连接所有的数据库就可以了。

假设我们根据 Range 分成了 10 个库,现在有 10 个应用,我们让每个应用只连一个库,当应用增多变成 20 个,数据库的连接不够用了,我们就将  10 个库分成 20 个库。

这样,无论你应用扩容到多少个,都可以解决数据库连接数过多的问题。

注意:做这件事的前提是,你必须保证,访问你这个应用的 Request 请求的数据库一定是在这个应用的。

换个说法,当用户从 DNS 那里进来的时候,就知道自己要去那个应用了,所以,规则在 DNS  之前就定好了,虽然这有点夸张,但肯定在进应用之前就知道要去哪个库了。

所以,这通常需要一个规则,例如通过用户 ID Hash,由配置中心广播 Hash 规则。

这样,所有的组件都能保持一致的规则,从而正确的访问到数据库,如下图:

怎么解决数据库分库分表无限扩容问题

感谢各位的阅读,以上就是“怎么解决数据库分库分表无限扩容问题”的内容了,经过本文的学习后,相信大家对怎么解决数据库分库分表无限扩容问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么解决数据库分库分表无限扩容问题

本文链接: https://www.lsjlt.com/news/85367.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么解决数据库分库分表无限扩容问题
    这篇文章主要讲解了“怎么解决数据库分库分表无限扩容问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决数据库分库分表无限扩容问题”吧!单体应用每个创业...
    99+
    2022-10-19
  • oracle数据库表空间扩容的问题怎么解决
    本文小编为大家详细介绍“oracle数据库表空间扩容的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“oracle数据库表空间扩容的问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.查看表...
    99+
    2023-07-05
  • 分库分表扩容怎么实现平滑数据迁移
    本篇内容主要讲解“分库分表扩容怎么实现平滑数据迁移”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分库分表扩容怎么实现平滑数据迁移”吧!一、背景2020年,&nb...
    99+
    2022-10-19
  • 数据库分库分表后如何解决主键唯一的问题
    本篇文章给大家分享的是有关数据库分库分表后如何解决主键唯一的问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在此之前我们介绍了数据库的分库分...
    99+
    2022-10-19
  • 数据库分库分表之后,你是如何解决事务问题?
    我们需要接受失望,因为它是有限的;我们不会失去希望,因为它是无穷的。 一、概述 随着时间和业务的发展,数据库中表的数据量会越来越大,相应地,数据操作,增删改查的开销也会越来越大。因此,把其中一些大表进行拆分到多个数据库中的多张表中...
    99+
    2017-12-10
    数据库分库分表之后,你是如何解决事务问题?
  • Mysql怎么数据库平滑扩容解决高并发和大数据量问题
    本篇内容主要讲解“Mysql怎么数据库平滑扩容解决高并发和大数据量问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql怎么数据库平滑扩容解决高并发和大数据量问题”吧!1 停机方案发布公告...
    99+
    2023-06-30
  • mybatis无参数分页问题怎么解决
    当使用MyBatis进行无参数分页查询时,可以通过在SQL查询语句中使用LIMIT关键字来实现分页。具体步骤如下:1. 在Mappe...
    99+
    2023-08-09
    mybatis
  • 数据库的读写分离能解决什么问题
    数据库的读写分离能解决什么问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。有一些技术同学可能对于“读写分离”了解不多,认为数...
    99+
    2022-10-19
  • Shard-Jdbc数据库扩容的场景和问题的解决方法
    这篇文章主要介绍“Shard-Jdbc数据库扩容的场景和问题的解决方法”,在日常操作中,相信很多人在Shard-Jdbc数据库扩容的场景和问题的解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shard...
    99+
    2023-06-02
  • 怎么解决ASP无法更新ACCESS数据库的问题
    怎么解决ASP无法更新ACCESS数据库的问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面来看看这个ASP例子,相信经常接触ASP的人会时常碰到这个问题:明明自己的代...
    99+
    2023-06-17
  • 详解Mysql数据库平滑扩容解决高并发和大数据量问题
    目录1 停机方案2 停写方案3 平滑扩容之双写方案(中小型数据)4 平滑扩容之2N方案大数据量问题解决4.1 扩容问题4.2 解决方案4.3 双主架构思想4.4 环境部署5 数据库秒...
    99+
    2022-11-13
  • 怎么解决数据库ORA-00837问题
    本篇内容介绍了“怎么解决数据库ORA-00837问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 解决...
    99+
    2022-10-19
  • 怎么解决数据库变慢问题
    这篇文章主要介绍“怎么解决数据库变慢问题”,在日常操作中,相信很多人在怎么解决数据库变慢问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决数据库变慢问题”的疑惑有所帮...
    99+
    2022-10-18
  • 怎么解决数据库ERROR 2003问题
    这篇文章主要介绍“怎么解决数据库ERROR 2003问题”,在日常操作中,相信很多人在怎么解决数据库ERROR 2003问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么...
    99+
    2022-10-19
  • Navicat配置mysql数据库用户权限问题怎么解决
    本篇内容介绍了“Navicat配置mysql数据库用户权限问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用数据库的时候就会遇到有...
    99+
    2023-07-05
  • 怎么解决关于数据库insert问题
    本篇内容主要讲解“怎么解决关于数据库insert问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决关于数据库insert问题”吧!早上对几个10几G,上...
    99+
    2022-10-18
  • 怎么解决数据库LATCH:ROW CACHE OBJECTS问题
    这篇文章主要讲解了“怎么解决数据库LATCH:ROW CACHE OBJECTS问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决数据库LATCH:...
    99+
    2022-10-19
  • 怎么解决数据库ORA-12519 TNS问题
    这篇文章主要讲解了“怎么解决数据库ORA-12519 TNS问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决数据库ORA-12519 TNS问题”...
    99+
    2022-10-19
  • Oracle数据库rm -rf问题怎么解决
    本篇内容主要讲解“Oracle数据库rm -rf问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle数据库rm -rf问题怎么解决”吧!事故背景安排一个妹子在一台生产服务器上安...
    99+
    2023-06-02
  • LINQ映射数据库问题怎么解决
    这篇文章主要讲解了“LINQ映射数据库问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LINQ映射数据库问题怎么解决”吧!LINQ映射数据库Linq映射数据库文件中常有 priva...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作