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

十五張圖帶你快速入門 Shardingsphere-Proxy

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
ShardingSphere-Proxy 定位為透明化的數(shù)據(jù)庫(kù)代理端,通過(guò)實(shí)現(xiàn)數(shù)據(jù)庫(kù)二進(jìn)制協(xié)議,對(duì)異構(gòu)語(yǔ)言提供支持。目前提供 MySQL 和 PostgreSQL 協(xié)議,透明化數(shù)據(jù)庫(kù)操作,對(duì) DBA 更加友好。

Apache ShardingSphere 是一款分布式的數(shù)據(jù)庫(kù)生態(tài)系統(tǒng),它包含兩大產(chǎn)品:

  • ShardingSphere-Proxy
  • ShardingSphere-JDBC

很多同學(xué)對(duì)于 ShardingSphere-JDBC 已經(jīng)能非常熟悉的使用了,但關(guān)于網(wǎng)上關(guān)于 ShardingSphere-Proxy 5.5 的使用教程卻非常少。

所以這篇文章,筆者嘗試帶大家快速入門  ShardingSphere-Proxy 5.5 ,理解它的基本原理以及實(shí)戰(zhàn)流程。

圖片圖片

1 理解 Proxy 模式

ShardingSphere-Proxy 定位為透明化的數(shù)據(jù)庫(kù)代理端,通過(guò)實(shí)現(xiàn)數(shù)據(jù)庫(kù)二進(jìn)制協(xié)議,對(duì)異構(gòu)語(yǔ)言提供支持。目前提供 MySQL 和 PostgreSQL 協(xié)議,透明化數(shù)據(jù)庫(kù)操作,對(duì) DBA 更加友好。

  • 向應(yīng)用程序完全透明,可直接當(dāng)做 MySQL/PostgreSQL 使用;
  • 兼容 MariaDB 等基于 MySQL 協(xié)議的數(shù)據(jù)庫(kù),以及 openGauss 等基于 PostgreSQL 協(xié)議的數(shù)據(jù)庫(kù);
  • 適用于任何兼容 MySQL/PostgreSQL 協(xié)議的的客戶端,如:MySQL Command Client, MySQL Workbench, Navicat 等。

圖片圖片

代理層介于應(yīng)用程序與數(shù)據(jù)庫(kù)間,每次請(qǐng)求都需要做一次轉(zhuǎn)發(fā),請(qǐng)求會(huì)存在額外的時(shí)延。

這種方式對(duì)于應(yīng)用非常友好,應(yīng)用基本零改動(dòng),和語(yǔ)言無(wú)關(guān),可以通過(guò)連接共享減少連接數(shù)消耗。

2 Proxy 模式 VS  JDBC 模式

當(dāng)我們?cè)?Proxy 和 JDBC 兩種模式選擇時(shí),可以參考下表對(duì)照:


JDBC

Proxy

數(shù)據(jù)庫(kù)

任意

MySQL/PostgreSQL

連接消耗數(shù)


異構(gòu)語(yǔ)言

僅Java

任意

性能

損耗低

損耗略高

無(wú)中心化


靜態(tài)入口

無(wú)


ShardingSphere-Proxy 提供靜態(tài)入口以及異構(gòu)語(yǔ)言的支持,獨(dú)立于應(yīng)用程序部署,適用于 OLAP 應(yīng)用以及對(duì)分片數(shù)據(jù)庫(kù)進(jìn)行管理和運(yùn)維的場(chǎng)景。

ShardingSphere-JDBC 采用無(wú)中心化架構(gòu),與應(yīng)用程序共享資源,適用于 Java 開(kāi)發(fā)的高性能的輕量級(jí) OLTP 應(yīng)用;

在業(yè)務(wù)相對(duì)復(fù)雜的場(chǎng)景里,可以采用混合部署的模式。

圖片圖片

通過(guò)混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注冊(cè)中心統(tǒng)一配置分片策略,能夠靈活的搭建適用于各種場(chǎng)景的應(yīng)用系統(tǒng),使得架構(gòu)師更加自由地調(diào)整適合于當(dāng)前業(yè)務(wù)的最佳系統(tǒng)架構(gòu)。

3 快速啟動(dòng)

ShardingSphere-Proxy 的啟動(dòng)方式有三種:二進(jìn)制包、Docker 和 Helm,可以選擇單機(jī)部署或集群部署。

本文將介紹如何通過(guò)單機(jī)二進(jìn)制包方式啟動(dòng) ShardingSphere-Proxy 版本號(hào):v 5.5.0 。

  • 下載

訪問(wèn) 下載頁(yè)面,獲取 ShardingSphere-Proxy 二進(jìn)制安裝包, 解壓縮的文件目錄如下:

圖片圖片

  • 將 MySQL 的 JDBC 驅(qū)動(dòng)復(fù)制到  ext-lib 目錄

下載驅(qū)動(dòng) mysql-connector-java-5.1.49.jar 或者 mysql-connector-java-8.0.11.jar 放入 lib 包。

圖片圖片

  • 進(jìn)入 conf 目錄 , 內(nèi)容如下圖:

圖片圖片

  • 模式配置 global.yaml

因?yàn)槟J(rèn)文件內(nèi)容被注釋掉了,所以去掉注釋,如下圖:

圖片圖片

  • 驗(yàn)證啟動(dòng) proxy 服務(wù)

在 Linux 操作系統(tǒng)上,運(yùn)行 bin/start.sh;在 Windows 操作系統(tǒng)上,運(yùn)行 bin/start.bat,以啟動(dòng) ShardingSphere-Proxy。

圖片圖片

然后使用 MySQL 終端命令連接 ShardingSphere-Proxy 服務(wù)端:

# 將 {xx} 替換為實(shí)際參數(shù)
mysql -h {ip} -u {username} -p{password} -P 3307
# 示例命令
mysql -h 127.0.0.1 -u root -proot -P 3307

圖片圖片

4 配置訂單分片策略

現(xiàn)在我們需要展示新的訂單庫(kù)(8個(gè)分片),需要修改分片策略 。

ShardingSphere-Proxy 支持配置多個(gè)邏輯數(shù)據(jù)源,每個(gè)以database- 前綴命名的 YAML 配置文件,即為一個(gè)邏輯數(shù)據(jù)源。

圖片圖片

因?yàn)槲覀兪亲远x分片算法,shardingsphere 內(nèi)置算法并不滿足,所以我們必須先編寫自定義算法類。

圖片圖片

  • 實(shí)現(xiàn) ShardingAlgorithm 接口定義的算法實(shí)現(xiàn)類 HashSlotAlgorithm ;
  • 在項(xiàng)目 resources 目錄下創(chuàng)建 META-INF/services 目錄 ;
  • 在 META-INF/services 目錄下新建文件 org.apache.shardingsphere.sharding.spi.ShardingAlgorithm ;
  • 將實(shí)現(xiàn)類的全限定類名寫入至文件 org.apache.shardingsphere.sharding.spi.ShardingAlgorithm ;
  • 將上述 Java 文件打包成 jar 包,  將上述 jar 包拷貝至 ext-lib 目錄;

圖片圖片

  • 配置分片文件 database-myorder.yaml , 該文件用來(lái)定義訂單的 4 個(gè)分片的路由策略;

圖片圖片

最后,我們啟動(dòng) Proxy 服務(wù) , 我們發(fā)現(xiàn)通過(guò) MySQL  Client 查詢數(shù)據(jù)庫(kù)時(shí),出現(xiàn)了我們配置的訂單庫(kù) :myorder ,以及訂單庫(kù)里的三個(gè)邏輯表 。如下圖:

圖片圖片

4 Navicat 連接 shardingsphere proxy

通過(guò) shardingjdbc5-spring 模塊,插入多條記錄到 4 個(gè)分片里,可以通過(guò) navicat 連接 proxy 查看效果:

圖片圖片

然后我們模擬在 myorder 邏輯數(shù)據(jù)庫(kù)中新增一條訂單記錄,執(zhí)行成功并且查詢頁(yè)正常的情況下,發(fā)現(xiàn)分片 ds0 中存儲(chǔ)了剛插入的那條數(shù)據(jù)。

圖片圖片


筆者將 proxy 算法模塊也添加到了分庫(kù)分表實(shí)戰(zhàn)項(xiàng)目 shardingsphere-jdbc-demo 里,有興趣的同學(xué),可以看看這個(gè)項(xiàng)目。

圖片圖片

Github 地址:https://github.com/makemyownlife/shardingsphere-jdbc-demo

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

2022-04-07 18:49:56

項(xiàng)目場(chǎng)景數(shù)據(jù)庫(kù)

2023-04-11 08:35:22

RocketMQ云原生

2023-09-19 09:21:20

2020-09-23 11:23:25

推薦系統(tǒng)廣告

2021-11-29 07:47:56

RocketMQ分布式消息

2020-06-28 07:39:44

Kafka分布式消息

2021-09-14 23:05:47

Nginx前端運(yùn)維

2020-11-16 10:50:27

KubernetesIngressLinux

2022-02-28 11:10:42

ZGCG1收集器

2021-05-07 17:11:19

負(fù)載均衡運(yùn)維服務(wù)

2021-01-20 08:34:37

HBaseNoSQL數(shù)據(jù)庫(kù)

2022-07-11 11:06:11

RocketMQ函數(shù).消費(fèi)端

2024-07-03 08:28:44

HWKafkaLEO

2020-12-14 10:15:03

負(fù)載均衡器Linux服務(wù)器

2021-04-25 10:45:59

Docker架構(gòu)Job

2020-09-12 16:45:49

Git

2022-06-11 18:15:26

KubernetesDockerLinux

2022-06-13 11:05:35

RocketMQ消費(fèi)者線程

2022-07-04 11:06:02

RocketMQ事務(wù)消息實(shí)現(xiàn)

2021-05-18 06:55:07

Java AQS源碼
點(diǎn)贊
收藏

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