Docker 部署 ShardingSphere-Proxy 数据库中间件

文章目录

  • Github
  • 官网
  • 文档
  • ShardingSphere-Proxy
    • mysql-connector-java 驱动下载
    • conf 配置
    • global.yaml
    • database-sharding.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-8.0.25.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}
...

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.rhkb.cn/news/373724.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。 本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,…

20240711 每日AI必读资讯

🎨Runway Gen-3 Alpha 详细使用教程以及提示词指南大全 - 7月9日,著名生成式AI平台Runway在官网公布了,最新发布的文生视频模型Gen-3 Alpha的文本提示教程。 - 从技术层面来说,输入的文本提示会被转换成“向量”,这些…

滑动变阻器在实际应用中需要注意哪些安全事项?

滑动变阻器在实际应用中,为了确保其正常运作及保护电路安全,需要注意以下安全事项: 一、了解并遵守规格参数 最大电阻值和允许通过的最大电流值:使用前,必须清楚滑动变阻器的最大电阻值和允许通过的最大电流值&#x…

基于SAM的零样本相似性评价方法

文章目录 介绍方法SAM编码器相似性指标代码复现介绍 图像转换具有广泛的应用,如风格转换和模态转换,通常是生成具有高度真实和忠实的图像。这些问题仍然很困难,特别是在保存语义结构很重要的时候。传统的图像级相似性度量的用途有限,因为图像的语义是高级的,并且不受对原…

什么样的开放式耳机好用舒服?南卡、倍思、Oladance高人气质量绝佳产品力荐!

​开放式耳机在如今社会中已经迅速成为大家购买耳机的新趋势,深受喜欢听歌和热爱运动的人群欢迎。当大家谈到佩戴的稳固性时,开放式耳机都会收到一致好评。对于热爱运动的人士而言,高品质的开放式耳机无疑是理想之选。特别是在近年来的一些骑…

jitsi 使用JWT验证用户身份

前言 Jitsi Meet是一个很棒的会议系统,但是默认他运行所有人创建会议,这样在某种程度上,我们会觉得他不安全,下面我们就来介绍下使用JWT来验证用户身份 方案 卸载旧的lua依赖性sudo apt-get purge lua5.1 liblua5.1-0 liblua5.1-dev luarocks添加ubuntu的依赖源,有则不需…

内容协商源码解析与自定义 MessageConverter

目录 内容协商 1、引入xml依赖 2、postman分别测试返回json和xml 3、开启浏览器参数方式内容协商功能 4、内容协商原理 5、自定义 MessageConverter 综上 内容协商 根据客户端接收能力不同,返回不同媒体类型的数据。 若客户端无法解析服务端返回的内容&#…

Vatee万腾平台:创新科技,驱动未来

在科技日新月异的今天,每一个创新的火花都可能成为推动社会进步的重要力量。Vatee万腾平台,作为科技创新领域的佼佼者,正以其卓越的技术实力、前瞻性的战略眼光和不懈的探索精神,驱动着未来的车轮滚滚向前。 Vatee万腾平台深知&am…

剖析自闭症孩子玩手的独特之处

自闭症孩子玩手的行为常常具有一些较为独特的特点。 重复性是一个显著的特征。他们可能会以一种几乎相同的方式、节奏和频率反复地摆弄自己的手,例如不停地握拳、张开,或者持续地旋转手腕。 动作的单调性也是常见的。玩手的方式可能较为单一,…

【正点原子i.MX93开发板试用连载体验】简单的音频分类

本文最早发表于电子发烧友论坛: 今天测试的内容是进行简单的音频分类。我们要想进行语音控制,就需要构建和训练一个基本的自动语音识别 (ASR) 模型来识别不同的单词。如果想了解这方面的知识可以参考TensorFlow的官方文档:简单的音频识别&…

矢量绘图设计Sketch中文 Sketch直装安装包

Sketch是一款专为UI设计师和UX专家打造的矢量图形设计软件,以其简洁的界面、强大的功能和高效的协作能力而闻名。Sketch支持快速创建高质量的UI界面、图标、图形和插画,其矢量绘图工具让设计细节更加精准。同时,Sketch内置丰富的插件和组件库…

1-认识网络爬虫

1.什么是网络爬虫 ​ 网络爬虫(Web Crawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序,这个程序可以代替真人…

【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!

视频演示 【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!! 1,安装docker方法: #!/bin/shdistribution$(…

深入了解代理IP常见协议:区别与选择

代理服务器在网络使用中扮演着重要的角色,是您设备和互联网之间的中间层。它不仅可以增强网络访问的安全性和隐私保护,还可以提供许多灵活的应用。使用代理时,不同的协议类型对数据交换具有不同的规则和特征。常见的代理协议包括HTTP代理、HT…

通过Umijs从0到1搭建一个React项目

有一阵时间没写react了,今天通过umi搭建一个demo项目复习一下react;umi是一个可扩展的企业级前端应用框架,在react市场中还是比较火的一个框架。 Umi官方文档:Umi 介绍 (umijs.org) 一、构建项目。 1、安装包管理工具。 官方推…

七人共赢拼团模式的深度剖析与互助精神重塑

在当今电商的浩瀚星海中,七人共赢拼团模式以其创新的合作框架与激励体系,正引领着消费与商业的新潮流。这一模式不仅优化了购物体验,更深刻诠释了互助共赢的核心理念。以下,我们将从直推奖励、自动补齐机制及团队荣耀奖三个方面&a…

LLM应用:行业大模型

大语言模型正在朝着两个方向发展,一个是以ChatGPT为代表的通用大模型,另一个则是行业大模型(或称为“专业大模型”)。如果大模型的演化分为阴阳两面,通用大模型更像是阳面,受众更广、更to C端,以…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-57长短期记忆网络(LSTM)

57长短期记忆网络(LSTM) 1.LSTM原理 LSTM是专为解决标准RNN的长时依赖问题而设计的。标准RNN在训练过程中,随着时间步的增加,梯度可能会消失或爆炸,导致模型难以学习和记忆长时间间隔的信息。LSTM通过引入一组称为门…

大型企业如何整合集成全域数据、解决数据孤岛难题?

今天,我们说一下大型企业全域数据的整合集成问题。 通常,中大型企业和集团公司拥有大量多源异构的数据存储资源,如数据仓库、数据湖以及分布于分子公司和混合多云平台的业务系统,通过传统物理集中统一数据资产管理的方式难度高&a…

Springboot 设置个性化banner

在 Spring Boot 中自定义 banner 的方法有几种,可以通过以下步骤来实现: 1、使用文本文件作为 banner 在 src/main/resources 目录下创建一个名为 banner.txt 的文件。 编辑这个文件,输入想要显示的文本。确保文本中包含换行符和空格…