分布式數(shù)據(jù)庫由數(shù)據(jù)存儲和數(shù)據(jù)訪問構(gòu)成:數(shù)據(jù)存儲基于開源關(guān)系型數(shù)據(jù)庫MariaDB改造,提供高可靠的數(shù)據(jù)存儲能力。數(shù)據(jù)訪問基于開源數(shù)據(jù)庫中間件Cobar改造,屏蔽數(shù)據(jù)庫分庫分表帶來的訪問難題。這里所指的分布式數(shù)據(jù)庫由統(tǒng)一數(shù)據(jù)訪問層(TeleUDAL)及數(shù)據(jù)高可用(TeleDB)兩部分組成。統(tǒng)一數(shù)據(jù)訪問層(TeleUDAL):借鑒多種分布式數(shù)據(jù)庫訪問模式,基于MySQL開源協(xié)議,采用數(shù)據(jù)庫代理方式,形成分布式數(shù)據(jù)庫中間件解決方案,解決分布式系統(tǒng)數(shù)據(jù)庫分庫分表帶來的數(shù)據(jù)透明訪問難題。數(shù)據(jù)高可用(TeleDB):基于開源MariaDB數(shù)據(jù)庫,自主研發(fā),為客戶提供高性能、高可用的數(shù)據(jù)庫集群系統(tǒng)。
udal特性
1、無限擴(kuò)容
自動水平拆分
支持多種分片算法
支持字符串,數(shù)字,日期等多種拆分緯度
業(yè)務(wù)不中斷平滑擴(kuò)容
2、彈性擴(kuò)展
應(yīng)用透明讀寫分離,應(yīng)用零代碼改動
平滑擴(kuò)展,業(yè)務(wù)不中斷
3、性能卓越
分布式服務(wù)架構(gòu),對比單機(jī)數(shù)據(jù)庫服務(wù)能力線性提升
優(yōu)化SQl解析引擎,效率成倍提升
支持切片索引,減少廣播查詢
全局表同步功能,分布式JOIN效率成倍提升
單機(jī)平均性能:~11w TPS(4路8核,512GB內(nèi)存,萬兆網(wǎng)卡)
4、簡單易用
全面兼容MYSQL協(xié)議、語法
兼容大部分MYSQL客戶端
提供WEB控制臺,數(shù)據(jù)庫操作簡單
一鍵實(shí)現(xiàn)數(shù)據(jù)庫擴(kuò)容(分片數(shù)不變)
業(yè)務(wù)零代碼改動,實(shí)現(xiàn)讀寫分離
5、安全穩(wěn)定
完善的數(shù)據(jù)層主備容災(zāi)方案,保證數(shù)據(jù)安全
分布式架構(gòu)無服務(wù)單點(diǎn),服務(wù)穩(wěn)定
完善的運(yùn)維管控報(bào)警體系
6、低成本
使用廉價(jià)X86主機(jī)
使用廉價(jià)存儲
開源軟件+自研結(jié)合
從上面的架構(gòu)圖可看出,UDAL主要的構(gòu)成如下:
LVS:為DBProxy提供服務(wù)注冊發(fā)現(xiàn)及負(fù)載均衡功能,應(yīng)用發(fā)送的請求通過LVS均衡分布到各個(gè)DBProxy上。
DBProxy:UDAL的核心組件,是一個(gè)實(shí)現(xiàn)了mysql協(xié)議的Sever進(jìn)程,前端用戶可以把DBProxy看成數(shù)據(jù)庫代理,可用mysql客戶端工具或命令行方式直接訪問,其后端以mysql原生協(xié)議與多個(gè)mysql數(shù)據(jù)庫進(jìn)行通信,也可以用jdbc協(xié)議與大多數(shù)主流數(shù)據(jù)庫服務(wù)器通信,DBProxy的核心功能是分庫分表并對應(yīng)用層屏蔽分庫分表帶來的訪問難題。
GiServer:切片索引服務(wù)進(jìn)程,是為了提升非分片鍵查詢(select語句)時(shí)的效率(避免廣播查詢)而開發(fā)的,與數(shù)據(jù)庫的索引沒有任何關(guān)系,是完全不同的兩個(gè)概念,GiServer是切片索引數(shù)據(jù)的生產(chǎn)者,真正的消費(fèi)者是DBProxy進(jìn)程,假設(shè)客戶表是以cust_id進(jìn)行分表的,但應(yīng)用需要通過客戶身份證來查詢客戶信息,如果沒有切片索引,則DBProxy會將查詢語句廣播到所有節(jié)點(diǎn)執(zhí)行,接收到執(zhí)行結(jié)果進(jìn)行匯聚后再返回給應(yīng)用,如果建立了切片索引,則DBProxy首先會根據(jù)身份證號碼從切片索引中查詢到對應(yīng)的cust_id,再根據(jù)分片算法定位到cust_id對應(yīng)的分片,這樣就避免了廣播查詢。
配套功能:包括功能測試、性能測試、持續(xù)集成、監(jiān)控、發(fā)布、配置、運(yùn)維等功能,這些配套功能都將通過管理平臺(UDAL_ADMIN)進(jìn)行管理。
外部組件:UDAL依賴的外部組件主要有zookeeper及分布式緩存,zookeeper用于存放DBProxy、GiServer的配置信息及全局序列數(shù)據(jù),分布式緩存用于存放切片索引數(shù)據(jù)。
1、讀寫分離
對于sql進(jìn)行類型判定,如果判定為讀取操作,則按照用戶設(shè)置的讀權(quán)重進(jìn)行sql路由,到主實(shí)例或者到只讀上進(jìn)行sql操作。
dbproxy使用以下兩種方式開啟讀寫分離功能:
1、配置dbproxybalance參數(shù).
2、在select語句前增加/*!HINT({"balance":"?"})*/注解
屬性配置
在管理平臺依次點(diǎn)擊以下按鈕即可打開相應(yīng)數(shù)據(jù)庫的讀寫分離屬性配置窗口:
即可打開設(shè)置屬性窗口設(shè)置balance參數(shù):
balance參數(shù)可選值為01 2,分別對應(yīng)頁面上”關(guān)閉”,“讀語句發(fā)往讀庫”,“讀語句隨機(jī)發(fā)往讀庫和寫庫”個(gè)選項(xiàng):
balance= 0 不開啟讀寫分離,所有語句發(fā)往寫節(jié)點(diǎn).
balance= 1 開啟讀寫分離,所有事務(wù)外(autocommit=1)的select語句發(fā)往讀節(jié)點(diǎn);所有事務(wù)內(nèi)(autocommit=0)的語句發(fā)往寫節(jié)點(diǎn).
balance= 2 開啟讀寫分離,所有事務(wù)外(autocommit=1)的select語句隨機(jī)發(fā)往讀節(jié)點(diǎn)或?qū)懝?jié)點(diǎn);所有事務(wù)內(nèi)(autocommit=0)的語句發(fā)往寫節(jié)點(diǎn).
/* !HINT({"balance":"?"})*/ 語句
使用/*!HINT({"balance":"?"})*/注解可以強(qiáng)制指定select語句按照指定規(guī)則進(jìn)行讀寫分離,balance有三種取值方式,與dbproxy的balance屬性類似:
/*!HINT({"balance":"0"})*/ 強(qiáng)制select語句發(fā)往寫節(jié)點(diǎn)
/*!HINT({"balance":"1"})*/ 強(qiáng)制select語句發(fā)往讀節(jié)點(diǎn)
/*!HINT({"balance":"2"})*/ 強(qiáng)制select語句隨機(jī)發(fā)往數(shù)據(jù)庫讀節(jié)點(diǎn)或?qū)懝?jié)點(diǎn)
注意
insert,update, delete語句在任何情況下都將發(fā)往寫節(jié)點(diǎn),所以讀寫分離實(shí)際只針對select語句。
/*!HINT({"balance":"?"})*/的讀寫分離規(guī)則優(yōu)先級高于配置balance屬性。
配置balance屬性進(jìn)行讀寫分離需結(jié)合autocommit=1使用,而/*!HINT({"balance":"?"})*/方式不需要。
2、水平拆分
分片鍵(拆分字段)
3、數(shù)據(jù)分布
UDAL中的數(shù)據(jù)是按照拆分字段值,加上特定的算法進(jìn)行計(jì)算,根據(jù)結(jié)果存儲數(shù)據(jù)到對應(yīng)分片。
4、Sql路由
當(dāng)用戶SQL到UDAL時(shí),UDAL會理解整個(gè)SQL含義,然后按照拆分字段的值和執(zhí)行策略將SQL路由到對應(yīng)分區(qū)進(jìn)行執(zhí)行。
5、數(shù)據(jù)匯聚
如果一個(gè)SQL對應(yīng)多個(gè)分片數(shù)據(jù)執(zhí)行,UDAL會將各個(gè)分片返回的數(shù)據(jù)按照原始SQL語義進(jìn)行合并。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130162.html
摘要:作者鐘離,酷家樂客戶端負(fù)責(zé)人原文地址酷家樂客戶端下載地址文章背景在酷家樂客戶端在改版成功后,我們積累了許多的寶貴的經(jīng)驗(yàn)和最佳實(shí)踐。用戶在電腦上安裝客戶端,實(shí)際上會將客戶端代碼文件持久儲存到本機(jī)。通常我們會在軟件啟動時(shí)檢查更新。 作者:鐘離,酷家樂PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-autoupdate/酷家樂客戶端:下載地址...
摘要:作者鐘離,酷家樂客戶端負(fù)責(zé)人原文地址酷家樂客戶端下載地址文章背景在酷家樂客戶端在改版成功后,我們積累了許多的寶貴的經(jīng)驗(yàn)和最佳實(shí)踐。用戶在電腦上安裝客戶端,實(shí)際上會將客戶端代碼文件持久儲存到本機(jī)。通常我們會在軟件啟動時(shí)檢查更新。 作者:鐘離,酷家樂PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-autoupdate/酷家樂客戶端:下載地址...
摘要:來這里看看的工程師如何進(jìn)行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動持續(xù)集成和測試相關(guān)實(shí)踐,用工具化自動化社會化測試來解決遇到的問題,將打包發(fā)布環(huán)節(jié)自動化。這期的持續(xù)集成實(shí)踐分享就到這里。 我們??吹皆S多團(tuán)隊(duì)和開發(fā)者分享他們的持續(xù)集成實(shí)踐經(jīng)驗(yàn),本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項(xiàng)目搭建持續(xù)集成的實(shí)踐,以及一些國內(nèi)外公司的內(nèi)部持續(xù)集成...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20