国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

究竟為什么要引入數據庫中間件

數據庫 開發工具
當數據庫水平切分,base-service層獲取db數據過于復雜,成為通用痛點的時候,就應該抽象出數據庫中間件,簡化數據獲取過程,提高數據獲取效率,向上游屏蔽底層的復雜性。

不少朋友經常會問我以下問題:

  • 58到家有沒有使用數據庫中間件
  • 使用了什么數據庫中間件,是自研,還是第三方
  • 怎么實現的,是基于客戶端的中間件,還是基于服務端的中間件
  • 使用中間件后,join/子查詢/集函數/事務等問題是怎么解決的

你是不是也有類似的疑問?

然而,“究竟為什么要引入數據庫中間件”卻很少有人問及。 “架構師之路”文章思路,以解決“為什么”為優先,借著近期撰寫互聯網分層架構系列文章,講一講這個核心問題:

  • 究竟為什么要引入數據庫中間件

 

經過連續分層架構演進,DAO層,基礎數據服務化,通用業務服務化,前后端分離之后,一個業務系統的后端結構如上:

  • web-view層通過http接口,從web-data獲取json數據(前后端分離)
  • web-data層通過RPC接口,從biz-service獲取數據(通用業務服務)
  • biz-service層通過RPC接口,從base-service獲取數據(基礎數據服務)
  • base-service層通過DAO,從db獲取數據(DAO)
  • db存儲數據

隨著時間的推移,數據量會越來越大,base-service通過DAO來訪問db的性能會越來越低,需要開始考慮對db進行水平切分,一旦db進行水平切分,原來很多SQL可以支持的功能,就需要base-service層來進行特殊處理:

  • 有些數據需要路由到特定的水平切分庫
  • 有些數據不確定落在哪一個水平切分庫,就需要訪問所有庫
  • 有些數據需要訪問全局的庫,拿到數據的全局視野,到service層進行額外處理

更具體的,對于前臺高并發的業務,db水平切分后,有這么幾類典型的業務場景及應對方案。特別強調一下,此處應對的是“前臺”“高并發”“db水平切分”的場景,對于后臺的需求,將通過前臺與后臺分離的架構處理,不在此處討論。

一:partition key上的單行查詢

典型場景:通過uid查詢user

場景特點:

  • 通過patition key查詢
  • 每次只返回一行記錄

解決方案:base-service層通過patition key來進行庫路由

 

如上圖:

  • user-service底層user庫,分庫patition key是uid
  • uid上的查詢,user-service可以直接定位到庫

二、非patition key上的單行查詢

典型場景:通過login_name查詢user

場景特點:

  • 通過非patition key查詢
  • 每次只返回一行記錄

解決方案1:base-service層訪問所有庫

 

如上圖:

  • user-service通過login_name先查全庫
  • 結果集在user-service再合并,最終返回一條記錄

解決方案2:base-service先查mapping庫,再通過patition key路由

 

如上圖:

  • 新建mapping庫,記錄login_name到uid的映射關系
  • 當有非 patition key的查詢時,先通過login_name查詢uid
  • 再通過patition key進行路由,最終返回一條記錄

解決方案3:基因法

關于“基因法”解決非patition key上的查詢需求詳見《分庫后,非patition key上訪問的多種解決辦法》。

三、patition key上的批量查詢

典型場景:用戶列表uid上的IN查詢

場景特點:

  • 通過patition key查詢
  • 每次返回多行記錄

解決方案1:base-service層訪問所有庫,結果集到base-service合并

解決方案2:base-service分析路由規則,按需訪問

 

如上圖:

  • base-service根據路由規則分析,判斷出有些數據落在庫1,有些數據落在庫2
  • base-service按需訪問相關庫,而不是訪問全庫
  • base-service合并結果集,返回列表數據

四、非patition key上的夸庫分頁需求

關于分庫后,夸庫分頁的查詢需求,詳見《業界難題,夸庫分頁的四種方案》。

五、其他需求…

本文寫到這里,上述一、二、三、四、五其實都不是重點,base-service層通過各種各樣的奇技淫巧,能夠解決db水平切分后的數據訪問問題,只不過:

base-service層的復雜度提高了

數據的獲取效率降低了

當需要進行db水平切分的base-service越來越多以后,此時分層架構會變成下面這個樣子:

 

底層的復雜性會擴散到各個base-service,所有的base-service都要關注:

  • patition key路由
  • 非patition key查詢,先mapping,再路由
  • 先全庫,再合并
  • 先分析,再按需路由
  • 夸庫分頁處理

這個架構圖是不是看上去很別扭?如何讓數據的獲取更加高效快捷呢?

數據庫中間件的引入,勢在必行。 

 

這是“基于服務端”的數據庫中間件架構圖:

  • base-service層,就像訪問db一樣,訪問db-proxy,高效獲取數據
  • 所有底層的復雜性,都屏蔽在db-proxy這一層 

 

這是“基于客戶端”的數據庫中間件架構圖:

  • base-service層,通過db-proxy.jar,高效獲取數據
  • 所有底層的復雜性,都屏蔽在db-proxy.jar這一層

 

 

結論:

當數據庫水平切分,base-service層獲取db數據過于復雜,成為通用痛點的時候,就應該抽象出數據庫中間件,簡化數據獲取過程,提高數據獲取效率,向上游屏蔽底層的復雜性。 

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:龐桂玉 來源: 架構師之路
相關推薦

2017-11-27 05:06:42

數據庫中間件cobar

2017-11-27 05:36:16

數據庫中間件TDDL

2017-12-01 05:04:32

數據庫中間件Atlas

2018-02-24 19:37:33

Java8數據庫中間件

2017-05-23 18:55:05

mysql-proxy數據庫架構

2011-08-10 13:03:58

CJDBC數據庫集群

2022-09-16 10:14:41

消息順序性分布式架構

2017-07-26 09:41:28

MyCATSQLMongoDB

2017-07-18 17:35:16

數據庫MyCATPreparedSta

2017-11-30 08:56:14

數據庫中間件架構師

2018-02-01 10:19:22

中間件服務器系統

2024-12-06 08:29:29

2017-11-27 06:01:37

數據庫中間件中間層

2017-12-01 05:40:56

數據庫中間件join

2017-12-11 13:30:49

Go語言數據庫中間件

2019-01-29 11:02:30

消息中間件Java互聯網

2017-07-18 17:07:40

數據庫 MyCATJoin

2009-01-20 10:45:55

Oracle數據庫中間件

2021-07-27 05:49:59

MySQL數據庫中間件

2020-10-15 08:34:32

數據庫中間件漫談
點贊
收藏

51CTO技術棧公眾號

成人国产在线看| 免费看污久久久| 性欧美video另类hd尤物| 亚洲摸摸操操av| 一区二区免费在线观看| 国产九九精品| 日韩精品不卡| 国产乱子伦视频一区二区三区| 加勒比海盗1在线观看免费国语版| 亚洲激情午夜| 777777777亚洲妇女| 福利片在线一区二区| 国产精品h片在线播放| 成人一区视频| 国产主播在线一区| 裸体一区二区三区| 99热久久这里只有精品| 高清成人在线观看| 成人伦理视频网站| 在线播放日韩导航| 日韩毛片免费视频一级特黄| 国产精品午夜国产小视频| 亚洲一级影院| 亚洲黄色av网址| 日韩大陆毛片av| 神马久久一区二区三区| 一区二区三区欧美在线| 18欧美亚洲精品| 国产亚洲精品精品国产亚洲综合| 91日本在线视频| 亚洲视频免费在线| 91啦中文在线| 久久久久久久国产精品视频| 一道本一区二区| 国产视频1区2区3区| 欧美一区二区三区喷汁尤物| 精品国产一区二区三区久久久蜜臀 | 欧美专区一区| 亚洲欧美色婷婷| 九九精品调教| 欧美精品情趣视频| 日韩福利视频一区| 亚洲综合中文字幕在线| 在线观看17c| 日韩成人综合网| 91精品国产一区| 韩国在线一区| 欧美a级黄色大片| 亚洲精品一二三| 中文字幕伦理免费在线视频| 国产一区二区激情| 色小子综合网| 天堂av在线中文| 一区二区三区**美女毛片| 巨大荫蒂视频欧美另类大| 在线亚洲欧美视频| 韩国在线一区| 性猛交ⅹ×××乱大交| 日韩精品一区二区三区中文精品| 精品国模一区二区三区欧美| 国产精品露出视频| 久久久综合视频| a级片在线免费观看| 欧美一区二区三区图| 2020国产成人综合网| 在线电影福利片| 国产精品自拍网| 久久精品免视看| 欧美无毛视频| 中文字幕av免费专区久久| 亚洲成人精品电影在线观看| 一级女性全黄久久生活片免费| 欧美性生活一级| 在线观看欧美激情| 欧美精品粉嫩高潮一区二区| 日韩国产一区二区三区| www.xxx黄| 欧美专区福利在线| 国产精品每日更新| 琪琪久久久久日韩精品| 九色porny91| 欧美日韩第一视频| 久久久久久久免费视频了| 成人免费黄色| 人妻久久久一区二区三区| 亚洲精选中文字幕| 久久精品在线| 日韩伦理在线电影| 亚洲电影一二三区| 亚洲精品综合精品自拍| 色狮一区二区三区四区视频| 亚洲欧美日韩在线综合| 日本成人在线一区| videoxxxx另类日本极品| 亚洲精品国精品久久99热| 国产精品迅雷| 国产精品久久久久久久久久免费| 日韩天天综合| 日本一区视频在线观看免费| 亚洲午夜私人影院| 韩国精品一区| 久久riav二区三区| 91网站在线看| 亚洲一区二区中文字幕| 91成人免费在线观看| 日本一区二区三区免费观看| 国产精品视频久久| gogo大胆日本视频一区| 免费亚色电影在线观看| 亚洲欧美www| 一二三区精品| 无码人妻少妇伦在线电影| 国产99久久久精品| 99精品老司机免费视频| 91高清视频免费| 亚洲黄色毛片| 天堂av中文在线资源库| 国产精品久久国产精品99gif| 久久久久久网| 男同在线观看| 久久成人免费视频| 精品国产91久久久久久老师| 人人鲁人人莫人人爱精品| 久久久久久久久网| 亚洲成年人影院在线| 天堂一区二区在线| 中文在线一二区| 黄色99视频| 亚洲视频自拍偷拍| 成人涩涩免费视频| 国产日韩一区二区三区在线| 青青草原av在线| 成人看片app| 只有这里有精品| 成人av中文| 欧美亚洲视频在线观看| 久久视频免费在线播放| 亚洲精品久久久久久久久| 色综合一区二区三区| 久久久久久久久久久久久女国产乱| 欧美三级免费| 影视一区二区三区| 精品欧美日韩精品| 爱高潮www亚洲精品| 国产免费播放一区二区| av在线最新| 国产午夜精品久久久久免费视| 宅男深夜国产| 在线视频你懂| 色大18成网站www在线观看| 中文字幕有码在线观看| 超级碰碰不卡在线视频| 黄色aa久久| youjizz欧美| 亚洲精品二区三区| 久久动漫亚洲| 99精品视频一区二区| 亚洲精品五月天| 91国产丝袜在线播放| 欧美一卡二卡三卡| 亚洲精品国产精品久久清纯直播| 日韩在线视频国产| 日本久久久久亚洲中字幕| 国产欧美日韩在线播放| 艳母动漫在线观看| 国产主播在线资源| 18网站在线观看| 一区二区亚洲视频| 日韩视频在线一区二区三区 | 国产精品专区h在线观看| 日韩精品极品视频在线观看免费| 国产日韩一区二区在线| 黄色直播在线| 成人片免费看| 永久91嫩草亚洲精品人人| 国产a级毛片一区| 欧美中文字幕一二三区视频| 少妇av一区二区三区| 亚洲一区亚洲二区| 日本成人中文字幕在线| h网站视频在线观看| 开心激情综合| 成人免费av资源| 欧美性受xxxx黑人xyx| 欧美激情视频一区二区| 黄频视频在线观看| yw在线观看| 亚洲激情中文| 一区二区三区在线免费观看| 日韩中文字幕久久| 亚洲美女搞黄| h片在线观看网站| 欧美日韩视频| 精品福利樱桃av导航| 欧美国产日韩一区二区| av电影一区二区三区| av免费看在线| 影音先锋久久久| 欧美系列在线观看| 豆国产97在线|