Docker 部署 ShardingSphere-Proxy 數據庫中間件

文章目錄

  • Github
  • 官網
  • 文檔
  • ShardingSphere-Proxy
    • mysql-connector-java 驅動下載
    • conf 配置
    • global.yaml
    • database-sharding.yaml
    • database-readwrite-splitting.yaml
    • docker
    • docker-compose.yml

Apache ShardingSphere 是一款分布式的數據庫生態系統, 可以將任意數據庫轉換為分布式數據庫,并通過數據分片、彈性伸縮、加密等能力對原有數據庫進行增強。

特性定義
數據分片數據分片,是應對海量數據存儲與計算的有效手段。ShardingSphere 基于底層數據庫提供分布式數據庫解決方案,可以水平擴展計算和存儲。
分布式事務事務能力,是保障數據庫完整、安全的關鍵技術,也是數據庫的核心技術。基于 XA 和 BASE 的混合事務引擎,ShardingSphere 提供在獨立數據庫上的分布式事務功能,保證跨數據源的數據安全。
讀寫分離讀寫分離,是應對高壓力業務訪問的手段。基于對 SQL 語義理解及對底層數據庫拓撲感知能力,ShardingSphere 提供靈活的讀寫流量拆分和讀流量負載均衡。
數據遷移數據遷移,是打通數據生態的關鍵能力。ShardingSphere 提供跨數據源的數據遷移能力,并可支持重分片擴展。
聯邦查詢聯邦查詢,是面對復雜數據環境下利用數據的有效手段。ShardingSphere 提供跨數據源的復雜查詢分析能力,實現跨源的數據關聯與聚合。
數據加密數據加密,是保證數據安全的基本手段。ShardingSphere 提供完整、透明、安全、低成本的數據加密解決方案。
影子庫在全鏈路壓測場景下,ShardingSphere 支持不同工作負載下的數據隔離,避免測試數據污染生產環境。
  • ShardingSphere-JDBC: 定位為輕量級 Java 框架,在 Java 的 JDBC 層提供的額外服務。

  • ShardingSphere-Proxy: 的定位為透明化的數據庫代理,理論上支持任何使用 MySQL、PostgreSQL、openGauss 協議的客戶端操作數據,對異構語言、運維場景更友好。

ShardingSphere-JDBCShardingSphere-Proxy
數據庫任意MySQL/PostgreSQL
連接消耗數
異構語言僅 Java任意
性能損耗低損耗略高
無中心化
靜態入口

Apache ShardingSphere 設計哲學為 Database Plus,旨在構建異構數據庫上層的標準和生態。 它關注如何充分合理地利用數據庫的計算和存儲能力,而并非實現一個全新的數據庫。 它站在數據庫的上層視角,關注它們之間的協作多于數據庫自身。

在這里插入圖片描述
在這里插入圖片描述

Github

  • https://github.com/apache/shardingsphere

官網

  • https://shardingsphere.apache.org/index_zh.html

文檔

  • https://shardingsphere.apache.org/document/current/cn/overview/

ShardingSphere-Proxy

  • https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/startup/docker/
  • https://hub.docker.com/r/apache/shardingsphere-proxy
docker pull apache/shardingsphere-proxy:latest
  • 創建縮主機目錄
cd /home
mkdir shardingsphere && cd shardingsphere
mkdir ext-lib

mysql-connector-java 驅動下載

  • https://repo.maven.apache.org/maven2/mysql/mysql-connector-java/

注: 將下載的 mysql-connector-java-5.1.9.jar 包復制到縮主機 /home/shardingsphere/ext-lib 目錄下,注意自己當前 數據庫版本 選擇相應的驅動包。

conf 配置

  • 拷貝容器 conf 到縮主機
# 創建容器
docker run -d --name shardingsphere --entrypoint=bash apache/shardingsphere-proxy
# 復制配置
docker cp shardingsphere:/opt/shardingsphere-proxy/conf /home/shardingsphere
# 刪除容器
docker rm shardingsphere

在這里插入圖片描述

  • database-encrypt.yaml: 定義數據庫的加密策略和配置。可能包括對特定表或列的數據加密算法、加密密鑰管理等配置。

  • database-readwrite-splitting.yaml: 定義數據庫讀寫分離的配置。讀寫分離可以根據不同的規則將讀操作和寫操作分發到不同的數據庫節點或者數據庫副本上,以提升數據庫的讀寫性能和負載均衡能力。

  • global.yaml: 定義全局的配置信息,例如全局的數據源配置、全局的規則配置等。這些配置通常會影響整個 ShardingSphere 的運行行為和規則解析。

  • database-hbase.yaml: 配置和管理連接到 HBase 數據庫的相關設置。這可能包括連接信息、表映射、列簇定義等。

  • database-shadow.yaml: 配置數據庫影子復制(Shadow Replica)的相關設置。影子復制是一種技術,用于在生產環境中實時復制數據庫的操作,以便在測試或分析時使用真實的數據副本而不影響生產系統。

  • database-mask.yaml: 配置數據脫敏(Data Masking)策略。數據脫敏用于隱藏或掩蓋數據庫中敏感信息,確保只有經過授權的用戶可以查看特定數據的明文。

  • database-sharding.yaml: 配置數據庫分片(Sharding)的策略和規則。數據庫分片是一種將數據庫表按照某種規則分布到多個數據庫節點中的技術,以提升數據庫的擴展性和性能。

global.yaml

#mode:
#  type: Cluster
#  repository:
#    type: ZooKeeper
#    props:
#      namespace: governance_ds
#      server-lists: localhost:2181
#      retryIntervalMilliseconds: 500
#      timeToLiveSeconds: 60
#      maxRetries: 3
#      operationTimeoutMilliseconds: 500authority:users:- user: root@%password: '4NuMDwIzp05BdKp7Bdmf'- user: shardingpassword: shardingprivilege:type: ALL_PERMITTED# 分布式事務
#transaction:
#  defaultType: XA
#  providerType: Atomikos# SQL 解析
#sqlParser:
#  sqlStatementCache:
#    initialCapacity: 2000
#    maximumSize: 65535
#  parseTreeCache:
#    initialCapacity: 128
#    maximumSize: 1024logging:loggers:- loggerName: ShardingSphere-SQLadditivity: truelevel: INFOprops:enable: false# 聯邦查詢
sqlFederation:sqlFederationEnabled: falseexecutionPlanCache:initialCapacity: 2000maximumSize: 65535props:# 系統日志輸出級別,支持 DEBUG、INFO、WARN 和 ERROR,默認級別是 INFO。system-log-level: INFO# 一次查詢請求在每個數據庫實例中所能使用的最大連接數。max-connections-size-per-query: 1# 用于設置任務處理線程池的大小。每個 ShardingSphereDataSource 使用一個獨立的線程池,同一個 JVM 的不同數據源不共享線程池。kernel-executor-size: 16  # Infinite by default.# 在 ShardingSphere-Proxy 中設置傳輸數據條數的 IO 刷新閾值。proxy-frontend-flush-threshold: 128  # The default value is 128.#  是否在日志中打印 SQL。打印 SQL 可以幫助開發者快速定位系統問題。日志內容包含:邏輯 SQL,真實 SQL 和 SQL 解析結果。如果開啟配置,日志將使用 Topic ShardingSphere-SQL,日志級別是 INFO。sql-show: true#  在程序啟動和更新時,是否檢查分片元數據的結構一致性。check-table-metadata-enabled: false# Proxy 后端與數據庫交互的每次獲取數據行數(使用游標的情況下)。數值增大可能會增加 ShardingSphere Proxy 的內存使用。默認值為 -1,代表設置為 JDBC 驅動的最小值。proxy-backend-query-fetch-size: -1# Proxy 前端 Netty 線程池線程數量,默認值 0 代表使用 Netty 默認值。proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.# 允許連接 Proxy 的最大客戶端數量,默認值 0 代表不限制。proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.# Proxy 前端協議類型,支持 MySQL,PostgreSQL 和 openGaussproxy-frontend-database-protocol-type: MySQL
#  proxy-default-port: 3307 # Proxy default port.
#  proxy-netty-backlog: 1024 # Proxy netty backlog.
#  cdc-server-port: 33071 # CDC server port
#  proxy-frontend-ssl-enabled: false
#  proxy-frontend-ssl-cipher: ''
#  proxy-frontend-ssl-version: TLSv1.2,TLSv1.3

database-sharding.yaml

databaseName: sharding_dbdataSources:ds_0:url: jdbc:mysql://192.168.0.100:3306/demo_0?useSSL=falseusername: test1password: 'te123456'connectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50minPoolSize: 1ds_1:url: jdbc:mysql://192.168.0.101:3306/demo_1?useSSL=falseusername: test2password: 'te123456'connectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50minPoolSize: 1#rules:
#- !SHARDING
#  tables:
#    t_order:
#      actualDataNodes: ds_${0..1}.t_order_${0..1}
...

database-readwrite-splitting.yaml

databaseName: readwrite_splitting_dbdataSources:write_ds:url: jdbc:mysql://192.168.0.100:3306/demo_0?useSSL=falseusername: test1password: 'te123456'connectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50minPoolSize: 1read_ds_0:url: jdbc:mysql://192.168.0.101:3306/demo_1?useSSL=falseusername: test2password: 'te123456'connectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50minPoolSize: 1

docker

docker run -d --name shardingsphere \
-v /home/shardingsphere/conf:/opt/shardingsphere-proxy/conf \
-v /home/shardingsphere/ext-lib:/opt/shardingsphere-proxy/ext-lib \
-e JVM_OPTS="-Djava.awt.headless=true" \
-e CGROUP_MEM_OPTS="-XX:InitialRAMPercentage=80.0 -XX:MaxRAMPercentage=80.0 -XX:MinRAMPercentage=80.0" \
-e PORT=3308 \
-p 3308:3308 \
apache/shardingsphere-proxy:latest

docker-compose.yml

services:shardingsphere:image: apache/shardingsphere-proxy:latestcontainer_name: shardingsphererestart: alwaysports:- 3308:3308volumes:- /etc/localtime:/etc/localtime- /home/shardingsphere/conf:/opt/shardingsphere-proxy/conf- /home/shardingsphere/ext-lib:/opt/shardingsphere-proxy/ext-libenvironment:PORT: 3308JVM_OPTS: "-Djava.awt.headless=true"CGROUP_MEM_OPTS: "-XX:InitialRAMPercentage=80.0 -XX:MaxRAMPercentage=80.0 -XX:MinRAMPercentage=80.0"
docker-compose up -d shardingsphere

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44762.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44762.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44762.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【qt】TCP客戶端信息的接受和發送

當有信息時的槽函數關聯 跟服務端收到信息一樣,當可以讀一行的時候,就從套接字讀一行. 發送信息也是和服務端如出一轍,通過write(). 運行結果:

java EnumSet 介紹

EnumSet 是 Java Collections Framework 中專門為枚舉類型設計的高效集合實現。與其他集合類相比,EnumSet 提供了許多優點,如高效性、類型安全和易用性。它只能包含單個枚舉類型的值,并且在內部使用位向量實現,因而在空間和時間上都非常高效。 EnumSet 的特點 高效性:Enu…

Spring MVC 中的文件上傳 和 文件下載

Spring MVC 中的文件上傳 和 文件下載 文章目錄 Spring MVC 中的文件上傳 和 文件下載1. Spring MVC 中的文件上傳2. Spring MVC 中的文件下載3. 總結:4. 最后: 1. Spring MVC 中的文件上傳 文件上傳是:瀏覽器端向服務器發送文件&#xff0c…

C 語言結構體

由于近期項目需求,需使用到大量的指針與結構體,為更好的完成項目,故對結構體與指針的內容進行回顧,同時撰寫本博客,方便后續查閱。 本博客涉及的結構體知識有: 1.0:結構體的創建和使用 2.0: typedef 關…

解鎖音樂密碼,人工智能創作動人歌詞

在音樂的神秘世界里,每一段旋律都像是一把等待開啟的密碼鎖,隱藏著無盡的情感與故事。而如今,人工智能正以其獨特的智慧和創造力,幫助我們解鎖這些音樂密碼,創作出動人的歌詞。 “妙筆生詞智能寫歌詞軟件(…

Provider(1)- 什么是AudioBufferProvider

什么是AudioBufferProvider? 顧名思義,Audio音頻數據緩沖提供,就是提供音頻數據的緩沖類,而且這個AudioBufferProvider派生出許多子類,每個子類有不同的用途,至關重要;那它在Android哪個地方使…

訪問 Postman OAuth 2.0 授權的最佳實踐

OAuth 2.0 代表了 web 安全協議的發展,便于在多個平臺上進行授權服務,同時避免暴露用戶憑據。它提供了一種安全的方式,讓用戶可以授權應用程序訪問服務。 在 Postman 中開始使用 OAuth 2.0 Postman 是一個流行的API客戶端,支持 …

亞馬遜店鋪注冊

**步驟一:準備注冊相關資料** 在注冊之前,請準備以下資料: 1.公司營業執照照片(清晰完整的拍照上傳) 2.法人身份證正反面照片(清晰完整的拍照上傳) 3.雙幣付款信用卡(VISA&#xff0…

[PaddlePaddle飛槳] PaddleSpeech-自動語音識別-小模型部署

PaddleSpeech的GitHub項目地址 環境要求&#xff1a; gcc > 4.8.5 paddlepaddle < 2.5.1 python > 3.8 OS support: Linux(recommend), Windows, Mac OSXpip下載指令&#xff1a; python -m pip install paddlepaddle-gpu2.5.1 -i https://pypi.tuna.tsinghua.edu.c…

探索4D毫米波雷達和攝像頭在自動駕駛中的潛力

隨著自動駕駛技術的快速發展&#xff0c;關于各種傳感器的必要性&#xff0c;尤其是LiDAR&#xff08;激光雷達&#xff09;與毫米波雷達結合攝像頭的作用&#xff0c;激發了激烈的討論。在這篇博客中&#xff0c;我們將探討4D毫米波雷達和攝像頭的組合是否可能成為自動駕駛車輛…

將vue項目整合到springboot項目中并在阿里云上運行

第一步&#xff0c;使用springboot中的thymeleaf模板引擎 導入依賴 <!-- thymeleaf 模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 在r…

聊聊接入Arbitrum的正確姿勢

本文首發于公眾號&#xff1a;Keegan小鋼 前言 我們知道&#xff0c;目前最主流的 Ethereum Layer2 方案中&#xff0c;主要有 Optimistic Rollup 和 ZK Rollup 兩大類。而 Optimistic Rollup 的實現方案中&#xff0c;則是 Optimism 和 Arbitrum 最受關注。而我們最近接入了 …

Java套紅:指定位置合并文檔-NiceXWPFDocument

需求&#xff1a;做個公文系統&#xff0c;需要將正文文檔在某個節點點擊套紅按鈕&#xff0c;實現文檔套紅 試了很多方法&#xff0c;大多數網上能查到但是實際代碼不能找到關鍵方法&#xff0c;可能是跟包的版本有關系&#xff0c;下面記錄能用的這個。 一&#xff1a;添加依…

redis-cli 連接Redis

Redis-cli介紹 redis-cli 是原生 Redis 自帶的命令行工具&#xff0c;您可以在云主機或本地設備上通過 redis-cli 連接 Redis 數據庫&#xff0c;進行數據管理。 redis-cli 客戶端的使用方法&#xff0c;請參考官方文檔。 連接命令 redis-cli -h <redis_instance_address…

一個極簡的 Vue 示例

https://andi.cn/page/621516.html

【qt】客戶端連接到服務器

獲取到IP地址和端口號. 通過connectToHost() 來進行連接. 對于客戶端來講,只需要socket即可. 客戶端連接服務端只需要使用套接字(Socket)來進行通信。客戶端通過創建一個套接字來連接服務端&#xff0c;然后可以通過套接字發送和接收數據。套接字提供了一種簡單而靈活的方式來…

接口安全配置

問題點&#xff1a; 有員工在工位在某個接口下鏈接一個集線器&#xff0c;從而擴展上網接口&#xff0c;這種行為在某些公司是被禁止的&#xff0c;那么網絡管理員如何控制呢&#xff1f;可以配置接口安全來限制鏈接的數量&#xff0c;切被加入安全的mac地址不會老化&#xff…

JS實現:統計字符出現頻率/計算文字在文本中的出現次數

要實現這個功能&#xff0c;JavaScript 一個非常強大的方法&#xff0c;那就是reduce() reduce() 它用于將數組的所有元素減少到一個單一的值。這個值可以是任何類型&#xff0c;包括但不限于數字、字符串、對象或數組。 reduce() 方法接收一個回調函數作為參數&#xff0c;這個…

win10 docker-compose搭建ELK日志收集

elk的威名大家都知道&#xff0c;以前前司有專門的人維護&#xff0c;現在換了環境&#xff0c;實在不想上服務器看&#xff0c;所以就摸索下自己搭建&#xff0c;由于現場服務器是需要類似向日葵那樣連接&#xff0c;我還是把日志弄回來&#xff0c;自己本地filebeat上傳到es中…

ESP32和ESP8266的WIFI的136個問題與答案

ESP32和ESP8266的WIFI的136個問題與答案 ESP32和ESP8266 WIFI相關問題與答案&#xff0c;具有一定的參考價值。ESP32-S3模塊 1. ESP32 和 ESP8266 是否支持中文 SSID&#xff1f; ESP32 和 ESP8266 均支持中文 SSID&#xff0c;但需要使用相應的庫和設置。需要注意的是&#…