成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:請從并發(fā)壓力的角度分析下 MySQL 數(shù)據(jù)庫架構(gòu)是如何演進(jìn)的

數(shù)據(jù)庫 MySQL
你知道你連接的這個 MySQL 數(shù)據(jù)庫他到底能抗多大并發(fā)壓力嗎?如果 MySQL 數(shù)據(jù)庫扛不住壓力了,應(yīng)該如何演進(jìn)你知道嗎?

今天給大家分享一個知識點(diǎn),是關(guān)于 MySQL 數(shù)據(jù)庫架構(gòu)演進(jìn)的,因?yàn)楹芏嘈值芴焯旎?MySQL 做系統(tǒng)開發(fā),但是寫的系統(tǒng)都是那種低并發(fā)壓力、小數(shù)據(jù)量的,所以哪怕上線了也就是這么正常跑著而已。

但是你知道你連接的這個 MySQL 數(shù)據(jù)庫他到底能抗多大并發(fā)壓力嗎?如果 MySQL 數(shù)據(jù)庫扛不住壓力了,應(yīng)該如何演進(jìn)你知道嗎?

一般業(yè)務(wù)系統(tǒng)運(yùn)行流程圖

首先,我們先來看一個最最基礎(chǔ)的 Java 業(yè)務(wù)系統(tǒng)連接數(shù)據(jù)庫運(yùn)行的架構(gòu),其實(shí)簡單來說,我們平時都是用 SpringBoot+SSM 技術(shù)棧開發(fā)一個 Java 業(yè)務(wù)系統(tǒng)的,用 Spring Boot 內(nèi)嵌 Tomcat 就可以對外提供 Http 接口了。

然后最多現(xiàn)在會加上 Nacos+Dubbo 調(diào)用別的系統(tǒng)接口,數(shù)據(jù)全部靠連接 MySQL 數(shù)據(jù)庫進(jìn)行 crud 就可以了。

如下圖:

上面那種架構(gòu)的系統(tǒng),估計(jì)就是很多兄弟日常做的最多的系統(tǒng)架構(gòu)了,有的兄弟稍微做的高大上一點(diǎn),大概來說,可能就是會加入一些 ES、Redis、RocketMQ 一類的中間件簡單使用一下。

但是大致來說也就這么回事了,那么還是回歸主題,大家知道你上述那種系統(tǒng)下,他連接的數(shù)據(jù)庫能抗多大壓力嗎?

一臺 4 核 8G 的機(jī)器能扛多少并發(fā)量呢?

說實(shí)話,要解決這個問題,一般來說,不是先聊數(shù)據(jù)能抗多少壓力,因?yàn)橥皇菙?shù)據(jù)庫先去抗高并發(fā),而是你連接數(shù)據(jù)庫的 Web 系統(tǒng)得先去抗高并發(fā)!也就是我們的 SpringBoot+SSM 那套業(yè)務(wù)系統(tǒng)能抗多高并發(fā)我們得先搞清楚!

所以要搞明白這個問題,就得先說一個主題,一般來說我們的 SpringBoot 應(yīng)用系統(tǒng)大致就是部署在 2 核 4G 或者 4 核 8G 的機(jī)器上,這個機(jī)器配置其實(shí)是很關(guān)鍵的。

所以這里直接告訴大家一個經(jīng)驗(yàn)值,即使說咱們?nèi)绻渴鸬氖且粋€ 4 核 8G 的機(jī)器,然后 SpringBoot 內(nèi)嵌的 Tomcat 默認(rèn)開了 200 個線程來處理請求,接著每個請求都要讀寫多次數(shù)據(jù)庫。

那么此時,大致來說你的一臺機(jī)器可以抗大概 500~1000 這個并發(fā)量,具體多少得看你的接口復(fù)雜度。

如下圖:

高并發(fā)來襲時數(shù)據(jù)庫會先被打死嗎?

所以其實(shí)一般來說,當(dāng)你的高并發(fā)壓力來襲的時候,通常不會是數(shù)據(jù)庫先扛不住了,而是你的業(yè)務(wù)系統(tǒng)所在機(jī)器抗不住了。

比如你部署了 2 臺機(jī)器,那么其實(shí)到每秒一兩千并發(fā)的時候,這兩臺機(jī)器基本上 CPU 負(fù)載都得飆升到 90% 以上 ,壓力很大,而且接口性能會開始往下掉很多了。

如下圖:

那么這個時候我們的數(shù)據(jù)庫壓力會如何呢?其實(shí)一般來說你的兩臺機(jī)器抗下每秒一兩千的請求的時候后,數(shù)據(jù)庫壓力通常也會到一個小瓶頸,為什么呢?

關(guān)鍵是你的業(yè)務(wù)系統(tǒng)處理每個業(yè)務(wù)請求的時候,他是會讀寫多次數(shù)據(jù)庫的,所以業(yè)務(wù)系統(tǒng)的一次請求可能會導(dǎo)致數(shù)據(jù)庫有多次請求,也正因?yàn)檫@樣,所以此時可能你的數(shù)據(jù)庫并發(fā)壓力會到幾千的樣子。

8 核 16G 的數(shù)據(jù)庫每秒大概可以抗多少并發(fā)壓力?

那么所以下一個問題來了,你的數(shù)據(jù)庫通常是部署在什么樣配置的機(jī)器上?

一般來說給大家說,數(shù)據(jù)庫的配置如果是那種特別低并發(fā)的場景,其實(shí) 2 核 4G 或者 4 核 8G 也是夠了,但是如果是常規(guī)化一點(diǎn)的公司的生產(chǎn)環(huán)境數(shù)據(jù)庫,通常會是 8 核 16G。

那么 8 核 16G 的數(shù)據(jù)庫每秒大概可以抗多少并發(fā)壓力?大體上來說,在幾千這個數(shù)量級。

因?yàn)檫@個具體能抗多少并發(fā)也得看你數(shù)據(jù)庫里的數(shù)據(jù)量以及你的 SQL 語句的復(fù)雜度,所以一般來說 8 核 16G 的機(jī)器,大概也就是抗到每秒幾千并發(fā)就差不多了。

量再大基本就扛不住了,因?yàn)橥竭@個量級下,數(shù)據(jù)庫的 CPU、內(nèi)存、網(wǎng)絡(luò)、IO 的負(fù)載基本都很高了,尤其是 CPU,可能至少也在百分之七八十了。

如下圖:

數(shù)據(jù)庫架構(gòu)可以從哪些方面優(yōu)化?

根據(jù)業(yè)務(wù)系統(tǒng)拆分多個數(shù)據(jù)庫機(jī)器優(yōu)化方案

那么接著說,如果到了這個并發(fā)壓力之下,通常來說可以如何進(jìn)行數(shù)據(jù)庫架構(gòu)的優(yōu)化呢?

其實(shí)也簡單,我們完全可以加機(jī)器,把數(shù)據(jù)庫部署到多臺機(jī)器上去。因?yàn)橥ǔ碚f,我們的一個數(shù)據(jù)庫里會放很多業(yè)務(wù)系統(tǒng)的 db 和 tables,所以首先就是可以按照業(yè)務(wù)系統(tǒng)來進(jìn)行拆分。

比如說多加一臺機(jī)器,再部署一個數(shù)據(jù)庫,然后這里放一部分業(yè)務(wù)系統(tǒng)的 db 和 tables,老數(shù)據(jù)庫機(jī)器放另外一部分業(yè)務(wù)系統(tǒng)的 db 和 tables,此時一下子就可以緩解老數(shù)據(jù)庫機(jī)器的壓力了。

如下圖:

讀寫分離架構(gòu)優(yōu)化方案

那么接著問題來了,如果說并發(fā)壓力繼續(xù)提升,導(dǎo)致拆分出去的兩臺數(shù)據(jù)庫壓力越來越大了呢?

此時可以上一招,叫做讀寫分離,就是說給每個數(shù)據(jù)庫掛一個從庫,讓主數(shù)據(jù)庫基于 binlog 數(shù)據(jù)更新日志同步復(fù)制給從數(shù)據(jù)庫,讓主從數(shù)據(jù)庫保持?jǐn)?shù)據(jù)一致。

然后我們的系統(tǒng)其實(shí)可以往主庫里寫入,在從庫里查詢,此時就又可以緩解原來的主數(shù)據(jù)庫的壓力了。

如下圖:

分庫分表架構(gòu)優(yōu)化方案

再往下說,如果說即使是給主數(shù)據(jù)庫掛了從庫,然后接著并發(fā)壓力繼續(xù)提升,讓我們的主數(shù)據(jù)庫寫入壓力過大,每秒幾千寫入,又要扛不住了呢?

此時就只能上終極方案,分庫分表了,就是把主庫拆分為多個庫,每個庫里放一個表的部分?jǐn)?shù)據(jù),然后用多個主庫抗高并發(fā)寫入壓力,這樣就可以再次分散我們的壓力了。

如下圖所示:

總結(jié)

好了,今天分享的知識就到這里了,其實(shí)我們的數(shù)據(jù)庫架構(gòu)演進(jìn)基本上就是按照今天說的這個順序和思路逐步逐步的演進(jìn)的。

剛開始你單臺數(shù)據(jù)庫機(jī)器抗幾千并發(fā)扛不住了,就按照業(yè)務(wù)系統(tǒng)拆分多個數(shù)據(jù)庫機(jī)器,然后再扛不住了,就上主從架構(gòu)分?jǐn)傋x寫壓力,再扛不住了就分庫分表,多個機(jī)器抗數(shù)據(jù)庫寫入壓力,最后總是可以用數(shù)據(jù)庫架構(gòu)抗住高并發(fā)壓力的。

責(zé)任編輯:武曉燕 來源: 石杉的架構(gòu)筆記
相關(guān)推薦

2018-10-22 14:28:26

面試官數(shù)據(jù)公司

2018-04-27 14:46:07

面試簡歷程序員

2021-09-27 07:11:18

MySQLACID特性

2015-08-13 10:29:12

面試面試官

2024-12-25 15:44:15

2024-05-11 15:11:44

系統(tǒng)軟件部署

2024-02-04 10:08:34

2024-09-19 08:10:54

2020-10-15 06:26:24

高并發(fā)場景冰河

2023-02-08 07:04:20

死鎖面試官單元

2020-09-24 06:39:58

MySQL數(shù)據(jù)庫

2024-10-15 10:00:06

2024-12-30 13:58:14

2022-03-30 07:28:24

MySQL數(shù)據(jù)庫ACID

2010-08-12 16:28:35

面試官

2021-07-06 07:08:18

管控數(shù)據(jù)數(shù)倉

2021-11-08 15:59:01

MyBatis關(guān)聯(lián)開發(fā)

2023-12-19 09:24:22

LinuxBIOSUEFI

2025-04-07 04:25:00

JDBCAPI加載器

2019-06-06 10:55:02

JDK高并發(fā)框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 在线观看h视频 | 日日天天 | 美国一级黄色片 | 一区二区三区免费 | 成年视频在线观看 | 欧美一区二区三区视频 | 国产一区二区影院 | 精品日韩在线 | www精品美女久久久tv | 天天操天天插 | 国产人成精品一区二区三 | 国产成人精品一区二区三区四区 | 性欧美xxxx | 国产91久久久久久 | 国产精品视频网站 | 国产精品久久久久久吹潮 | 一区二区三区四区国产 | 欧美黑人狂野猛交老妇 | 天天天操操操 | 日韩中文字幕一区二区 | 97精品国产97久久久久久免费 | 成人一区二区三区 | 精品欧美一区二区中文字幕视频 | 国产精品一区在线观看 | 国产一区二区三区四区在线观看 | 毛片在线看片 | 亚洲二区在线 | 久草网在线视频 | 成人在线视频观看 | 中文字幕一区二区三区日韩精品 | 亚洲欧美中文日韩在线v日本 | 91网站视频在线观看 | 二区亚洲 | 日韩中文久久 | 日韩成人一区 | 成av在线 | 日本三级全黄三级三级三级口周 | 亚洲成人三区 | 亚洲成人国产综合 | 久久精品亚洲精品国产欧美 | 美日韩中文字幕 |