ShardingSphere-JDBC水平分库分表
ShardingSphere-JDBC水平分库分表非常简单,只需要添加ShardingSphere-JDBC依赖并进行配置即可
1 | <!-- sharding-jdbc 分库分表 --> |
在分布式系统中,服务间依赖可能因网络延迟、资源耗尽等原因出现故障。Hystrix 通过隔离策略限制故障影响范围,防止单个依赖拖垮整个系统。其核心隔离策略有两种:线程隔离(THREAD) 和信号量隔离(SEMAPHORE),适用于不同场景,各有优劣。
隔离的本质是限制依赖服务对系统资源(线程、CPU 等)的占用,避免 “一个依赖故障导致全局崩溃”。具体目标包括:
线程隔离是 Hystrix 的默认策略,通过为每个依赖服务分配独立线程池实现隔离。调用依赖服务的逻辑在独立线程中执行,与调用方线程(如 Tomcat 的工作线程)完全分离。
在实际开发中,项目通常需要在本地、开发、测试、生产等多环境中部署,而不同环境的配置(如数据库地址、端口、依赖版本)往往存在差异。Maven 提供了 profile 机制来管理多环境配置,支持灵活的激活方式,确保在不同环境下的构建一致性。本文将详细介绍 Maven 环境配置的实现与最佳实践。
profile 是 Maven 中用于区分环境配置的机制,可在不同环境下启用不同的属性、依赖、插件或构建规则。每个 profile 通过唯一 id 标识,可包含以下内容:
profileActive=dev)。Maven 支持在两个位置配置 profile:项目的 pom.xml 和 全局的 settings.xml,两者适用场景不同。
pom.xml 中配置(项目级)适合项目专属的环境配置(如项目特有的数据库地址、端口),配置直接位于项目 pom.xml 的 <profiles> 标签中。
示例:区分本地、开发、测试、生产环境:
Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景
属于客户端
连接、增量和可插拔是 Apache ShardingSphere 的核心概念。
连接:通过对数据库协议、SQL 方言以及数据库存储的灵活适配,快速的连接应用与多模式的异构数据库增量:获取数据库的访问流量,并提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服务质量分析、可观察性)等透明化增量功能可插拔:项目采用微内核 + 3 层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展,开发者能够像使用积木一样定制属于自己的独特系统