偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為了學(xué)習(xí)分庫分表,我把 Cobar 源碼抄了一遍

數(shù)據(jù)庫 其他數(shù)據(jù)庫
Cobar 開源后,我迫不及待的的去下載部署包,配置兩個(gè)分庫同樣一張表,在兩個(gè)庫分別手工插入 1 條記錄,然后通過 Navicat 連接 Cobar 暴露的端口,竟然發(fā)現(xiàn)數(shù)據(jù)表顯示兩條數(shù)據(jù) 。

十幾年前,互聯(lián)網(wǎng)產(chǎn)業(yè)蓬勃發(fā)展,相比傳統(tǒng) IT 企業(yè),互聯(lián)網(wǎng)應(yīng)用每天會(huì)產(chǎn)生海量的數(shù)據(jù)。

如何存儲(chǔ)和分析這些數(shù)據(jù)成為了當(dāng)時(shí)技術(shù)圈的痛點(diǎn),彼時(shí),分庫分表解決方案應(yīng)運(yùn)而生。

當(dāng)時(shí)最流行的 Java 技術(shù)論壇是 javaeye ,有位淘寶的技術(shù)人員分享了一篇分庫分表的文章 ,這篇文章,我反復(fù)看了幾十遍,想從中吸取更多的營養(yǎng),但基于我孱弱的技術(shù)能力,總是感覺隔靴搔癢。

直到 2012年  Cobar 開源了 ,我的困惑才慢慢消解了。

一、Cobar 開源了

Cobar 是由 Alibaba 開源的 MySQL 分布式處理中間件,它可以在分布式的環(huán)境下看上去像傳統(tǒng)數(shù)據(jù)庫一樣提供海量數(shù)據(jù)服務(wù)。

Cobar 開源后,我迫不及待的的去下載部署包,配置兩個(gè)分庫同樣一張表,在兩個(gè)庫分別手工插入 1 條記錄,然后通過 Navicat 連接 Cobar 暴露的端口,竟然發(fā)現(xiàn)數(shù)據(jù)表顯示兩條數(shù)據(jù) 。

我覺得很神奇,也有點(diǎn)不可思議,像魔法一樣。

雖然我極度渴望探索 Cobar 的原理 ,   但互聯(lián)網(wǎng)上關(guān)于 Cobar 的文章其實(shí)并不多 ,而且我認(rèn)識(shí)的同事朋友也對(duì)分庫分表同樣不熟悉,我想到了世界上最笨的方法:將 Cobar 源碼抄寫一次,邊抄邊理解,直到可以將程序跑起來。

于是,我建了一個(gè)新的 maven 項(xiàng)目,一點(diǎn)點(diǎn)去抄。

圖片圖片

最開始是模仿 Cobar 的包的結(jié)構(gòu),接著是網(wǎng)絡(luò)通訊設(shè)計(jì),最后是 SQL 解析 。

網(wǎng)絡(luò)通訊模塊跑通了,但當(dāng)我抄到  SQL 解析模塊時(shí),因?yàn)椴焕斫庠?,抄起來?shí)在太費(fèi)勁了,轟轟烈烈的抄源碼運(yùn)動(dòng)戛然而止,花費(fèi)了接近三個(gè)月的時(shí)間。

二、抄源碼的收獲

雖然那時(shí)我并沒有完全理解 Cobar 的實(shí)現(xiàn)機(jī)制,但收獲還是很大的。

1.網(wǎng)絡(luò)編程

第一次接觸到 Reactor 模式,NIOAcceptor 用于處理前端請(qǐng)求,NIOConnector 則用于管理后端的連接,NIOProcessor 用于管理多線程事件處理,NIOReactor 則用于完成底層的事件驅(qū)動(dòng)機(jī)制。

Reactor 模式Reactor 模式

我接觸到 Netty  之后,才想到 Cobar 的網(wǎng)絡(luò)通訊層可以更加優(yōu)雅點(diǎn) 。事實(shí)上 ,MyCat 就是重點(diǎn)優(yōu)化了后端網(wǎng)絡(luò)通訊層。

2.緩存池

第一次知道原來可以在網(wǎng)絡(luò)通訊里,封裝統(tǒng)一管理 NIO 的 Buffer 。

圖片圖片

3.打包技巧

Cobar 這種 maven 打包方式,目錄結(jié)構(gòu)如下:

圖片圖片

我自己寫項(xiàng)目都會(huì)參考這種 maven 打包方式,因?yàn)檫@種方式相比原來 tomcat webapp 部署包的方式更加優(yōu)雅。

4.學(xué)習(xí) sharding-jdbc

當(dāng)我對(duì)于分庫分表 Proxy 的設(shè)計(jì)有了初步認(rèn)識(shí)之后,再來學(xué)習(xí)當(dāng)當(dāng)開源的 sharding-jdbc 時(shí)就輕松很多了。

三、開源分庫分表示例項(xiàng)目

其實(shí),我對(duì)于分庫分表技術(shù)的執(zhí)念,更多在在于我強(qiáng)烈的渴望:當(dāng)遇到需要分庫分表的場(chǎng)景,我有足夠的能力去解決這個(gè)問題。

今年 3月份,我開源了一個(gè)分庫分表示例項(xiàng)目。

圖片圖片

https://github.com/makemyownlife/shardingsphere-jdbc-demo

這個(gè)項(xiàng)目的初衷是:幫助 Java 同學(xué)們快速入門分庫分表,但又不止于分庫分表 。

1. Grpc  服務(wù)端 ID 生成器示例

圖片圖片

圖片圖片

2.shardingsphere jdbc 4.X/5.X  分庫分表例子

項(xiàng)目提供了兩個(gè)模塊,分別使用 jdbc 4.X  和 jdbc 5.X 兩個(gè)版本。

圖片圖片

同時(shí),有的同學(xué)想使用原生 API 實(shí)現(xiàn)分庫分表,每個(gè)模塊里都準(zhǔn)備了原生 API 使用的例子 ,方便同學(xué)們調(diào)試。

圖片圖片

網(wǎng)上有很多 shardingsphere jdbc 5.X 的例子,但很多使用方式并不標(biāo)準(zhǔn),勇哥結(jié)合官網(wǎng)文檔,并對(duì)比網(wǎng)上很多例子,花了很多天才梳理好。

3. antlr 學(xué)習(xí)例子

shardingsphere 基于 antlr4 設(shè)計(jì)了新一代的 SQL 解析引擎,勇哥單獨(dú)抽出一個(gè)模塊用來演示:

圖片圖片

antlr 學(xué)習(xí)模塊會(huì)逐步完善更多的例子,比如簡單的查詢 SQL 解析、JSON 格式解析等。

shardingsphere-jdbc-demo 項(xiàng)目還在不斷的進(jìn)化中,后面還要添加擴(kuò)容相關(guān)的知識(shí)點(diǎn),比如 canal、datax  ,希望能幫助大家 !

責(zé)任編輯:武曉燕 來源: 勇哥Java實(shí)戰(zhàn)
相關(guān)推薦

2020-12-29 09:23:40

分庫分表訂單

2023-09-12 07:31:45

HashMap線程

2021-10-25 09:16:27

MySQL分庫分表

2021-03-11 07:14:01

Epoll原理線程

2021-03-04 08:06:13

Java代理機(jī)制

2024-08-07 10:34:46

2023-03-28 08:58:47

分庫分表TiDB

2025-02-17 10:30:01

2022-01-27 08:31:20

一致性哈希

2021-08-12 10:36:18

order byMySQL數(shù)據(jù)庫

2019-12-17 09:29:02

數(shù)據(jù)庫架構(gòu)分庫分表

2023-01-10 19:47:47

Redis原理多線程

2017-12-26 14:17:24

潤乾報(bào)表

2023-08-14 07:49:42

AI訓(xùn)練

2019-09-09 08:28:48

互聯(lián)網(wǎng)數(shù)據(jù)磁盤

2015-07-17 09:59:18

2021-06-15 07:15:15

Oracle底層explain

2022-01-17 20:59:37

開發(fā)group by思路

2020-07-30 17:59:34

分庫分表SQL數(shù)據(jù)庫

2020-06-24 09:00:43

分庫分表MySQL
點(diǎn)贊
收藏

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