日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库架构的一切

發布時間:2024/3/26 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库架构的一切 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、基本概念

二、數據庫架構設計思路

(1)可用性

(2)讀性能

(3)一致性

(4)擴展性

?


一、基本概念

概念一“單庫”

?

概念二“分片”


分片解決的是“數據量太大”的問題,也就是通常說的“水平切分”。

一旦引入分片,勢必有“數據路由”的概念,哪個數據訪問哪個庫。

?

路由規則通常有3種方法:

(1)范圍:range

優點:簡單,容易擴展

缺點:各庫壓力不均(新號段更活躍)

(2)哈希:hash

優點:簡單,數據均衡,負載均勻

缺點:遷移麻煩(2庫擴3庫數據要遷移)

(3)路由服務:router-config-server

優點:靈活性強,業務與路由算法解耦

缺點:每次訪問數據庫前多一次查詢

?

大部分互聯網公司采用的方案二:哈希分庫,哈希路由

?

概念三“分組”


分組解決“可用性”問題,分組通常通過主從復制的方式實現。

?

互聯網公司數據庫實際軟件架構是:又分片,又分組(如下圖)

?


二、數據庫架構設計思路

數據庫軟件架構師平時設計些什么東西呢?至少要考慮以下四點:

(1)如何保證數據可用性

(2)如何提高數據庫讀性能(大部分應用讀多寫少,讀會先成為瓶頸)

(3)如何保證一致性

(4)如何提高擴展性


2.1如何保證數據的可用性?

解決可用性問題的思路是=>冗余

如何保證站點的可用性?復制站點,冗余站點

如何保證服務的可用性?復制服務,冗余服務

如何保證數據的可用性?復制數據,冗余數據

?

數據的冗余,會帶來一個副作用=>引發一致性問題(先不說一致性問題,先說可用性)

?

如何保證數據庫“讀”高可用?

冗余讀庫


冗余讀庫帶來的副作用?讀寫有延時,可能不一致

上面這個圖是很多互聯網公司mysql的架構,寫仍然是單點,不能保證寫高可用。

?

如何保證數據庫“寫”高可用?

冗余寫庫


采用雙主互備的方式,可以冗余寫庫

帶來的副作用?雙寫同步,數據可能沖突(例如“自增id”同步沖突),如何解決同步沖突,有兩種常見解決方案:

(1)兩個寫庫使用不同的初始值,相同的步長來增加id:1寫庫的id為0,2,4,6...;2寫庫的id為1,3,5,7…

(2)不使用數據的id,業務層自己生成唯一的id,保證數據不沖突

?

58同城沒有使用上述兩種架構來做讀寫的“高可用”,58同城采用的是“雙主當主從用”的方式


仍是雙主,但只有一個主提供服務(讀+寫),另一個主是“shadow-master”,只用來保證高可用,平時不提供服務。

master掛了,shadow-master頂上(vip漂移,對業務層透明,不需要人工介入)

這種方式的好處:

1)讀寫沒有延時

2)讀寫高可用

不足:

1)不能通過加從庫的方式擴展讀性能

2)資源利用率為50%,一臺冗余主沒有提供服務

?

那如何提高讀性能呢?進入第二個話題,如何提供讀性能。


2.2如何擴展讀性能?

提高讀性能的方式大致有三種,第一種是建立索引。這種方式不展開,要提到的一點是,不同的庫可以建立不同的索引


寫庫不建立索引;

線上讀庫建立線上訪問索引,例如uid;

線下讀庫建立線下訪問索引,例如time;

?

第二種擴充讀性能的方式是,增加從庫,這種方法大家用的比較多,但是,存在兩個缺點:

(1)從庫越多,同步越慢

(2)同步越慢,數據不一致窗口越大(不一致后面說,還是先說讀性能的提高)

?

58同城沒有采用這種方法提高數據庫讀性能(沒有從庫),采用的是增加緩存。常見的緩存架構如下:


上游是業務應用,下游是主庫,從庫(讀寫分離),緩存。

?

58同城的玩法是:服務+數據庫+緩存一套


業務層不直接面向db和cache,服務層屏蔽了底層db、cache的復雜性。為什么要引入服務層,今天不展開,58采用了“服務+數據庫+緩存一套”的方式提供數據訪問,用cache提高讀性能。

?

不管采用主從的方式擴展讀性能,還是緩存的方式擴展讀性能,數據都要復制多份(主+從,db+cache),一定會引發一致性問題。


2.3如何保證一致性?

主從數據庫的一致性,通常有兩種解決方案:

(1)中間件


如果某一個key有寫操作,在不一致時間窗口內,中間件會將這個key的讀操作也路由到主庫上。

這個方案的缺點是,數據庫中間件的門檻較高(百度,騰訊,阿里,360等一些公司有,當然58也有)

(2)強制讀主


58的“雙主當主從用”的架構,不存在主從不一致的問題。

?

第二類不一致,是db與緩存間的不一致


常見的緩存架構如上,此時寫操作的順序是:

(1)淘汰cache

(2)寫數據庫

讀操作的順序是:

(1)讀cache,如果cache hit則返回

(2)如果cache miss,則讀從庫

(3)讀從庫后,將數據放回cache

?

在一些異常時序情況下,有可能從【從庫讀到舊數據(同步還沒有完成),舊數據入cache后】,數據會長期不一致。

?

解決辦法是“緩存雙淘汰”,寫操作時序升級為:

(1)淘汰cache

(2)寫數據庫

(3)在經驗“主從同步延時窗口時間”后,再次發起一個異步淘汰cache的請求

?

這樣,即使有臟數據如cache,一個小的時間窗口之后,臟數據還是會被淘汰。帶來的代價是,多引入一次讀miss(成本可以忽略)。

?

除此之外,58同城的最佳實踐之一是:建議為所有cache中的item設置一個超時時間。

?

說完一致性,最后一個話題是擴展性。


2.4如何提高數據庫的擴展性?

原來用hash的方式路由,分為2個庫,數據量還是太大,要分為3個庫,勢必需要進行數據遷移,58同城有一個很帥氣的“數據庫秒級擴容”方案。

如何秒級擴容?

首先,我們不做2庫變3庫的擴容,我們做2庫變4庫(庫加倍)的擴容(未來4->8->16)

服務+數據庫是一套(省去了緩存)

數據庫采用“雙主”的模式。

?

擴容步驟:

第一步,將一個主庫提升

第二步,修改配置,2庫變4庫(原來MOD2,現在配置修改后MOD4)

擴容完成

原MOD2為偶的部分,現在會MOD4余0或者2

原MOD2為奇的部分,現在會MOD4余1或者3

數據不需要遷移,同時,雙主互相同步,一遍是余0,一邊余2,兩邊數據同步也不會沖突,秒級完成擴容!

?

最后,要做一些收尾工作:

(1)將舊的雙主同步解除

(2)增加新的雙主(雙主是保證可用性的,shadow-master平時不提供服務)

(3)刪除多余的數據(余0的主,可以將余2的數據刪除掉)


這樣,秒級別內,我們就完成了2庫變4庫的擴展。


OK,今天主要分享了58同城,數據庫軟件架構上:

(1)如何保證數據可用性

(2)如何提高數據庫讀性能

(3)如何保證數據一致性

(4)如何進行秒級擴容

希望大家有收獲,謝謝大家!

原文出自:數據庫軟件架構設計些什么

?

總結

以上是生活随笔為你收集整理的数据库架构的一切的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人91免费视频 | 尤物视频最新网址 | 国产剧情久久 | 色欲久久久天天天精品综合网 | 男性影院| 涩涩五月天 | 五月婷婷婷婷 | 精品午夜一区二区三区在线观看 | 国产成人精品久久二区二区 | 激情五月在线 | 欧美做爰全过程免费观看 | 五月天激情丁香 | 日日操天天操夜夜操 | xxxxⅹxxxhd日本8hd | 久久久经典 | 亚洲天天影视 | 免费成人美女在线观看 | 欧美最猛性xxxx | 成人免费毛片嘿嘿连载视频 | 日本成人在线不卡 | 一区视频网站 | 国产露脸无套对白在线播放 | 涩涩在线观看 | 日韩成人在线视频 | 欧美性猛交乱大交xxxx | av软件在线观看 | 亚洲蜜桃视频 | 成人高清视频免费观看 | 一边吃奶一边摸做爽视频 | 美女视频一区二区三区 | 亚洲插插| 日韩在线视频在线 | 久久国精品| 亚洲在线视频观看 | 国产思思99re99在线观看 | 欧美日韩中文在线 | 牛牛影视免费观看 | 美女打屁股网站 | 女人囗交吞精囗述 | 超碰98在线观看 | 97超碰人 | 国产特级毛片aaaaaa | 日韩免费黄色 | 天天搞天天干 | 特级淫片裸体免费看冫 | 成人久久久久久 | julia一区二区中文久久97 | 一级黄色片网站 | 强行糟蹋人妻hd中文字幕 | 亚洲国产精品一区二区三区 | 伊人久久大香线 | 在线播放成人av | 亚洲激情文学 | 黄色1级大片 | 亚洲AV无码成人精品区东京热 | 久久传媒| 欧美 日韩 国产 成人 在线 | 亚洲精品久久久狠狠狠爱 | 午夜免费高清视频 | 性色一区二区 | 精品国产aⅴ一区二区三区四川人 | www.国产一区二区 | 一区二区三区四区影院 | 8x8x成人 | 亚洲一区二区蜜桃 | 日韩欧美国产精品综合嫩v 国产小毛片 | 亚洲AV永久无码国产精品国产 | 可以直接在线观看的av | 亚洲日本va中文字幕 | 少妇无内裤下蹲露大唇视频 | www操| 日本少妇bbwbbw精品 | 亚洲一区二区三区电影 | 中文字幕乱码无码人妻系列蜜桃 | 亚洲精品日韩丝袜精品 | 级毛片 | 黄色av高清 | 成人wwwww免费观看 | 亚洲狼人天堂 | 91久久精品日日躁夜夜躁欧美 | 久久久久久国产精品免费免费 | 欧美日韩一区二区三区 | 亚洲第一区在线播放 | 午夜视频在线免费观看 | 日韩免费观看视频 | 52av在线| 奇米影视久久 | 76少妇精品导航 | www日本黄色 | 一级免费看片 | 久久91精品国产 | 国产精品成av人在线视午夜片 | 国产精品一品二区三区的使用体验 | 在线视频免费播放 | 国产明星换脸xxxx色视频 | 五月天婷婷在线播放 | 少妇学院在线观看 | 成人在线观看网址 | 天天操夜夜爱 |