自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為了學習分庫分表,我把 Cobar 源碼抄了一遍

數(shù)據(jù)庫 其他數(shù)據(jù)庫
Cobar 開源后,我迫不及待的的去下載部署包,配置兩個分庫同樣一張表,在兩個庫分別手工插入 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)應用每天會產(chǎn)生海量的數(shù)據(jù)。

如何存儲和分析這些數(shù)據(jù)成為了當時技術圈的痛點,彼時,分庫分表解決方案應運而生。

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

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

一、Cobar 開源了

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

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

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

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

于是,我建了一個新的 maven 項目,一點點去抄。

圖片圖片

最開始是模仿 Cobar 的包的結構,接著是網(wǎng)絡通訊設計,最后是 SQL 解析 。

網(wǎng)絡通訊模塊跑通了,但當我抄到  SQL 解析模塊時,因為不理解原理,抄起來實在太費勁了,轟轟烈烈的抄源碼運動戛然而止,花費了接近三個月的時間。

二、抄源碼的收獲

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

1.網(wǎng)絡編程

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

Reactor 模式Reactor 模式

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

2.緩存池

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

圖片圖片

3.打包技巧

Cobar 這種 maven 打包方式,目錄結構如下:

圖片圖片

我自己寫項目都會參考這種 maven 打包方式,因為這種方式相比原來 tomcat webapp 部署包的方式更加優(yōu)雅。

4.學習 sharding-jdbc

當我對于分庫分表 Proxy 的設計有了初步認識之后,再來學習當當開源的 sharding-jdbc 時就輕松很多了。

三、開源分庫分表示例項目

其實,我對于分庫分表技術的執(zhí)念,更多在在于我強烈的渴望:當遇到需要分庫分表的場景,我有足夠的能力去解決這個問題。

今年 3月份,我開源了一個分庫分表示例項目。

圖片圖片

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

這個項目的初衷是:幫助 Java 同學們快速入門分庫分表,但又不止于分庫分表 。

1. Grpc  服務端 ID 生成器示例

圖片圖片

圖片圖片

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

項目提供了兩個模塊,分別使用 jdbc 4.X  和 jdbc 5.X 兩個版本。

圖片圖片

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

圖片圖片

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

3. antlr 學習例子

shardingsphere 基于 antlr4 設計了新一代的 SQL 解析引擎,勇哥單獨抽出一個模塊用來演示:

圖片圖片

antlr 學習模塊會逐步完善更多的例子,比如簡單的查詢 SQL 解析、JSON 格式解析等。

shardingsphere-jdbc-demo 項目還在不斷的進化中,后面還要添加擴容相關的知識點,比如 canal、datax  ,希望能幫助大家 !

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

2020-12-29 09:23:40

分庫分表訂單

2021-10-25 09:16:27

MySQL分庫分表

2023-09-12 07:31:45

HashMap線程

2021-03-11 07:14:01

Epoll原理線程

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-03-04 08:06:13

Java代理機制

2019-12-17 09:29:02

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

2021-08-12 10:36:18

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

2023-08-14 07:49:42

AI訓練

2017-12-26 14:17:24

潤乾報表

2023-01-10 19:47:47

Redis原理多線程

2019-09-09 08:28:48

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

2020-07-30 17:59:34

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

2015-07-17 09:59:18

2020-06-24 09:00:43

分庫分表MySQL

2024-03-12 10:19:25

分庫分表擴容

2021-06-15 07:15:15

Oracle底層explain
點贊
收藏

51CTO技術棧公眾號