如何写一个数据库中间件以及需要准备的知识储备
生活随笔
收集整理的這篇文章主要介紹了
如何写一个数据库中间件以及需要准备的知识储备
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
什么是數(shù)據(jù)庫中間件
1.透明化使用方無感知,或者盡量少感知。通過現(xiàn)有的接入端接入已有服務(wù) 2.增量服務(wù)不改變數(shù)據(jù)庫本身功能的前提下,提供額外的功能與服務(wù)一個(gè)原則不破壞原有邏輯,并且讓用戶基于之前的經(jīng)驗(yàn)可以快速上手接入端協(xié)議的選擇
1.編程語言接口(jdbc) 2.數(shù)據(jù)庫協(xié)議(數(shù)據(jù)庫本身的協(xié)議,不同的數(shù)據(jù)庫有不同的協(xié)議,而且有的公開,有的還不公開) 數(shù)據(jù)庫 任意 單一 異構(gòu)語言 單一 任意 連接數(shù) 高(代理) 低 性能 損耗低 損耗略高 無中心化 是 否 靜態(tài)入口 無 有(可獨(dú)立部署)確立目標(biāo)
1.數(shù)據(jù)分片屏蔽數(shù)據(jù)庫分片,使用無感知,應(yīng)該和不分片的使用一樣 2.分布式治理配置動(dòng)態(tài)化,監(jiān)控,調(diào)用鏈,熔斷,失效轉(zhuǎn)移(開著飛機(jī)換引擎),彈性伸縮 3.分布式事務(wù)跨片訪問較大時(shí),物理存儲(chǔ)確實(shí)可能跨庫訪問兩階段事務(wù),柔性事務(wù) 4.安全管控SQL審計(jì)(避免慢sql等),數(shù)據(jù)脫敏(脫敏和非脫敏自動(dòng)轉(zhuǎn)換),權(quán)限控制數(shù)據(jù)庫中間件和NewSQL的對(duì)比
1.數(shù)據(jù)庫中間件 2.NewSQL 設(shè)計(jì)理念 穩(wěn)定+增量 顛覆+兼容(架構(gòu)顛覆,外形兼容) 存儲(chǔ)引擎 沿用關(guān)系型數(shù)據(jù)庫 自研(大部分K-V為主) 分布式能力 增量 原生 可信賴度 高 待驗(yàn)證(需要時(shí)間檢測(cè),數(shù)據(jù)庫一般十年才能說穩(wěn)定) HTAP(混用) 較難 較易(數(shù)據(jù)庫中間件可能會(huì)有重復(fù)的問題,比如數(shù)據(jù)庫分片,需要解析sql,中間件才能知道去哪片執(zhí)行, 但真正的數(shù)據(jù)庫層,也會(huì)解析sql,才能知道怎么執(zhí)行sql,所以解析sql會(huì)有重復(fù),不可避免)ShardingSphere簡(jiǎn)單介紹(本文也是聽開源者張亮同學(xué)的視頻的總結(jié))
核心功能數(shù)據(jù)分片,分布式事務(wù),數(shù)據(jù)庫治理彈性伸縮,管控界面 接入端Sharding-JDBC,Sharding-Proxy,Sharding-Sidecar 核心功能+接入端=(HTAP,云原生,零侵入)接入端技術(shù)儲(chǔ)備
編程語言接口JDBC接口各種數(shù)據(jù)庫連接池各種ORM框架和Spring相關(guān)知識(shí)(Spring自定義命名空間) 數(shù)據(jù)庫協(xié)議MySQL & PostgreSQL協(xié)議IO Netty并發(fā) & 多線程數(shù)據(jù)分片技術(shù)儲(chǔ)備
SQL解析(Lexer,Parser,AST) SQL路由(去哪個(gè)片) SQL改寫(到了某個(gè)片) SQL執(zhí)行(多線程) 結(jié)果歸并(排序算法)分布式事務(wù)技術(shù)儲(chǔ)備
兩階段事務(wù)ACID事務(wù)要素XA協(xié)議以及他的各種實(shí)現(xiàn)Percolator事務(wù)模型(時(shí)間戳+兩階段事務(wù)做成強(qiáng)一致,來自谷歌論文) 柔性事務(wù)BASE和CAP理論TCC和Saga自動(dòng)補(bǔ)償,反向SQL數(shù)據(jù)快照,版本控制數(shù)據(jù)庫治理技術(shù)儲(chǔ)備
配置中心:注冊(cè)中心相關(guān),包括Zookeeper、Etcd等 服務(wù)治理:服務(wù)化相關(guān)知識(shí)可以復(fù)用,如服務(wù)發(fā)現(xiàn),熔斷,限流,負(fù)載均衡,失效轉(zhuǎn)移等 追蹤監(jiān)控:分布式調(diào)用鏈追蹤,OpenTracing協(xié)議等,數(shù)據(jù)庫以及應(yīng)用狀態(tài)相關(guān)指標(biāo)收集和暴露基礎(chǔ)技術(shù)儲(chǔ)備
性能調(diào)優(yōu)JVM GC調(diào)優(yōu)內(nèi)存泄露,資源泄露排查 質(zhì)量保證單元測(cè)試,整合測(cè)試,壓力測(cè)試,疲勞測(cè)試,性能測(cè)試體系的搭建寫中間件理念:隨時(shí)準(zhǔn)備面向開源
1.保持視野的敏銳了解技術(shù)社區(qū)現(xiàn)狀,優(yōu)先考慮復(fù)用和融入,而非顛覆保證能被人快速上手 2.保持設(shè)計(jì)解耦技術(shù)模塊與業(yè)務(wù)模塊和環(huán)境相關(guān),在設(shè)計(jì)時(shí)即保證解耦 3.隨時(shí)保持代碼精煉面向意圖編程,代碼隨時(shí)準(zhǔn)備開放面向社區(qū),并具備高可讀性總結(jié)
以上是生活随笔為你收集整理的如何写一个数据库中间件以及需要准备的知识储备的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis单线程为什么还快的个人解释
- 下一篇: mysql 集群分区_mysql 集群与