ShardingSphere-JDBC水平分库分表
ShardingSphere-JDBC水平分库分表非常简单,只需要添加ShardingSphere-JDBC依赖并进行配置即可
1 | <!-- sharding-jdbc 分库分表 --> |
Hystrix通过隔离限制依赖的并发量和阻塞扩散,Hystrix的隔离策略有两种:
线程隔离(THREAD) 使用该策略,HystrixCommand将会在单独的线程上执行,并发请求受线程池中的线程数的限制,默认使用该策略,因为该策略有一个除网络超时外的额外保护层
执行依赖调用的线程与请求线程(tomcat、jetty等服务器线程)分离,通过线程池的大小可以控制并发量,当线程池饱和时可以提前拒绝服务,防止依赖问题扩散
信号量隔离(SEMAPHORE) 使用该策略,HystrixCommand将会在请求线程上执行,开销相对较小,并发请求收到信号量个数的限制,其一般仅适用于非网络调用的隔离,只有当调用负载非常高时(每秒调用几百上千次),才会使用信号量隔离,因为负载过高的情况下使用THREAD开销会比较大
线程隔离主要是指线程池隔离,把请求分类交给不同的线程池处理。当一种业务请求处理发生问题时,不会将故障扩散到其他线程池,从而保证其他服务可用
1 | // 服务分组 配置全局唯一标识服务分组的名称,在进行监控时,相同分组的服务会聚合在一起 |
信号量隔离限制总的并发数,服务使用主线程进行同步调用,没有线程池,如果只是想限制某个服务的总并发调用量可以使用信号量来实现
1 | HystrixCommandProperties.Setter().withExecutionIsolationStrategy( |
在正常项目中一般都会有多个环境,而不同的环境一些配置和流程是不一样的,可以使用maven来进行环境的区分,来取不同的配置,不过spring也是支持环境区分的,我一般还是习惯于用spring boot的环境配置
maven支持在settings.xml中配置,也支持在pom.xml中配置
1 | <!--MAVEN打包选择运行环境--> |
Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景
属于客户端
连接、增量和可插拔是 Apache ShardingSphere 的核心概念。
连接
:通过对数据库协议、SQL 方言以及数据库存储的灵活适配,快速的连接应用与多模式的异构数据库增量
:获取数据库的访问流量,并提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服务质量分析、可观察性)等透明化增量功能可插拔
:项目采用微内核 + 3 层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展,开发者能够像使用积木一样定制属于自己的独特系统