成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

十幾年前,互聯網產業蓬勃發展,相比傳統 IT 企業,互聯網應用每天會產生海量的數據。

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

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

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

一、Cobar 開源了

Cobar 是由 Alibaba 開源的 MySQL 分布式處理中間件,它可以在分布式的環境下看上去像傳統數據庫一樣提供海量數據服務。

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

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

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

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

圖片圖片

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

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

二、抄源碼的收獲

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

1.網絡編程

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

Reactor 模式Reactor 模式

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

2.緩存池

第一次知道原來可以在網絡通訊里,封裝統一管理 NIO 的 Buffer 。

圖片圖片

3.打包技巧

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

圖片圖片

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

4.學習 sharding-jdbc

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

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

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

今年 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 實現分庫分表,每個模塊里都準備了原生 API 使用的例子 ,方便同學們調試。

圖片圖片

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

3. antlr 學習例子

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

圖片圖片

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

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

責任編輯:武曉燕 來源: 勇哥Java實戰
相關推薦

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代理機制

2024-08-07 10:34:46

2025-02-17 10:30:01

2023-03-28 08:58:47

分庫分表TiDB

2022-01-27 08:31:20

一致性哈希

2019-12-17 09:29:02

數據庫架構分庫分表

2021-08-12 10:36:18

order byMySQL數據庫

2017-12-26 14:17:24

潤乾報表

2023-01-10 19:47:47

Redis原理多線程

2023-08-14 07:49:42

AI訓練

2019-09-09 08:28:48

互聯網數據磁盤

2015-07-17 09:59:18

2021-06-15 07:15:15

Oracle底層explain

2022-01-17 20:59:37

開發group by思路

2020-07-30 17:59:34

分庫分表SQL數據庫

2020-06-24 09:00:43

分庫分表MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩一区二区在线观看 | 毛片av免费在线观看 | 亚洲精选一区 | 国产一级成人 | 99爱在线观看 | 午夜精品福利视频 | 亚洲欧美一区二区三区国产精品 | 欧美精品一区三区 | 日韩视频91 | 国产一区二区三区 | 婷婷五月色综合香五月 | 国产人成在线观看 | 国产91av视频在线观看 | 久久久久综合 | 久久激情视频 | 久草精品视频 | 亚洲视频免费观看 | 欧美精品三区 | 成人免费小视频 | 国内久久 | 在线小视频 | 青青草国产在线观看 | 欧美精品一区二区三区一线天视频 | 日韩精品一区二区三区久久 | 91佛爷在线观看 | 成人黄色三级毛片 | 99久久久无码国产精品 | 欧美日韩精品一区二区三区蜜桃 | 精品国产欧美一区二区三区成人 | 久久亚洲一区二区三区四区 | 国产精品久久久久久久粉嫩 | 国产做爰 | 亚洲精品一区二区久 | 国产在线中文字幕 | 女同av亚洲女人天堂 | 日韩欧美成人精品 | 国产成人免费在线观看 | 亚洲一区二区免费 | 一区视频在线 | 成人在线一区二区 | 亚洲精品福利在线 |